Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
实如何使用CSS保持页面内容的宽高比_创想鸟

实如何使用CSS保持页面内容的宽高比

这篇文章主要介绍了如何使用CSS保持页面内容宽高比的方法,作者举了伪元素和vw单元等不同方法下的例子,需要的朋友可以参考下

需求描述:移动端实现横跨页面半圆。(类似问题,实现4×4的正方形网格)

201624114416211.jpg (433×305)

简化问题,我们可以理解为实现一个高度和宽度比为1:2的块。

需要解决问题:

       1,高度和宽度按照一定比例。

       2,外容器高度和宽度不确定。

       3,尽量不使用图片和脚本替代。

立即学习“前端免费学习笔记(深入)”;

       4,兼容移动端。

编写html

思考一,使用height:100%,

body{       margin:0;       width: 100%;       background: lightblue;   }   .semicircle {       width: 100%;       height: 100%;       border-top:5px solid #fff;       border-radius: 100%;   }

存在问题,height的百分比是根据父容器计算的,不是当前容器,根本满足不了我们的需求。效果如下:

201624114439239.jpg (423×143)

父容器body的高度百分比为其子容器所填充的高度关联,即便设置body高度100%,由于子容器即semicircle所填充的实际高度为边界的5,无法将父容器“全部撑开”,因此无法通过设定父容器的高度为百分比指定宽高按照一定比例的容器。

思考二,设定padding-top或padding-bottom为100%
The percentage is calculated with respect to the width of the generated box’s containing block […] (source: w3.org, emphasis mine)

百分比宽度的计算与所生成盒子的包含块宽度有关。padding-top、padding-bottom的百分比是根据父容器的width(宽度)计算的,而不是height(高度)。其他比例实现对照表

aspect ratio padding-bottom value

16:956.25%4:375%3:266.66%8:562.5%

body{       margin:0;       width: 100%;       background: lightblue;   }   .semicircle {       width: 100%;       height: 0;       padding-bottom: 100%;       border-top:5px solid #fff;       border-radius: 100%;   }

思考三,使用vw单元
使用vw单元设定元素高度和宽度,vm的大小是通过viewport的宽度设定的,因此可以通过该方法保持容器按照一定比例显示。一单位的vw等于百分之一的viewport宽度,即100vw等于100%viewport宽度。

body{       margin:0;       width: 100%;       background: lightblue;   }   .semicircle {        width: 100vw;         height:100vw;       border-top:5px solid #fff;       border-radius: 100%;   }

对照表

aspect ratio multiply width by

1:111:334:30.7516:90.5625

思考四,使用伪元素和inline-block布局

body {       width: 100%;       font-size: 0;       text-align: center;       background: lightblue;   }   .semicircle {       border-top:5px solid #fff;       border-radius: 100%;   }   .semicircle:before {       content:"";       display: inline-block;       padding-bottom: 100%;   }

虽然代码有点复杂,但是灵活性强,可以实现更多类似的效果。

当需求改成实现一个横跨屏幕80%的宽度的半圆,我们只需要在.semicircle中添加属性width:80%;,顺便也把容器居中实现了。

该方法的原理很清晰:

参考思考一,无法通过高度100%来扩充外容器高度,那么可以通过伪元素,插入一个高度和宽度一致的元素,将容器撑开成一比一高度的容器。注意,该方法实现半圆,实际需要宽高为一比一的容器,即占用空间为上述方法的两倍。

设置:before元素边界,解析原理:
201624114500101.jpg (423×491)

思考五,使用图片,兼容低档次移动设备。

.semicircler img {     width: 100%;     background-repeat: no-repeat;     background-size: 100% 100%;     background-image: url(../img/autoresized-picture.jpg);   }

使用脚本,css更加简洁明了,目标清晰。

p.style.height=p.offsetWidth+"px";

对于实现2*2正方形网格
201624114515193.jpg (421×766)

*------main code-------*/           body {             width: 100%;             margin:0;             text-align: center;           }           p{             display: inline-block;             width: 50%;             background: lightblue;             font-size: 12px;             position: relative;             vertical-align: middle;           }           p:before {               content:"";               display: inline-block;               padding-bottom: 100%;               vertical-align: middle;           }           /*------other code-------*/        p:nth-child(2),p:nth-child(3){               background: pink;           }           span {               display: inline-block;               vertical-align: middle;               font-size: 6em;               color: #fff;           }

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

以上就是实如何使用CSS保持页面内容的宽高比的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CSS3的default伪类选择器的解析
上一篇 2025年12月24日 01:18:32
关于css3的单位vw和vh的使用
下一篇 2025年12月24日 01:18:44

相关推荐

发表回复

登录后才能评论
关注微信