css实现多种方法多列等高布局
多列等高,要求左右两列高度自适应且一样,分别设置不同背景色.分别是以下几种方式:
1.padding + margin + overflow 实现多列等高效果,兼容性好
2.border实现多列等高,左边框宽度为200px,左列浮动,伪元素清除浮动
3.父元素线性渐变背景色实现多列等高(同理各种颜色障眼法)
4.display:flex实现多列等高
5.display:grid实现多列等高
6.display:table-cell 实现多列等高
代码:
<div class="g-container"> <h2>padding + margin + overflow,实现多列等高效果,兼容性好</h2> <div class="g-padmar"> <div class="g-left"> content<br/> </div> <div class="g-right"> content<br/> content<br/> content<br/> content<br/> </div> </div> <h2>border实现多列等高,左边框宽度为200px,左列浮动,伪元素清除浮动</h2> <div class="g-border"> <div class="g-left"> content<br/> </div> <div class="g-right"> content<br/> content<br/> content<br/> content<br/> </div> </div> <h2>父元素线性渐变背景色实现多列等高(同理各种颜色障眼法)</h2> <div class="g-lineargradient"> <div class="g-left"> content<br/> </div> <div class="g-right"> content<br/> content<br/> content<br/> content<br/> </div> </div> <h2>display:flex实现多列等高</h2> <div class="g-flex"> <div class="g-left"> content<br/> </div> <div class="g-right"> content<br/> content<br/> content<br/> content<br/> </div> </div> <h2>display:grid实现多列等高</h2> <div class="g-grid"> <div class="g-left"> content<br/> </div> <div class="g-right"> content<br/> content<br/> content<br/> content<br/> content<br/> </div> </div> <h2>display:table-cell 实现多列等高</h2> <div class="g-table"> <div class="g-left"> content<br/> </div> <div class="g-right"> content<br/> content<br/> content<br/> content<br/> content<br/> </div> </div> </div>
h2 { text-align: center; line-height: 60px; font-size: 20px; background: #00bcd4; color: #fff; } .g-container { width: 1000px; margin: 0 auto; line-height: 2; color: #fff; } .g-container > div { margin-bottom: 50px; } /* 1.padding + margin + overflow 实现多列等高效果,兼容性好 */ .g-padmar { position: relative; overflow: hidden; } .g-padmar .g-left { float: left; width: 200px; background: #4caf50; padding-bottom: 9999px; margin-bottom: -9999px; } .g-padmar .g-right { float: left; width: 800px; background: #99afe0; padding-bottom: 9999px; margin-bottom: -9999px; } /* 2.border实现多列等高,左边框宽度为200px,左列浮动,伪元素清除浮动 */ .g-border { position: relative; width: 800px; border-left: 200px solid #4caf50; background: #99afe0; } .g-border::after { content: "."; display: block; height: 0; clear: both; } .g-border .g-right { width: 800px; } .g-border .g-left { float: left; width: 200px; margin-left: -200px; } /* 3.父元素线性渐变背景色实现多列等高(同理各种颜色障眼法) */ .g-lineargradient { background: linear-gradient(90deg, #4caf50 0, #4caf50 20%, #99afe0 20%, #99afe0); overflow: hidden; } .g-lineargradient .g-left { float: left; width: 200px; } .g-lineargradient .g-right { float: left; width: 800px; } /* 4.display:flex实现多列等高 */ .g-flex { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: stretch; } .g-flex .g-left { flex: 200px 0 0; background: #4caf50; } .g-flex .g-right { flex: auto 1 0; background: #99afe0; } /* 5.display:grid实现多列等高 */ .g-grid { display: grid; grid-template-columns: 200px auto; } .g-grid .g-left { background: #4caf50; } .g-grid .g-right { background: #99afe0; } /* 6.display:table-cell 实现多列等高 */ .g-table { overflow: hidden; display: table; } .g-table .g-left { width: 200px; display: table-cell; background: #4caf50; } .g-table .g-right { width: 800px; display: table-cell; background: #99afe0; }
效果:
本文作者: Jasmine
本文链接: https://www.jianbaizhan.com/article/706
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!