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,所以要根据我们的要求来修改。
rem适配布局
原文:https://www.cnblogs.com/solaris-wwf/p/11863742.html