时间:2021-05-08
需求描述:移动端实现横跨页面半圆。(类似问题,实现4x4的正方形网格)
简化问题,我们可以理解为实现一个高度和宽度比为1:2的块。
需要解决问题:
1,高度和宽度按照一定比例。
2,外容器高度和宽度不确定。
3,尽量不使用图片和脚本替代。
4,兼容移动端。
编写html
XML/HTML Code复制内容到剪贴板
思考一,使用height:100%,
CSS Code复制内容到剪贴板 存在问题,height的百分比是根据父容器计算的,不是当前容器,根本满足不了我们的需求。效果如下:
父容器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:9 56.25% 4:3 75% 3:2 66.66% 8:5 62.5% CSS Code复制内容到剪贴板思考三,使用vw单元
使用vw单元设定元素高度和宽度,vm的大小是通过viewport的宽度设定的,因此可以通过该方法保持容器按照一定比例显示。一单位的vw等于百分之一的viewport宽度,即100vw等于100%viewport宽度。
对照表
思考四,使用伪元素和inline-block布局
虽然代码有点复杂,但是灵活性强,可以实现更多类似的效果。
当需求改成实现一个横跨屏幕80%的宽度的半圆,我们只需要在.semicircle中添加属性width:80%;,顺便也把容器居中实现了。
该方法的原理很清晰:
参考思考一,无法通过高度100%来扩充外容器高度,那么可以通过伪元素,插入一个高度和宽度一致的元素,将容器撑开成一比一高度的容器。注意,该方法实现半圆,实际需要宽高为一比一的容器,即占用空间为上述方法的两倍。
设置:before元素边界,解析原理:
思考五,使用图片,兼容低档次移动设备。
CSS Code复制内容到剪贴板使用脚本,css更加简洁明了,目标清晰。
CSS Code复制内容到剪贴板对于实现2*2正方形网格
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
css媒体查询有一个宽高比很方便,aspect-ratio,可以直接使用宽/高来进行页面适配使用样例如下://宽高比在((320/50)+(728/90))/2
本文实例讲述了php使用GD创建保持宽高比缩略图的方法。分享给大家供大家参考。具体如下:/***Createathumbnailimagefrom$inputF
前面一篇文章介绍了CSS页面布局中HTML结构化,本节讲解如何使用巧妙的使用CSS选择器。 id用于标识页面唯一元素,id的名称是控制某一内容块的手段,通
本节主要讲解,两个内容,第一:CSS如何控制页面样式,有几种方式;第二:这些方式出现在同一个页面时的优先级。使用xHTML+CSS布局页面,其中有个很重要的特点
本文主要讲解如何用CSS控制网页段落行间距的三个实例:1、使用百分比设置行间距,2、使用像素值设置行间距,3、使用数值来设置行间距。本文主要讲解如何用CSS控制