经典三列布局两侧定宽中间自适应

方式一:

利用flex布局 

      <style>
		    .all{display: flex;}
			.div1{width: 200px;background-color: #f00;height:300px;font-size:20px}
			.div2{flex:1;background-color: #0f0;height:300px;font-size:20px}
			.div3{width: 200px;background-color: #00f;height:300px;font-size:20px} 
			

		</style>
	
	<div class="all">
		<div class="div1">
			定宽200px
		</div>
		<div class="div2">
			自适应撑满剩下的空间
		</div>
		<div class="div3">
			定宽200px
		</div>
		
	</div>

 

 

方式二

看中间栏如何处理。我们知道对于float元素,其会脱离文档流,其他盒子也会无视这个元素。(但其他盒子内的文本依然会为这个元素让出位置,环绕在周围。)所以此时只需在container容器内添加一个正常的div,其会无视left和right,撑满整个container,只需再加上margin为left right流出空间即可


		<style>
	
        .left {
            float: left;
            width: 100px;
            height: 200px;
            background-color: red;
        }
        .main{
            background: bisque;
            height: 200px;
            margin-left: 110px;
            margin-right: 110px
        }
        
        .right {
            float: right;
            width: 100px;
            height: 200px;
            background-color: yellow;
        }
			
			
	</style>

       <div class="all">
            <div class="left">
                1111111
            </div>
            <div class="right">
                333333
            </div>
            <div class="main">
            
            </div>
            
        </div>
            

 

 

接下来再来

方式三 bfc布局

BFC(块格式化上下文)规则规定:BFC不会和浮动元素重叠。所以如果将main元素设定为BFC元素即可:

第一个应该是先渲染left right,然后中间那个middle后渲染,只能占据中间所有位置了。

所以此刻要注意right与middle的位置,如果是middle在前,right会另起一行,因为middle把left预留的位置占满了,所以right只能另起一行了

 .left {
            float: left;
            width: 100px;
            height: 200px;
            background-color: red;
        }
        .main{
            background: bisque;
            height: 200px;
            overflow: hidden;
        }
        
        .right {
            float: right;
            width: 100px;
            height: 200px;
            background-color: yellow;
        }
       <div class="all">
            <div class="left">
                1111111
            </div>
            <div class="right">
                333333
            </div>
            <div class="main">
            
            </div>
            
        </div>

方式四

利用绝对定位 其实是考到bfc的应用

  .content{
       position: relative;
    }
    .left{
       position: absolute;
       left: 0;
       width: 200px;
       background: red;
    }
    .middle{
        background: green;
        overflow: hidden;
    }
    .right{
       position:absolute;
       right: 0;
        width: 200px;
        background: blue;
    }
  <div class="content">
        <div class="left">
            左
        </div>
        
        <div class="right">
            右
        </div>
   
        <div class="middle">
            中
        </div>
       

    </div>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值