美文网首页
移动端页面适配

移动端页面适配

作者: 马儿爱吃草 | 来源:发表于2018-12-25 11:10 被阅读0次

用rem代替px和em

(function(window, document) {
    'use strict';
    //设置rem
    var remcss = {}; 
    (function() {
        var viewportEl = document.querySelector('meta[name="viewport"]'),
        dpr = window.devicePixelRatio || 1,
        maxWidth = 750,
        designWidth = 750,
        content = 'width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no';
        dpr = dpr >= 3 ? 3 : (dpr >= 2 ? 2 : 1);
        remcss.dpr = dpr;
        remcss.maxWidth = maxWidth;
        remcss.designWidth = designWidth;
        remcss.content = content;
        document.documentElement.setAttribute('data-dpr', dpr);
        document.documentElement.setAttribute('max-width', maxWidth);
        if (designWidth) {
            document.documentElement.setAttribute('design-width', designWidth);
            remcss.designWidth = designWidth
        }
        if (viewportEl) {
            viewportEl.setAttribute('content', remcss.content)
        } else {
            viewportEl = document.createElement('meta');
            viewportEl.setAttribute('name', 'viewport');
            viewportEl.setAttribute('content', remcss.content);
            document.head.appendChild(viewportEl)
        }
    })();
    remcss.setFontsize = function() {
        var innerWidth = document.documentElement.getBoundingClientRect().width || window.innerWidth;
        if (remcss.maxWidth && (innerWidth / remcss.dpr > remcss.maxWidth)) {
            innerWidth = remcss.maxWidth * remcss.dpr
        }
        if (!innerWidth) {
            return false
        }
        document.documentElement.style.fontSize = (innerWidth * 100 / remcss.designWidth) + 'px';
        remcss.callback && remcss.callback()
    };
    remcss.setFontsize();
    window.addEventListener('resize',
    function() {
        clearTimeout(remcss.restime);
        remcss.restime = setTimeout(remcss.setFontsize, 100)
    },
    false);
    window.addEventListener('DOMContentLoaded', remcss.setFontsize, false);
    window.remcss = remcss;

    //判断是竖向还是横向
    var initOrientation = function () {
        var updateOrientation = function () {
            var orientation = window.orientation;
            switch (orientation) {
                case 90:
                case -90:
                    orientation = 'landscape';
                    break;
                default:
                    orientation = 'portrait';
                    break;
            }
            document.body.parentNode.setAttribute('class', orientation);
        };
        window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", updateOrientation, false);
        updateOrientation();
    };
    window.addEventListener('DOMContentLoaded', initOrientation, false);
})(window, document);

注意

maxWidth为页面最大宽度

designWidth为设计稿宽度,根据自身设计稿去配置即可

上面配置1rem=100px,就是设计稿里面的100px

相关文章

  • 移动端Web页面适配浅析

    title: 移动端Web页面适配浅析date: 2018-01-31 16:38:01tags: 移动端 适配 ...

  • 解决vue移动端适配问题

    1,先看看网上关于移动端适配讲解 再聊移动端页面适配,rem和vw适配方案! 基础点:rem相对根节点 字体的大小...

  • 记一次前端技术分享(移动端相关概念讲解)

    移动端开发中的相关概念讲解 1、移动端自适配方案 移动端如何根据不同手机尺寸进行页面的适配 rem 自适应和 vw...

  • 移动端如何适配?

    1、使用Flexible实现手淘H5页面的终端适配2、再聊移动端页面的适配3、如何在Vue项目中使用vw实现移动端...

  • 解决vue移动端适配问题

    1,先看看网上关于移动端适配讲解 再聊移动端页面适配,rem和vw适配方案! 基础点:rem相对根节点字体的大小。...

  • 移动端页面适配

    移动端页面适配 rem 与 vw 再看看15年手淘方案:Flexible + rem Flexible 从流行到今...

  • 移动端页面适配

    说起移动端适配可能会有很多适配方案。 最开的适配方案回顾: 1.if(/Android (\d+\.\d+)/.t...

  • 移动端页面适配

    用rem代替px和em 注意 maxWidth为页面最大宽度 designWidth为设计稿宽度,根据自身设计稿去...

  • Vue2.x 中使用vw完成移动端页面适配

    如果你还对使用vw做移动端页面适配不了解,这里推荐大漠老师的两篇文章 再聊移动端页面的适配和如何在Vue项目中使用...

  • CSS新手向的知识点<三>

    关于移动端页面 通常来讲做移动端页面适配一般有三种方式 前端方向:移动页面响应式,用媒体查询(media quer...

网友评论

      本文标题:移动端页面适配

      本文链接:https://www.haomeiwen.com/subject/vfnxlqtx.html