3-21 三列布局的其他方法补充

引言

前边说了三列布局的三种方法,博主经过了解发现,原来还有其他的办法,今天我们就来聊一聊其他的方法

方法一:calc实现三列布局

css

                     .outer{
				height: 300px;
			}
			.left{
				float: left;
				width: 100px;
				height: 300px;
				background-color: blueviolet;
                                /*负父容器的宽度,即可移到对应的位置*/
				margin-left: -100%;
			}
			.content{
				/* 使用 calc 计算 内容所占的空间 */
				width: calc(100% - 200px);
				float: left;
				background: crimson;
				height: 300px;
                                /*将左右位置空开留给左右box*/
				margin: 0 100px;
			}
			.right{
				width: 100px;
				float: right;
				background-color: aqua;
				height: 300px;
                                /*负自身的宽度,即可移动到原来的位置*/
				margin-left: -100px;
			}

html

  <div class="outer">
	<div class="content"></div>
	<div class="left"></div>
	<div class="right"></div>
    </div>

分析:

  1. 优点,内容盒子优先渲染,可以进行等高布局
  2. 缺点,兼容性差,主要针对ie

综上所述我们来看看,使用这种布局实现等高布局

css

                        .outer{
				overflow-y: hidden;
			}
			.left{
				float: left;
				width: 100px;
				background-color: blueviolet;
				margin-left: -100%;
				padding-bottom: 10000px;
				margin-bottom: -10000px;
			}
			.content{
				/* 使用 calc 计算 内容所占的空间 */
				width: calc(100% - 200px);
				float: left;
				background: crimson;
				margin: 0 100px;
				padding-bottom: 10000px;
				margin-bottom: -10000px;
			}
			.right{
				width: 100px;
				float: right;
				background-color: aqua;
				margin-left: -100px;
				padding-bottom: 10000px;
				margin-bottom: -10000px;
			}

html

                    <div class="outer">
			<div class="content">
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
			</div>
			<div class="left">
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
			</div>
			<div class="right">
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
				我是内容盒子 <br>
			</div>
		</div>

解释
已知padding-box中是无法右内容的,padding-bottom向下撑开容器的高度,在使用margin-bottom将其实际所占空间,减少撑开的高度 ,实际外观没有发生改变,但实际高度却回归到原大小,父级使用overflow: hidden;将溢出内容盒子的部分隐藏,达到三列完全相等的状态


overflow: hidden 只针对内容盒子的溢出情况,

posted @ 2022-03-21 14:22  林见夕  阅读(33)  评论(0编辑  收藏  举报