css如何实现自适布局(css,开发技术)

时间:2024-04-30 12:04:42 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

自适布局

自适布局指相对视窗任何尺寸都能占据特定百分比的占位布局。自适布局的容器都是根据视窗尺寸计算,即使父节点祖先节点的尺寸发生变化也不会影响自适布局的容器尺寸。

搭建自适布局就离不开视窗比例单位。在CSS3里增加了与viewport相关的四个长度单位,随着时间推移,目前大部分浏览器对这四个长度单位都有较好的兼容性,这也是未来最建议在伸缩方案里使用的长度单位。

  • 1vw表示1%视窗宽度

  • 1vh表示1%视窗高度

  • 1vmin表示1%视窗宽度和1%视窗高度里最小者

  • 1vmax表示1%视窗宽度和1%视窗高度里最大者

视窗宽高在JS里分别对应window.innerWdithwindow.innerHeight。若不考虑低版本浏览器兼容性,完全可用一行CSS代码秒杀所有移动端的伸缩方案。

/*基于UIwidth=750pxDPR=2的网页*/html{font-size:calc(100vw/7.5);}

上述代码使用calc()实现font-size的动态计算。calc()自适布局里的核心存在,无它就不能愉快地实现自适布局所有动态计算了。

calc()用于动态计算单位,数值长度角度时间百分比都能作为参数。由于执行数学表达式后返回运算后的计算值,所以可减少大量人工计算甚至无需人工计算。

calc()饥不择食,所有计量单位都能作为参数参加整个动态计算。

  • 数值整数浮点数

  • 长度pxemremvwvh

  • 角度degturn

  • 时间sms

  • 百分比%

calc()虽然好用,但新手难免会遇到一些坑,谨记以下特点,相信就能玩转calc()了。

  • 四则运算:只能使用+-*/作为运算符号

  • 运算顺序:遵循加减乘除运算顺序,可用()提升运算等级

  • 符号连接:每个运算符号必须使用空格间隔起来

  • 混合计算:可混合不同计量单位动态计算

第三点尤为重要,若未能遵守,浏览器直接忽略该属性。

上述font-size:calc(100vw / 7.5)其实就是根据设计图与浏览器视窗的比例动态计算<html>font-size100/750 = x/100vw

在SPA里有遇过因为有滚动条或无滚动条而导致页面路由在跳转过程里发生向左或向右的抖动吗?这让强迫症患者很难受,此时可用calc()巧妙解决该问题。

.elem{padding-right:calc(100vw-100%);}

不直接声明padding-right为滚动条宽度是因为每个浏览器的默认滚动条宽度都可能不一致。100vw是视窗宽度,100%内容宽度,那么100vw - 100%就是滚动条宽度,声明padding-right用于保留滚动条出现的位置,这样滚动条出不出现都不会让页面抖动了。

有了calc()做保障就可迅速实现一些与视窗尺寸相关的布局了。例如实现一个视窗宽度都为50%的弹窗。

css如何实现自适布局

<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()也不一定结合视窗比例单位计算。例如自适布局已知部分节点高度,不想手动计算最后节点高度但又想其填充布局剩余空间。

css如何实现自适布局

<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如何实现自适布局的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么用css实现居中布局下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18