1. 程式人生 > >rem的正確使用姿勢 -- 完美解決H5頁面不同尺寸螢幕的適配問題

rem的正確使用姿勢 -- 完美解決H5頁面不同尺寸螢幕的適配問題

例項程式碼:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>廢土坱行</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style type="text/css">
    * {
        margin: 0;
        padding: 0;
    }
    .downloadBtn {
        width: 12rem;
        height: 3.6rem;
        background: red;
        position: absolute;
        left: 50%;
        top: 29.6rem;
        margin-left: -6rem;
        font-size: 1rem;
    }
    </style>
</head>
<body>
    <div class="content">
        <img class="contentImg" id="contentImg" src="./images/content.png"/>
        <button class="downloadBtn">立即下載</button>
    </div>
    <script>
        function initWidth() {
            document.getElementById("contentImg").style.width = document.documentElement.clientWidth + 'px'
        }
        function initFontSize() {
            const cw = document.documentElement.clientWidth
            // width: 375px -> fontSize:16px
            if (cw == 375) {
                document.documentElement.style.fontSize = '16px'
            } else {
                document.documentElement.style.fontSize = cw / 375 * 16 + 'px'
            }
        }
        initWidth()
        initFontSize()
        window.onresize = () => {
            initWidth()
            initFontSize()
        }
    </script>
</body>
</html>

 

思路簡介:

1、首先,介面佈局的尺寸採用rem單位。

2、然後,通過設定根節點(html)的 font-size 的 px 值 來影響 rem 的實際大小。

3、最後,通過 js 來實時控制font-size 的大小,等比例變換即可。

 

效果演示:

標準尺寸下(iphone6):

其它裝置上(比如iphone5):

注:可以看到我這個“立即下載”的按鈕位置基本上是可以和img對上的。