zoukankan      html  css  js  c++  java
  • vue : rem自适应的应用

    我们知道,rem是一个css单位,指的是HTML根节点的字体大小。

    MDN:css单位

    而我们在用rem布局的时候必然会遇到一个问题:我们需要根据用户的屏幕大小去计算rem。

    以下是代码。

    (在VUE中使用)

    ...
        created() {
            
            // rem 适配
            (function(win) {
                var docEl = win.document.documentElement;
                function refreshRem() {
                    var width = docEl.getBoundingClientRect().width;
                    if (width >= 1920) {
                        // 最大宽度
                        width = 1920;
                    }
                    var rem = width / 19.2;
                    if (rem > 100) {
                        rem = 100;
                    }
                    docEl.style.fontSize = rem + "px";
                    if (width < 1366) {
                        docEl.style.fontSize = 70 + "px";
                    }
                }
                win.addEventListener(
                    "resize",
                    function() {
                        refreshRem();
                    },
                    false
                );
                win.addEventListener(
                    "pageshow",
                    function(e) {
                        if (e.persisted) {
                            refreshRem();
                        }
                    },
                    false
                );
                refreshRem();
            })(window);
            
        },
    ...

    ===

    (在原生项目中使用)

    rem.js

    (function(win) {
        var docEl = win.document.documentElement;
        function refreshRem() {
            var width = docEl.getBoundingClientRect().width;
            if (width >= 1920) {
                // 最大宽度
                width = 1920;
            }
            var rem = width / 19.2;
            if (rem > 100) {
                rem = 100;
            }
            docEl.style.fontSize = rem + "px";
            if (width < 1366) {
                docEl.style.fontSize = 70 + "px";
            }
        }
        win.addEventListener(
            "resize",
            function() {
                refreshRem();
            },
            false
        );
        win.addEventListener(
            "pageshow",
            function(e) {
                if (e.persisted) {
                    refreshRem();
                }
            },
            false
        );
        refreshRem();
    })(window);

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <!-- 引入rem -->
        <script src="./js/rem.js" type="text/javascript"></script>
        <title>...</title>
    </head>
    ...

    以上。

  • 相关阅读:
    模块添加页代码
    模块登录页代码
    列表登录页代码
    不在让你为你写代码头疼的链接页代码
    最新最全产品删除页代码
    网站的产品页后台代码
    Windows修改账户名称和任务管理器中服务对应的用户名称
    nginx处理HTTP header问题
    Maven报错:Missing artifact jdk.tools:jdk.tools:jar:1.6
    linux上传、下载文件rz、sz命令
  • 原文地址:https://www.cnblogs.com/foxcharon/p/10410433.html
Copyright © 2011-2022 走看看