经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
CSS 图片加载提前占位 padding-top、padding-bottom
来源:cnblogs  作者:lwlcode  时间:2023/6/9 10:12:02  对本文有异议

今天聊一个图片加载提前占位的一个问题 ??,内容比较适合初学者。

起因

在响应式页面当中,图片加载之前是不知道图片高度的,加载成功图片完全撑开。如果不做提前占位会把下面的内容挤下去,页面出现抖动,就像下面效果一样:

css-ccupy-no.gif

假如图片是自适应的,宽度为屏幕宽度的30%,高度等比例缩放,这时候是无法直接设置图片高度的,所以就导致了图片未加载前高度为0,加载成功后撑开的问题。

解决这个问题就需要对图片进行提前占位,这里虽然不确定图片的高度,但是图片的比例是确定的。(要是图片的比例都不确定那就玩不了了??……)

padding-top

所以有请今天的主角登场:padding-top或者padding-bottom

padding-top的值设置为百分比的时候,让我们先看一下mdn官方是怎么解释的:

当内边距(padding)是一个百分比的时候,百分比是和包含块(containing block)的宽度有关的,同样一定不能为负数。

说白了就是padding-top的值如果是百分比,那么这个百分比是相对于其父容器的宽度的。

比如下面这个案例(案例写成了padding-bottom,效果都是一样的):

  1. .content{
  2. width: 300px; /* 也可以是百分比 */
  3. height: 500px;
  4. background-color: aquamarine;
  5. }
  6. .box{
  7. width: 100%;
  8. height: 0;
  9. padding-bottom: 50%; /* 相对于父级宽度,也就是150px */
  10. background-color: red;
  11. }
  1. <div class="content">
  2. <div class="box"></div>
  3. </div>

.boxpadding-bottom的50%是相对于父容器.content的宽度决定的,也就是150px。而且.content也不一定是准确的px值,也可以是相对于页面的百分比值,这就适用于响应式的百分比宽度。

css-ccupy-demo.gif

所以我们可以用图片的宽高比作为padding-bottom的值提前把图片所要占用的空间撑开,然后img绝对定位在.content上面就可以达到提前占位的效果。

比如下面案例使用的图片宽高是300px * 450px,那么padding-bottom的值就可以设置为150%

这里为了少写一个div,用伪类代替:

  1. .content{
  2. position: relative;
  3. width: 300px;
  4. font-size: 0; /* 消除内联元素间的间隔(空格) */
  5. }
  6. .content::before{
  7. content: '';
  8. display: block;
  9. width: 100%; /* 400px 相对于content的width */
  10. padding-bottom: 150%; /* 200px 相对于content的width */
  11. background-color: red;
  12. }
  13. .content img{
  14. position: absolute;
  15. top: 0;
  16. left: 0;
  17. width: 100%;
  18. height: 100%;
  19. object-fit: cover;
  20. }
  1. <div class="content">
  2. <img src="https://img1.baidu.com/it/u=2348819965,1910380145&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750" alt="">
  3. </div>
  4. <div>下方内容下方内容下方内容</div>

可以看到在加载过程中下方内容没有从上面被挤下来,提升了用户体验。

css-ccupy.gif

大致思路就是这样,主要是使用padding-top或者padding-bottom的百分比用来实现占位效果 ??。

原文链接:https://www.cnblogs.com/lwlblog/p/17468406.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号