实现自适应宽度的五种布局方式

题目写一个三栏布局; 高度固定 左边300px,右边300px;中间自适应;

1 :float 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .main.warpper>div{

            height: 100px;
        }
        .main.warpper .left{
            width: 300px;
            float:left;
            background: red;
        }
        .main.warpper .center{
            background: yellow;
        }
        .main.warpper .right{
            background: blue;
            width: 300px;
            float:right;
        }

    </style>
</head>
<body>

 <div class="main warpper">
     <div class="left"></div>
     <div class="right"></div> 
     <div class="center">float布局</div>

 </div>
</body>
</html>

注意 居中的位置的盒子 放在最后面  ,触发了bfc;

2,position

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .main.warpper>div{

            height: 100px;
            position: absolute;
        }
        .main.warpper .left{
            width: 300px;
             left:0;
            background: red;
        }
        .main.warpper .center{
            left:300px;
            right:300px;
            background: yellow;
        }
        .main.warpper .right{
            width: 300px;
            right:0;
            background: red;
        }

    </style>
</head>
<body>

 <div class="main warpper">
     <div class="left"></div>
     <div class="right"></div>
     <div class="center">position布局</div>

 </div>
</body>
</html>

利用position 使中间自适应撑开 且自适应

3 flex:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .main.warpper{

            height: 100px;
            display: flex;
        }
        .main.warpper .left{
            width: 300px;
           flex:1;
            background: red;
        }
        .main.warpper .center{
            flex:1;
            background: yellow;
        }
        .main.warpper .right{
            flex:1;
            background: blue;
            width: 300px;
         }

    </style>
</head>
<body>

 <div class="main warpper">
     <div class="left"></div>
     <div class="center">flex布局</div>
     <div class="right"></div>


 </div>
</body>
</html>

4,table-cell布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .main.warpper{
          width: 100%;
            height: 100px;
            display: table;
        }
        .main.warpper .left{
            width: 300px;
          display: table-cell;
            background: red;
        }
        .main.warpper .center{
            display: table-cell;
            background: yellow;
        }
        .main.warpper .right{
            display: table-cell;
            background: blue;
            width: 300px;
        }

    </style>
</head>
<body>

 <div class="main warpper">
     <div class="left"></div>
     <div class="center">table布局</div>
     <div class="right"></div>
 </div>
</body>
</html>

5,grid网格布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .main.warpper{
             width: 100%;
            display: grid;
            grid-template-rows:100px;
            grid-template-columns: 300px auto 300px;
        }
        .main.warpper .left{
            background: red;
        }
        .main.warpper .center{
            background: yellow;
        }
        .main.warpper .right{
            background: blue;
        }

    </style>
</head>
<body>

 <div class="main warpper">
     <div class="left"></div>
     <div class="center">grid布局</div>
     <div class="right"></div>
 </div>
</body>
</html>

总结一下 :

1, float布局的问题:需要经常清除浮动,兼容性会不错;

2,position ,自由简单,但是太粗放了 不推荐;

3,flex ,兼容性一般, 但是 很好用啊;

4,table-cell 兼容性不错,也很合理 ,逐渐被废弃;

5,grid  css3的扩展 未来的趋势 代码量很少;

 

如果高度也不固定的话 那么flex 布局和table-cell布局能满足,其他的都要手动改

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值