css实现div中图片高度自适应并与父级div宽度一致

摘要:
要求:1.父div不设置高度2.图像高度是自适应的,显示为正方形;在过去,当列表中的图像高度必须与父对象的宽度相同,并且需要为正方形时,最初的方法是固定图像高度,这将导致不同分辨率下的图像压缩。后来,我愚蠢地使用js来控制图像高度。到目前为止,我意识到可以使用几句css来修复它,并且它完全符合要求……这种方法比js的方法(先获取父div宽度,然后设置图像高度)方便得多。

需求:1.父级div不设置高度

   2.图片高度自适应,并且显示为正方形;

以前遇到列表中图片高度必须和父级宽度相同,并且需要为正方形的时候,最开始的方法是定死图片高度,这样会导致不同分辨率下图片会压缩,后来傻傻的用js来控制图片的高度,直到现在才明白几句css就能搞定,并且完全符合要求。。。。。。

例子:

1.html

<ul>
    <li class="bli">
        <div class="imgbox">
            <img src="upimg/comm.png"/>
        </div>
        <p>喵喵喵喵喵喵111</p>
    </li>
    <li class="bli">
        <div class="imgbox">
            <img src="upimg/comm1.png"/>
        </div>
        <p>喵喵喵喵喵喵222</p>
    </li>
    <li class="bli">
        <div class="imgbox">
            <img src="upimg/comm2.png"/>
        </div>
        <p>喵喵喵喵喵喵333</p>
    </li>
</ul>

2.css

ul{
    overflow: hidden;
}
.bli{
    float: left;
    width: 49%;
    margin:0 2% 2% 0;
    background: white;
    outline: 1px solid red;
}
.bli:nth-child(even){
    margin-right: 0;
}
.imgbox{
    position: relative;
    overflow: hidden;
    padding-bottom: 100%;/*重要属性*/
    outline: 1px solid green;
}
.imgbox img{
    width: 100%;
    position: absolute;
}

说明:装图片的盒子imgbox,设置的padding-bottom,当该值为百分比属性时,是基于父元素宽度的百分比,所以这里设置100%的时候,就相当于形成了一个正方形。

   当然,也可以设置padding-top。这时img就需要设置top:0;了。记得img要设置100%宽度哦。

   这个方式和js的先获取父级div宽度再设置图片高度相比方便太多太多了。

效果图:

css实现div中图片高度自适应并与父级div宽度一致第1张

上面所有li的高度都未定死,但是都是一样的高度,图片很长或者很宽,都不影响布局,主要是overflow:hidden隐藏了。这样设置之后,页面不管怎么变化,图片高度也会动态随之变化。

扩展:如果想实现,宽高一定比例比如16:9,宽度自适应100%的div呢?

再啰嗦一句:padding当为百分比属性时,是基于父元素宽度的百分比的

那么:我设置宽度为100%的时候,按比例算,高度大致就是(100% * 9)/16   ,这样算的话,padding-bottom的值就是56%

1.html

<div class="box">
    <img src="upimg/comm.png"/>
</div>
<div class="box">
    <img src="upimg/comm1.png"/>
</div>
<div class="box">
    <img src="upimg/comm2.png"/>
</div>

以上是3张图片,每个图片的大小分别是:216X216,330X180,180X330

2.CSS

.box{
    width: 100%;
    margin: 20px auto;
    background: skyblue;
    position: relative;
    padding-bottom: 56%;       //这是重要属性
    overflow: hidden;
}
.box>img{
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
}

效果:

css实现div中图片高度自适应并与父级div宽度一致第2张

在398px宽度的时候,高度都为222.88px,算下来比例就是16:9

在浏览器宽度发生变化时,能自适应百分百宽度,并且保证比例不会变化

 注:也可以设置图片高度为100%,我上面未设是因为原图比例不是16:9,设置100%高度会被压缩

  

免责声明:文章转载自《css实现div中图片高度自适应并与父级div宽度一致》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇! AHOI/HNOI2017大佬项目vue1.0升级到2.0的心得下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

网页重构面试笔试题

1.什么是网站重构?div+css的布局较table布局有什么优点?2.如何理解css盒模型?3.平时做网页经常使用哪些hack?4.如何理解表现与内容相分离?5.如何解决ie6的双边距问题?6.如何定义高度为1px的容器?{heigh:1px; 10px; background:#000; overflow:hidden}ie6下这个问题是默认行高造成的,...

用原生css实现高斯模糊、黑白等滤镜效果

  —引导— 在CSS3中,有一个强大的属性,那就是filter属性,filter顾名思义就是“滤镜”的意思,用filter属性可以让图片无需PS处理就达到一些简单的显示效果。 —定义和使用— filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度)。 默认值 none 继承 none 动画支持 是 版本...

移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器

前言:最近公司的项目在做全网营销,要做非微信浏览器的wap 站 的改版,其中涉及到的一点技术就是采用H5 选择手机相册中的图片,或者拍照,再将获取的图片进行压缩之后上传。 这个功能模块主要有这5点比较难:   1手机获取相册的图片文件,拍照的图片文件,通过js 的自带的img对象,获取图片对象。     2.图片的压缩,采用canvas 画布进行压缩图片,...

css 父元素的宽度随子元素的宽度变化

当最外面的层想要设置一个 overflow: hidden,但子元素又想他们能滚动,像今日头条的滚动导航一样: html: <div id="wrapper"> <ul id="scroll"> <li>cell 1</li> <li>cell 2</li>...

13种常用按钮、文本框、表单等CSS样式

一、按钮样式.buttoncss {    font-family: "tahoma", "宋体"; /*www.52css.com*/    font-size:9pt; color: #003399;    border: 1px #003399 solid;    color:#006699;    border-bottom: #93bee2 1...

CSS样式大全

字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD 样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常) 行高 {line-height: normal;}(正常) 单位:PX、PD、EM 粗细...