这篇文章主要为大家展示了“css如何实现自适布局”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css如何实现自适布局”这篇文章吧。
自适布局指相对视窗任何尺寸都能占据特定百分比的占位布局。自适布局
的容器都是根据视窗尺寸计算,即使父节点
或祖先节点
的尺寸发生变化也不会影响自适布局
的容器尺寸。
搭建自适布局
就离不开视窗比例单位。在CSS3里增加了与viewport
相关的四个长度单位,随着时间推移,目前大部分浏览器对这四个长度单位都有较好的兼容性,这也是未来最建议在伸缩方案里使用的长度单位。
1vw
表示1%
视窗宽度
1vh
表示1%
视窗高度
1vmin
表示1%
视窗宽度和1%
视窗高度里最小者
1vmax
表示1%
视窗宽度和1%
视窗高度里最大者
视窗宽高在JS里分别对应window.innerWdith
和window.innerHeight
。若不考虑低版本浏览器兼容性,完全可用一行CSS代码秒杀所有移动端的伸缩方案。
/* 基于UI width=750px DPR=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%
的弹窗。
<div class="modal"> <div class="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()
也不一定结合视窗比例单位
计算。例如自适布局
已知部分节点高度,不想手动计算最后节点高度但又想其填充布局剩余空间。
<ul class="selfadaption-layout"> <div class="box-1"></div> <div class="box-2"></div> <div class="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; } }
以上是“css如何实现自适布局”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。