zoukankan      html  css  js  c++  java
  • 前端多端、多分辨率适配之rem自适应

         rem是CSS3里的一种尺寸单位,根据根页面(html)标签的字号匹配大小。比如:<html>的字号font-size:20px,那么CSS设定1rem的页面元素实际上会显示20px的大小,即1rem=<html>标签上设置的字号大小,那么1.2rem就会显示为24px的大小。与em的用法有些类似,但rem只认<html>标签的字号。

         rem的强大之处是不仅可以作为字号的尺寸单位,还可以用于其他地方,这项规则同样适用width、margin、padding及radius等可以设置大小尺寸的地方。这样,如果整个页面的容器元素尺寸都是以rem为单位,我们只需要根据当前浏览器分辨率动态的设置根目录的字号尺寸,页面就可以自动地去适应分辨率了。

         但,html的font-size应该如何设置呢,在不同的分辨率或者屏幕大小下,我们应该将该值设置为多少呢?解决这个问题,首先是需要一个参照的,这个参照就是设计稿,一般而言,设计师在输出设计稿时会用px做尺寸单位,那么同时需要说明,该设计稿是在多大的屏幕下的设计稿,且该屏幕下标准的文字大小是多少。以最常见的640像素宽度的移动端页面设计稿为例:稿子上有一个12px的标准文字,该文字是在该像素宽度屏幕下的标准通用文字大小,这时,我们可以把页面里<html>标签的字号设置成font-size:120px,那么12px的文字字号是1rem,然后根据页面当前的宽度动态地缩放这个根目录的字号,就可以达到文字和容器自适应的目的了。

         我们可以使用一小段javascript来实现该功能:

    function(){
        var html = document.documentElement;
        function setFont() {
            var cliWidth = html.clientWidth;
            html.style.fontSize = 12*(cliWidth/640)+'px';
        }
        setFont();
        window.onresize = function(){
            setFont();
        }
    })();

    注意:应避免将基础像素设置为小于12px的值,因为在小分辨率下容易导致页面的rem倍数错乱。

    当完成了这一步,就可以把页面中的所有尺寸都以rem为单位去写,页面中的所有元素就可以根据浏览器分辨率自动地按比例去适应了。

  • 相关阅读:
    26、面向对象设计模式之单例模式——泛型单例
    Unity 汽车碰撞
    makeObjectsPerformSelector对数组中的对象发送消息执行对象中方法
    NSHashTable NSPointerArray
    webrtc 音频一点相关知识
    记一次ios加急上架经历
    iOS 获取当前正在显示的ViewController
    ios表单上传图片或文件
    https适配
    swift block
  • 原文地址:https://www.cnblogs.com/niejunchan/p/12873508.html
Copyright © 2011-2022 走看看