需求: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:;
}
.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宽度再设置图片高度相比方便太多太多了。

效果图:

上面所有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:;
left:;
}

效果:

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

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

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

css实现div中图片高度自适应并与父级div宽度一致的更多相关文章

  1. div中宽高度自适应文字换行居中问题解决

    <html> <head> <meta charset="UTF-8"/> <title>div中宽高度自适应文字换行居中demo& ...

  2. div中iframe高度自适应问题

    网页分为上.中.下三部分,上.下高度固定中间高度自适应:中间分为左.右两部分,左边宽度固定,右边宽度自适应.现在右侧div是宽度和高度都是自适应,右侧div里有个IFrame,想让IFrame自适应外 ...

  3. div+css:div中图片垂直居中

    div中图片垂直居中 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  4. 如何让div中的span垂直居中 ----height:100%设置div的高度

    如果div中只有一个span一个元素,可以使用line-height.如果div中还有其他元素,可以设置span的css如下: .span{ position: absolute; top: 50%; ...

  5. winform中dataGridView高度自适应填充完数据的高度

    // winform中dataGridView高度自适应填充完数据的高度,就是dataGridView自身不产生滚动条,自己的高度是根据数据的多少而变动. 在load的时候,数据绑定后,加上如下代码: ...

  6. 典型的DIV CSS三行二列居中高度自适应布局

    如何使整个页面内容居中,如何使高度适应内容自动伸缩.这是学习CSS布局最常见的问题.下面就给出一个实际的例子,并详细解释.(本文的经验和是蓝色理想论坛xpoint.guoshuang共同讨论得出的.) ...

  7. 移动web图片高度自适应的解决方案

    由于图片的加载是在dom加载完成之后进行的,于是,在手机端浏览网页时,经常会看到页面刚打开时很多内容叠在一起,当图片加载完成后,页面会由于图片加载完成出现明显的抖动 针对这个问题,有以下几种解决方案 ...

  8. div 中图片溢出问题及 CSS3中图片翻转问题

    如果设置一个div 装两张以上的图片,如果不设置好div的宽度和高度,就会使图片溢出. 我们知道,div是可以由图片撑开其宽高的,也就是说如果只放一张图片的情况下,不设置div的宽高,div的宽高会默 ...

  9. css和javascript中图片路径的不同

    之前在写前端代码时,在图片路径的设置那里经常会遇到一个问题.比方说,我 (1)在根目录下面新建了个"images"文夹,里面放了张图片top.gif (2)在根目录下另外新建了两个 ...

随机推荐

  1. 如何高效的编写Verilog HDL——进阶版

    博主之前写过一篇文章来谈论如何高效的编写Verlog HDL——菜鸟版,在其中主要强调了使用Notepad++来编写Verilog HDL语言的便捷性,为什么说是菜鸟版呢,因为对于新手来说,在还没有熟 ...

  2. 真实场景的虚拟视点合成(View Synthsis)详解

    上一篇博客中介绍了从拍摄图像到获取视差图以及深度图的过程,现在开始介绍利用视差图或者深度图进行虚拟视点的合成.虚拟视点合成是指利用已知的参考相机拍摄的图像合成出参考相机之间的虚拟相机位置拍摄的图像,能 ...

  3. 学习笔记:webpack深入与实践(一)

    一.webpack基本介绍 webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler). 四个核心概念: 入口(entry):指示 webpack 应该 ...

  4. 页面某些特定图标的权限,比如导入导出表格,下载等等,这个权限必须在有某个页面查看的权利的基础上(细粒度)(shiro项目中来的四)

    一,查找按钮权限的设置 第一步:会根据用户的相关信息去查到它的角色表: SELECT * FROM SYS_USER WHERE user_id='eded77bdf35347249b2bacfa18 ...

  5. val(),text(),html()的区别

    <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script> ...

  6. java中回调函数的理解

    一,案例一 "通常大家说的回调函数一般就是按照别人(李四)的定好的接口规范写,等待别人(张三)调用的函数,在C语言中,回调函数通常通过函数指针来传递:在Java中,通常就是编写另外一个类或类 ...

  7. java.util报错

    主要是java运行时环境没有配置好,需要添加JRE

  8. RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用

    在AppiumLibrary库中,Open Application关键字用来打开一个待测试移动APP. 示例1:连接本机已经打开的appium服务端,打开一个待测试的安卓APP,指定测试平台为Andr ...

  9. mysql中的union用法以及子查询综合应用

    union查询就是把2条或者多条sql语句的查询结果,合并成一个结果集. 如:sql1: N行,sql2: M行,sql1 union sql2 ---> N+M行 1.能否从2张表查询再uni ...

  10. [BZOJ1861][ZJOI2006]书架

    BZOJ Luogu Description 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看 ...