美文网首页Web前端之路程序员工具癖
rem结合css3原生函数, 完成移动端各类屏幕适配

rem结合css3原生函数, 完成移动端各类屏幕适配

作者: zhaoolee | 来源:发表于2019-01-20 20:16 被阅读263次

    相信很多人接触的第一个网页尺寸单位是px, 表示一个像素点的大小

    我们收到的设计师的设计稿也是以px为标准

    但手机的屏幕是大小不一的, 在iPhone8上展示的很好的效果, 在iPhone5s上可能就完全走了样, 为了在不同尺寸的屏幕上,都有很好的展示效果, 我们需要对网页进行缩放

    rem是一个很有意思的单位, 1rem的尺寸等于html的font-size的尺寸, 也就是

    html{
      font-size: 100px;
    }
    

    那么, 1rem就等于100px

    • 我们可以通过屏幕的宽度, 动态改变 html下font-size的大小, 从而实现网页的缩放

    • calc是一个css3自带的函数, 可以实现简单的加减乘除(可以用来取代sass的部分功能)

    • rem与calc结合使用, 就可以用极简单的代码实现,多种屏幕的适配

    效果如图所示


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>如何使用rem</title>
    
        <script>
            // 获取设备像素比(dpr -> devicePixelRatio)
            var dpr = window.devicePixelRatio;
            // 动态设置设备缩放比
            var metaTag=document.createElement('meta');
            metaTag.name = "viewport"
            metaTag.setAttribute('content', 'initial-scale=' + 1/dpr + ', maximum-scale=' + 1/dpr + ', minimum-scale=' + 1/dpr + ', user-scalable=no');
            document.getElementsByTagName('head')[0].appendChild(metaTag);
        </script>
    
        <script>
            // 动态设置html的字体大小(页面宽度为1rem)
            document.addEventListener('DOMContentLoaded', function(e) {
                document.getElementsByTagName('html')[0].style.fontSize = window.innerWidth + 'px';
            }, false);
        </script>
    </head>
    
    <body>
    
        <style>
            body{
                text-align: center;
                margin: 0;
                padding: 0;
                line-height: 0;
                
            }
    
            table{
                width: 100%;
            }
    
            .icon{
                width: calc(196rem / 375);
                margin: calc(100rem / 375) 0 0 0;
            }
            .name{
                margin: calc(30rem / 375) 0 0 0;
                font-size: calc(30rem / 375);
                line-height: calc(30rem / 375);
                color: #64B587;
            }
        </style>
    
        <table>
            <tbody>
                <tr><td><img src="girl.png" class="icon"></img></td></tr>
                <tr><td><p class="name">Yara Barros</p></td></tr>
            </tbody>
        </table>
    
        
    </body>
    </html>
    

    小结:

    rem是一个动态定义的单位, 结合css3自带的calc函数, 能让我们写一套代码, 轻松适配各种尺寸的屏幕, 另外, 写calc函数的时候, 运算符前后一定要留空格哦~

    相关文章

      网友评论

        本文标题:rem结合css3原生函数, 完成移动端各类屏幕适配

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