有这样一张设计稿,左右两边白色间距为4px,中间间距为10px,每一行的两张图是等宽的(即平分去掉间距后的宽度)css
有一种方法是和设计师商量,把全部的具体尺寸改成百分比尺寸。。这个布局不太好写的主要缘由是,在宽度上,百分比(50%)与实际尺寸(4px 10px)混杂,因此作到宽度自适应的话会有困难。html
下面是正经的一种写法:布局
图片单元float,宽度设置为50%,奇数单元设置margin-right为10px, 偶数单元设置margin-right为-10px。父元素设置左padding为4px,右padding为14px,父元素的padding值正好是全部间距的总和,因此它实际宽度的50%是正好符合需求的图片单元宽度。偶数单元的负margin(-10px)和父元素右padding(14px)会中和成4px的右边距(其实是由于元素负margin会使其右边的元素向左移动并被其覆盖)spa
运营的同窗在实际操做中,作的图可能不会很标准,因此咱们须要作一些简单地容错,便是图片垂直居中在图片单元内,图片单元设置padding-top为一个百分比,这个百分比为设计稿中图片的宽高比。这样即便图片有些偏差也不会影响整体的排版布局,垂直居中的原理是 top 百分比的基数是父元素 translate百分比的基数是元素自己。设计
实际代码以下code
<dl class="four-item-list"> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> </dl>
.four-item-list{ overflow: hidden; padding: 4px 14px 0 4px; .item{ width: 50%; margin: 0 10px 18px 0; float: left; &:nth-child(even){ margin-right: -10px; } } .img-bar{ padding-top: 71%; position: relative; border-radius: 4px; overflow: hidden; } .img{ position: absolute; top: 50%; left: 0; transform: translateY(-50%); width: 100%; } }
有了上面四宫格的经验,相似的这种六宫格布局动动脑子也很容易写orm
代码以下htm
<dl class="six-item-list"> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> <dd class="item"> <div class="img-bar"><img src="" alt="" class="img"></div> </dd> </dl>
.six-item-list{ overflow: hidden; padding: 4px 14px 0 4px; .item{ width: 33.3%; margin: 0 5px 18px 0; float: left; &:nth-child(3n+0){ margin-right: -10px; } } .img-bar{ padding-top: 100%; position: relative; border-radius: 4px; overflow: hidden; } .img{ position: absolute; top: 50%; left: 0; transform: translateY(-50%); width: 100%; } }
欢迎你们到墨瞳漫画h5官网查看源码(请用响应式模式打开) 墨瞳漫画blog