移动端布局2:vw结合rem实现移动端布局

 

上一回说到了媒体查询结合rem做移动端布局,步骤如下

首先设置媒体查询,确定html中font-size值的变化

			@media all and (max-width:320px){
				html{font-size:12px;}
			}
			@media all and (min-width:321px) and (max-width:375px){
				html{font-size:14px;}
			}
			@media all and (min-width:376px){
				html{font-size:16px;}
			}

实现步骤:

		1:例如设计图为750px .设计图量出height为88px;
		2:考虑dpr为2,量出header高度为88px,所以88px / 2 == 44px
		3:44px == ?rem
		4:因为设计图为750px 所以范围在(min-width:321px) and (max-width:375px)   所以现在1rem == 14px;
		5:44px / 14px == ?rem;

今天就是在上一次的基础上再加以改进。媒体查询结合rem计算数值太费劲,每次都要用计算器算。而vw就不一样了,只需要先除以dpr,再除以100,口算比较容易。

直接在重置样式后面写上定义html中font-size的值就行。

如果设计图为640px  html{font-size:31.25vw}
如果设计图为750px  html{font-size:26.67vw}

实现的步骤:
1:例如设计图为750px .设计图量出height为88px;
2:考虑dpr  88px / 2 == 44px
3:44px / 100 == 0.44rem   (26.67vw 或者31.25vw   等同于  100px)

 

原理分析:

1.rem

rem是相对于根元素的字体大小的单位

rem能等比例适配所有的屏幕,根据html的字体的大小来控制rem的大小

2.dpr设备像素比

复制代码
dpr = 物理像素 / 逻辑像素

物理像素:设计图量出的px(设备显示的px)
逻辑像素:css中设置的px

如果设计图的宽度是640px 或者 750px dpr = 2
如果设计图的宽度是1080px dpr = 3
复制代码

3.vw

视窗宽度
1vw 等于视窗宽度的1%
100vw 等于视窗宽度的100%

4.vw 与 px 之间的换算

复制代码
如果设计图的宽度是640px  则 dpr = 2

所以:逻辑像素 = 640px /2 = 320px
所以:320px = 100vw
所以:1vw = 3.2px
所以:31.25vw = 100px = 1rem
复制代码
复制代码
如果设计图的宽度是750px  则 dpr = 2

所以:逻辑像素 = 750px /2 = 375px
所以:375px = 100vw
所以:1vw = 3.75px
所以:26.67vw = 100px = 1rem
复制代码
复制代码
如果设计图的宽度是1080px  则 dpr = 3

所以:逻辑像素 = 1080px / 3 = 360px
所以:360px = 100vw
所以:1vw = 3.6px
所以:27.78vw = 100px
复制代码

5.根元素字体大小的限制

复制代码
如果设计图宽度为640px
则:根元素设置为
html{font-size:31.25vw}

如果设计图宽度为750px
则:根元素字体大小设置为
htmt:{font-size:26.67vw}

如果设计图宽度为1080px
则根元素字体大小设置为
html:{font-size:27.78vw}
复制代码

6.计算方法:

复制代码
为了方便计算:1rem = 100px,,所以,要除以100

已知 dpr = 2
如果量取设计图的某部分 宽度 300px
物理像素-------逻辑像素-------rem
则:300/2/100 = 1.5rem
复制代码
7.rem是相对于根元素的字体大小的单位,能等比例适配所有的屏幕,根据html的字体的大小来控制rem的大小
复制代码
如果设计图为 640px
根元素font-size=31.25vw 相当于100px,相当于 1rem
 
如果设计图为750px
根元素font-size=26.67vw 相当于100px,相当于 1rem
 
一般,我们要在公共样式中根据设计图的大小,设置根元素字体的大小,单位为vm,
如果设计图为640px,html{font-size:31.25vw}
如果设计图为750px,html{font-size:26.67vw}
 
然后,我们量取得px/2/100即:物理像素/2/100
复制代码

  8、分析

    1vw表示1%的屏幕宽度,而我们的设计稿通常是750px的,屏幕一共是100vw,对应750px,那么1px就是0.1333333vw,又因为dpr为2,所以真正意义上讲1px为0.2667vw。

    同时我们知道rem,rem是相对html元素的字体大小,为了方便计算,我们取html的font-size=100px,通过上面的计算结果1px是0.13333333vw,那么100px就是13.333333vw了

    所以,我们让1rem=100px=13.333333vw

    我们可以直接在html中设置 font-size:13.333333vw;    也可以使用css中的 calc()函数,上代码

   html {
       font-size: calc(100vw / (750/2) * 100);
      }

 

 

.

posted @ 2020-05-14 10:23  剑仙6  阅读(296)  评论(0编辑  收藏  举报
欢迎访问个人网站www.qingchun.在线