本文摘自PHP中文网,作者青灯夜游,侵删。
实现方法:1、利用padding属性和“%”单位;2、利用padding和calc()属性;3、利用padding属性和CSS变量;4、利用padding属性和伪元素;5、直接利用视窗单位“vw”;6、使用视窗单位配合CSS Grid布局。
本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。
长宽比故事
长宽比在影视制作中又被称之为宽高比,指的是一个视频的宽度除以它的高度所得到的比例,通常表示为x:y
或x×y
,其中的冒号和叉号表示中文的“比”之意。目前,在电影工业中最常被使用的是anamorphic比例(即2.39:1
)。传统的4:3
仍然被使用于现今的许多电视画面上,而它成功的后继规格16:9
则被用于高清晰度电视或数字电视上。常见的比例:
有关于长宽比更多的介绍可以阅读Wiki上的Aspect ration一文。
HTML结构
使用CSS实现容器长宽比,常见的HTML模板结构有两种:
1 2 3 |
|
另外一种结构是:
1 2 |
|
具体使用的时候,根据自己使用场景采用不同的结构。
CSS实现长宽比例方案
前面也提到过了,使用CSS实现长宽比方案有多种,下面简单的罗列一下这些方案。不过每种方案都不会详细介绍,因为代码非常简单,看一眼代码就能明白其中原理。
垂直方向的padding
这是最早提出的一种实现方案,主要借助的原理是利用padding-top
或者padding-bottom
的百分比值,实现容器长宽比。在CSS中padding-top
或padding-bottom
的百分比值是根据容器的width
来计算的。如此一来就很好的实现了容器的长宽比。采用这种方法,需要把容器的height
设置为0
。而容器内容的所有元素都需要采用position:absolute
,不然子元素内容都将被padding
挤出容器(造成内容溢出)。
比如我们容器的长宽比是16:9
,那么根据计算:100% * 9 / 16
可以得到56.25%
。如果你希望的是4:3
,那么对应的就是100% * 3 / 4
。
相关阅读 >>
更多相关阅读请进入《css》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者