css实现正方形,即宽度为百分比,高度与宽度相同的布置方式
2018-03-17 14:36
525 查看
这是开发中遇到的一个问题:一组图片列表,每行展示5个,图片宽度按照页面宽度的20%设置,然后高度与宽度相同,也就是展示为正方形,该如何用css设置呢?
推荐下我的前端群:524262608,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括我自己整理的一份最新的前端资料和零基础入门教程,欢迎初学和进阶中的小伙伴。
这里需要用到伪元素:before,如下是html
<div class="box"><div class="content diff"><div class="img">假设这是图片
<br>就是这个div</div></div>
<div class="content"><div class="img">假设这是图片
<br>就是这个div</div></div>
<div class="content diff"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content diff"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content diff"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content diff"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content diff"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content diff"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content"><div class="img">假设这是图片
<br>就是这个div</div></div><div class="content diff"><div class="img">假设这是图片
<br>就是这个div</div></div></div>
下面是css
.box { background: lightblue; width: 500px;}
.content { width: 20%; height: 100%; float: left; background: inherit; position: relative;}
.content:before { content: ""; padding-top: 100%; vertical-align: middle;
/* 这是关键,否则图片下方会超出一条缝 */display: block;}
.diff { background: lightpink;}
.content .img { width: 100%; height: 100%; position: absolute; top: 0; left: 0;
/* 下面没有用,只是看着好看 */font-size: 12px; color: darkgray; text-align: center; padding-top: 30px;}
css设置:before的padding-top为100%以及dispaly为block就可以形成一个正方形的空白,然后将外层设置relative,图片absolute,然后高宽100%,这样就可以形成一个正方形的图片了。
需要注意的是:before一定要设置vertical-align为middle,否则有可能图片下方会超出正方形的区域…
另外,.content我是用的float:left来排列,如果使用inline-block也可以,只是将代码换行书写会造成每个.content之间有缝隙,这时可以网上搜索“display block 间隙”查找解决方法,此处不再赘述。
web前端教程qun,189394454,每天都会有干货分享
关注公众号→‘学习web前端’开启你的web前端学习之路
相关文章推荐
- CSS图片宽度设置百分比 , 高度同宽度相同
- CSS图片宽度设置百分比 , 高度同宽度相同
- css实现div高度根据自适应宽度(百分比)调整
- css 没有宽度和高度声明实现的全屏自适应效果
- 【转】纯 CSS 实现高度与宽度成比例的效果
- css实现高度height随宽度width变化保持比例不变
- android实现正方形的ImageView、Layout等(即高度适应宽度或者宽度适应高度)
- css实现正方形div的3种方式
- CSS实现高度和宽度自适应
- CSS控制页面最大最小宽度和高度可兼容IE6版本的实现方法
- 【CSS黑科技2】CSS百分比实现高度占位自适应(margin/padding)
- CSS实例(八):不用图片实现宽度、高度自定的圆角矩形
- 移动端布局,div按比例布局,宽度为百分比,高度和宽度一样,即让div为正方形
- android 实现正方形的ImageView、Layout等(即高度适应宽度或者宽度适应高度)
- css解决设置宽度百分比,高度跟宽度相等,防止内部图片抖动
- div等比例缩放-------纯CSS实现自适应浏览器宽度的正方形
- 简单实现ImageView宽度填满屏幕,高度自适应的两种方式
- css实现宽高动态变化,生成正方形div的2种方式
- CSS实现左右栏宽度固定中间栏宽度变化且各栏高度自适应背景色不同的三栏布局
- CSS控制页面最大最小宽度和高度可兼容IE6版本的实现方法