html 平铺 布局,html – 具有一致边距和对齐的Flexbox平铺布局

这是一种越来越常见的布局,使用flexbox和一些聪明的容器标记可以相对容易地实现.

平铺布局的常见问题是在多行的不同尺寸的贴片之间保持一致的间距和对齐.假设我们希望将所有切片分开30px的边距,我们可以简单地在所有切片上设置margin-right:30px,然后使用nth-of-type选择器移除行中最后一个切片的边距.

但是,当瓷砖的相对尺寸和顺序未知时,这是不可能的.例如,三分之一区块旁边的三分之二区块将不符合将最后一个区块的边距移除为由三个三分之一区块组成的行所需的相同的第n类型选择器规则.

巧妙的解决方法是将最右边的tile的边距压缩到父容器的宽度.我们可以通过将最外面的div的宽度设置为所需的宽度(在这种情况下为90%)并使用overflow:hidden,然后将内部容器的宽度设置为100%加上tile边距的宽度;宽度:计算(100%30px).这样,无论哪个瓷砖位于该行的最右侧位置,瓷砖将与其容器的边缘齐平.

为了确保瓷砖始终符合要求,我们将其柔性基准设置为我们希望它们占据的行宽减去瓷砖边距的比例; .third {flex:0 0 calc(33.33% – 30px); / *为1/3平铺* /}

像这样:

* {

box-sizing: border-box;

}

.tile-wrapper {

display: block;

position: relative;

width: 90%;

margin: 0 auto;

overflow: hidden;

}

.tile-container {

display: flex;

position: relative;

width: calc(100% + 30px);

flex-wrap: wrap;

}

.tile {

display: inline-block;

margin-right: 30px;

margin-bottom: 30px;

min-height: 200px;

line-height: 199px;

text-align: center;

border: 1px solid black;

}

.two-thirds {

flex: 0 0 calc(66.66% - 30px);

}

.third {

flex: 0 0 calc(33.33% - 30px);

}

.sixth {

flex: 0 0 calc(16.66% - 30px);

}

注意:这仅适用于现代浏览器(Chrome,Safari,FF,IE11). IE11中还存在一个已知的错误,它要求您使用long-hand flex-basis样式属性以将其设置为calc()值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值