一些网站特别是以内容呈现为主的,经常会有图片的显示。一方面图片要懒加载,另一方面要设置图片占位以避免页面抖动。 懒加载的这篇文章先不说,先说下图片占位中,保持图片原始宽高百分比的问题。
图片原始宽高百分比,在英文里有个专有名词,Intrinsic ratio
,在Google搜这个会出来很多文章的。
首先设定页面上图片的原始高度宽度是已知的,自然百分比也是已知的了
里面的$ratio为服务端渲染的变量,一般的4x3比率:75%,16x9比率:56.25%
<section class="main">
<div class="intrinsic" style="padding-top: $ratio">
<img class="intrinsic-item" alt="" src="https://fakeimg.pl/300x300/">
div>
section>
复制代码
下面是相应的样式文件 其中padding-top是控制百分比的关键,padding-top的百分比又是相对于宽度的,具体解释文章看这里
然后里面的图片用绝对定位来撑开
.main {
display: inline-block;
/* 注意这里设置的是max-width,而不是width,以兼容小图片 */
width: 200px;
.intrinsic {
position: relative;
height: 0;
width: 100%;
padding-top: 100%; /* padding-top初始化为100% */
/* 图片占位背景 */
background: #f0f0f0;
/* 图片上下左右撑开 */
.intrinsic-item {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
}