css实现多种方法多列等高布局

作者:Jasmine - 2020年12月10日

多列等高,要求左右两列高度自适应且一样,分别设置不同背景色.分别是以下几种方式:

 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 许可协议。转载请注明出处!


 请勿发布不友善或者负能量的内容。审查将对发布广告等违规信息进行处罚!