css如何实现自适布局
导读:本文共2948.5字符,通常情况下阅读需要10分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 自适布局自适布局指相对视窗任何尺寸都能占据特定百分比的占位布局。自适布局的容器都是根据视窗尺寸计算,即使父节点或祖先节点的尺寸发生变化也不会影响自适布局的容器尺寸。搭建自适布局就离不开视窗比例单位。在CSS3里增加了与viewport相关的四个长度单位,随着时间推移,目前大部分浏览器对这四个长度单位都有较好的兼容性,这也是未来最建议在伸缩方案里使用的长度单位。1... ...
目录
(为您整理了一些要点),点击可以直达。自适布局
自适布局指相对视窗任何尺寸都能占据特定百分比的占位布局。自适布局
的容器都是根据视窗尺寸计算,即使父节点
或祖先节点
的尺寸发生变化也不会影响自适布局
的容器尺寸。
搭建自适布局
就离不开视窗比例单位。在CSS3里增加了与viewport
相关的四个长度单位,随着时间推移,目前大部分浏览器对这四个长度单位都有较好的兼容性,这也是未来最建议在伸缩方案里使用的长度单位。
1vw
表示1%
视窗宽度1vh
表示1%
视窗高度1vmin
表示1%
视窗宽度和1%
视窗高度里最小者1vmax
表示1%
视窗宽度和1%
视窗高度里最大者
视窗宽高在JS里分别对应window.innerWdith
和window.innerHeight
。若不考虑低版本浏览器兼容性,完全可用一行CSS代码秒杀所有移动端的伸缩方案。
/*基于UIwidth=750pxDPR=2的网页*/html{font-size:calc(100vw/7.5);}
上述代码使用calc()
实现font-size
的动态计算。calc()
是自适布局
里的核心存在,无它就不能愉快地实现自适布局
所有动态计算了。
calc()
用于动态计算单位,数值
、长度
、角度
、时间
和百分比
都能作为参数。由于执行数学表达式
后返回运算后的计算值,所以可减少大量人工计算甚至无需人工计算。
calc()
饥不择食,所有计量单位都能作为参数参加整个动态计算。
数值:
整数
、浮点数
长度:
px
、em
、rem
、vw
、vh
等角度:
deg
、turn
时间:
s
、ms
百分比:
%
calc()
虽然好用,但新手难免会遇到一些坑,谨记以下特点,相信就能玩转calc()
了。
四则运算:只能使用
+
、-
、*
、/
作为运算符号运算顺序:遵循加减乘除运算顺序,可用
()
提升运算等级符号连接:每个运算符号必须使用
空格
间隔起来混合计算:可混合不同计量单位动态计算
第三点尤为重要,若未能遵守,浏览器直接忽略该属性。
上述font-size:calc(100vw / 7.5)
其实就是根据设计图与浏览器视窗的比例动态计算<html>
的font-size
:100/750 = x/100vw
。
在SPA里有遇过因为有滚动条或无滚动条而导致页面路由在跳转过程里发生向左或向右的抖动吗?这让强迫症患者很难受,此时可用calc()
巧妙解决该问题。
.elem{padding-right:calc(100vw-100%);}
不直接声明padding-right
为滚动条宽度是因为每个浏览器的默认滚动条宽度都可能不一致。100vw
是视窗宽度,100%
内容宽度,那么100vw - 100%
就是滚动条宽度,声明padding-right
用于保留滚动条出现的位置,这样滚动条出不出现都不会让页面抖动了。
有了calc()
做保障就可迅速实现一些与视窗尺寸相关的布局了。例如实现一个视窗宽度都为50%
的弹窗。
<divclass="modal"><divclass="modal-wrapper"></div></div>
.modal{display:flex;position:fixed;left:0;right:0;top:0;bottom:0;justify-content:center;align-items:center;background-color:rgba(0,0,0,.5);&-wrapper{width:50vw;height:200px;background-color:#f66;}}
当然使用calc()
也不一定结合视窗比例单位
计算。例如自适布局
已知部分节点高度,不想手动计算最后节点高度但又想其填充布局剩余空间。
<ulclass="selfadaption-layout"><divclass="box-1"></div><divclass="box-2"></div><divclass="box-3"></div></ul>
.selfadaption-layout{width:200px;height:567px;.box-1{height:123px;background-color:#f66;}.box-2{height:15%;background-color:#3c9;}.box-3{height:calc(100%-123px-15%);background-color:#09f;}}
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
css如何实现自适布局的详细内容,希望对您有所帮助,信息来源于网络。