Web发展到现在,已经有很大的变化,特别在当前这样的时代,我们面对的设备种类繁多。言外之意,这样的环境之下,Web的页面布局时常会碰到一些缩放比例的控制,特别是针对img、iframe、object、video和embed等元素的比例缩放。当然,就img元素而言,要实现纵横比例的布局已有多种方案,而且实战性也特别的强,并且在Responsive设计中已使用广泛。
既然img可以实现,那其他元素iframe、video等元素也可以借鉴其中的一些实现原理。今天我们就来说说一些这方面的实现方案。
纵横比
在具体介绍如何实现纵横比之前,先来了解一下纵横比相关的概念。纵横比分为固定纵横比和自适应纵横比。
基于width的百分比来设置padding百分比值,把这种方式称之为固定纵横比。一般我们通过width的百分比来计算padding-top或padding-bottom的百分比值,其计算公式如下:
padding-top = (元素高度 / 元素宽度) * 100%
padding-bottom = (元素高度 / 元素宽度) * 100%
比如下图:
上图展示的是一个9 / 16的固定纵横比例,计算出来就是56.25%。根据这个原理,我们可以在CSS处理器做相关处理:
@mixin fixed-aspect-rations($height, $width) {
padding-bottom: $height / $width * 100%;
// 或者
padding-top: $height / $width * 100%;
}
当然还可以写一个@function。
@function aspect-ratio($height, $width) {
$aspect-ratio: $height / $width * 100%;
@return $aspect-ratio;
}
在固定纵横比例的基础之上,做进一步的调整。假设我们在宽屏的PC上显示大的图片,而在移动设备上,我们不想使用相同的纵横比例让图像等元素变得太小。当然我们也不想使用完全相同的高度让图像变得太高。希望看到的效果是当宽度变小时,其高度也变得更小。我们就把这种方案称为流体纵横比例。
这种方案可以给元素设置一个高度,来减少padding-top或者padding-bottom的百分比值。假设我们的大图尺寸是700px的宽度和267px的高度,而我们决定显示的图片尺