【css】未加载完成的图片如何先占位(仅限宽高比确定的图片)

一、问题情景

很多时候盒子都是被图片撑起来的,当图片失效或者还没加载出来的时候,很有可能会影响样式。
比如下面这组布局,看起来很和谐,但是当一张图片加载不出的时候,就会出现文字被移动上去的样式问题,很影响效果,如何才能在这种情况下把上面留白占位呢?

正常
异常

布局:

<ul>
    <li>
        <div><img src="123.jpg" alt=""></div>
        <p>1</p>
    </li>
    <li>
        <div><img src="123.jpg" alt=""></div>
        <p>2</p>
    </li>
    <li>
        <div><img src="123.jpg" alt=""></div>
        <p>3</p>
    </li>
</ul>

二、解决方案

最简单的直接给盒子先加上高度?但是现在的开发中通常需要自适应,元素宽度均根据页面变化而变化,所以图片的宽高也会按比例变化,在图片盒子上先设置高度也是不可取的。
于是尝试以下办法可解决:
首先我们可以确定这组图片的宽高比,这组图片的高度是宽度的72%左右。

css:

        div{
            position: relative;
            padding-top:72%;  // (你的图片的高度/宽度值)
        }
        img{
            position: absolute;
            top:0;
            right:0;
            width:100%;
        }
结果

可以看到问题顺利解决了,思路就是用padding撑起图片div的高度,保证里面无论有没有图片都不会塌陷,但是padding会挤掉正常的图片,所以我们可以使图片相对于图片盒子进行绝对定位,定位到左上角,就OK了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 5,542评论 0 6
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 6,831评论 0 11
  • 概述 在网易云课堂学习李南江老师的《从零玩转HTML5前端+跨平台开发》时,所整理的笔记。笔记内容为根据个人需求所...
    墨荀阅读 6,929评论 0 7
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 5,870评论 0 6
  • 1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素? 行内元素:和有他元素都在一行上,高度、行高及外...
    极乐君阅读 7,206评论 0 20