rem适配布局

rem适配布局
 
    rem基础
         rem是一个单位
            rem(root em)是一个相对单位,类似于em,em是父元素字体大小
            不同的是rem的基准是相对于html元素的字体大小
            比如,根元素(html)设置font-size=12px;非根元素设置width:2rem;则换成px表示就是24px;
        rem的优点就是可以通过检测媒体查询来修改html里面的文字大小来改变元素的大小
 
     媒体查询
        媒体查询(Media Query)是CSS3新语法。
            1.使用@media查询,可以针对不同的媒体类型定义不同的样式
            2.@media可以针对不同的屏幕尺寸设置不同的样式
            3.当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面
            4.目前针对很多苹果手机、Android手机,平板等设备都用得到多媒体查询
 
     语法规范
        @media mediatype and not|only (media feature){
            CSS-Code;
        }
         1.用@media开头 注意@符号
         2.mediatype媒体类型
            将不同的终端设备划分成不同的类型,称为媒体类型
                all 用于所有设备
                print 用于打印机和打印预览
                screen 用于电脑屏幕,平板电脑,只能手机等
         3.关键字and not only
            关键字将媒体类型或多个媒体特性链接到一起作为媒体查询的条件
                1.and:可以将多个媒体特性连接到一起,相当于“且”的意思
                2.not:排除某个媒体类型,相当于“非”的意思,可以省略
                3.only:指定某个特定的媒体类型,可以省略
         4.media feature 媒体特性必须有小括号包含
            媒体特性:每种媒体特性都具体各自不同的特性,根据不同媒体类型的媒体特性设置不同的战士风格。我们暂且了解三个。
            注意他们要加小括号包含
                width 定义输出设备中页面可见区域的宽度
                min-width 定义输出设备中页面最小可见区域宽度
                max-width 定义输出设备中页面最大可见区域宽度
 
    引入资源
        当样式比较繁多的时候,我们可以针对不同的媒体使用不同stylesheets
        愿意来,就直接在link中判断设备的尺寸,然后引用不同的css文件。
        <link rel="stylesheet" media="mediatype and|not|only (media feature)" href="index640.css">
        我们媒体查询最好的方法是从小到大
 
     rem适配方案
        我们是配的目标是什么
        怎么去达到这个额目标的
        在实际的开发当中使用
            让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备
            使用媒体查询更具不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化,从而达到等比缩放的适配。
 
     rem实际开发适配方案
        按照设计稿于设备宽度的比例,动态计算并设置html根标签的font-size大小;媒体查询
        CSS中,设计稿元素的宽、高、相对位置等取值,按照同等比例换算为rem为单位的值。
        技术1:less 媒体查询 rem
         技术2:flexible.js rem(推荐)
         总结:1.两种方案现在都存在,2.方案2更简单,现阶段大家无须了解里面的js代码
 
    适配方案1
         设计稿常见尺寸宽度
            iphone 4 5    640px
            iphone 6 7 8  750px
            android  320 360 375 384 400 414 500 720px大部分4.7~5的安卓设备为720px
        一般情况下,我们一一套或两套效果图适应大部分的屏幕,放弃极端屏或对其优雅降级,牺牲一些效果,现在基本以750为准。
 
         2.动态设置html标签font-size大小
            1.假设设计稿是750px
            2.假设我们把整个屏幕划分为15等分(划分标注不一,可以是20也可以是10)
            3.每一分作为html字体大小,这里就是50px
            4.那么在320px设备的时候,字体大小为320/15就是21.33px
            5.用我们页面元素的大小除以不同的html字体大小会发现他们比例还是相同的
            6.比如我们以750为标准设计稿
            7.一个100*100像素的页面元素在750屏幕下,就是100/50转换为rem是2rem*2rem比例是1比1
            8.320屏幕下,html字体大小为21.33则2rem=42.66px此时宽和高都是42.66但是宽和高的比例还是1比1
            9.但是已经能实现不同屏幕下页面元素盒子等比例缩放的效果。
         3.元素大小取值方法
            1.最后的公式:页面元素的rem值 = 页面元素值(px)/(屏幕宽度/划分的份数)
            2.屏幕宽度/划分的份数就是html font-size的大小
            3.或者:页面元素的rem值 = 页面元素之(px)/html font-size字体大小
 
    适配方案2
        更简洁更高效的rem适配方案flexible.js
            手机淘宝团队出的简介高效移动端适配库
            我们再也不需要在写不同屏幕的媒体查询,因为里面js做了处理
            它的原理是把当前设备划分为10等份,但是不同设备下,比例还是一致的。
            我们要做的,就是确定好我们当前设备的html文字大小就可以了
            比如当前涉及稿是750px,那么我们只需要把html文字大小设置为75px(750px /10)就可以
            里面页面元素rem值:页面元素的px值/75
            剩余的让flexible.js来去算
        给vscode添加一个插件,cssrem,这个插件默认的html文字大小cssroot 为16px,所以要根据我们的要求来修改。

猜你喜欢

转载自www.cnblogs.com/solaris-wwf/p/11863742.html