页面布局

如果高度确定,怎么进行三栏布局,左右300px,中间自适应

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Layout</title>
    <style media="screen">
      html *{
        padding: 0;
        margin: 0;
      }
      .layout article div{
        min-height: 100px;
      }
    </style>
  </head>
  <body>
    <!--浮动布局  -->
    <section class="layout float">
      <style media="screen">
      .layout.float .left{
        float:left;
        width:300px;
        background: red;
      }
      .layout.float .center{
        background: yellow;
      }
      .layout.float .right{
        float:right;
        width:300px;
        background: blue;
      }
      </style>
      <h1>三栏布局</h1>
      <article class="left-right-center">
        <div class="left"></div>
        <div class="right"></div>
        <div class="center">
          <h2>浮动解决方案</h2>
          1.这是三栏布局的浮动解决方案;
          2.这是三栏布局的浮动解决方案;
          3.这是三栏布局的浮动解决方案;
          4.这是三栏布局的浮动解决方案;
          5.这是三栏布局的浮动解决方案;
          6.这是三栏布局的浮动解决方案;
        </div>
      </article>
    </section>

    <!-- 绝对布局 -->
    <section class="layout absolute">
      <style>
        .layout.absolute .left-center-right>div{
          position: absolute;
        }
        .layout.absolute .left{
          left:0;
          width: 300px;
          background: red;
        }
        .layout.absolute .center{
          left: 300px;
          right: 300px;
          background: yellow;
        }
        .layout.absolute .right{
          right:0;
          width: 300px;
          background: blue;
        }
      </style>
      <h1>三栏布局</h1>
      <article class="left-center-right">
        <div class="left"></div>
        <div class="center">
          <h2>绝对定位解决方案</h2>
          1.这是三栏布局的浮动解决方案;
          2.这是三栏布局的浮动解决方案;
          3.这是三栏布局的浮动解决方案;
          4.这是三栏布局的浮动解决方案;
          5.这是三栏布局的浮动解决方案;
          6.这是三栏布局的浮动解决方案;
        </div>
        <div class="right"></div>
      </article>
    </section>


    <!-- flexbox布局 -->
    <section class="layout flexbox">
      <style>
        .layout.flexbox{
          margin-top: 110px;
        }
        .layout.flexbox .left-center-right{
          display: flex;
        }
        .layout.flexbox .left{
          width: 300px;
          background: red;
        }
        .layout.flexbox .center{
          flex:1;
          background: yellow;
        }
        .layout.flexbox .right{
          width: 300px;
          background: blue;
        }
      </style>
      <h1>三栏布局</h1>
      <article class="left-center-right">
        <div class="left"></div>
        <div class="center">
          <h2>flexbox解决方案</h2>
          1.这是三栏布局的浮动解决方案;
          2.这是三栏布局的浮动解决方案;
          3.这是三栏布局的浮动解决方案;
          4.这是三栏布局的浮动解决方案;
          5.这是三栏布局的浮动解决方案;
          6.这是三栏布局的浮动解决方案;
        </div>
        <div class="right"></div>
      </article>
    </section>


    <!-- 表格布局 -->
    <section class="layout table">
      <style>
        .layout.table .left-center-right{
          width:100%;
          height: 100px;
          display: table;
        }
        .layout.table .left-center-right>div{
          display: table-cell;
        }
        .layout.table .left{
          width: 300px;
          background: red;
        }
        .layout.table .center{
          background: yellow;
        }
        .layout.table .right{
          width: 300px;
          background: blue;
        }
      </style>
      <h1>三栏布局</h1>
      <article class="left-center-right">
        <div class="left"></div>
        <div class="center">
          <h2>表格布局解决方案</h2>
          1.这是三栏布局的浮动解决方案;
          2.这是三栏布局的浮动解决方案;
          3.这是三栏布局的浮动解决方案;
          4.这是三栏布局的浮动解决方案;
          5.这是三栏布局的浮动解决方案;
          6.这是三栏布局的浮动解决方案;
        </div>
        <div class="right"></div>
      </article>
    </section>

    <!-- 网格布局 -->
    <section class="layout grid">
      <style>
        .layout.grid .left-center-right{
          width:100%;
          display: grid;
          grid-template-rows: 100px;
          grid-template-columns: 300px auto 300px;
        }
        .layout.grid .left{
          width: 300px;
          background: red;
        }
        .layout.grid .center{
          background: yellow;
        }
        .layout.grid .right{

          background: blue;
        }
      </style>
      <h1>三栏布局</h1>
      <article class="left-center-right">
        <div class="left"></div>
        <div class="center">
          <h2>网格布局解决方案</h2>
          1.这是三栏布局的浮动解决方案;
          2.这是三栏布局的浮动解决方案;
          3.这是三栏布局的浮动解决方案;
          4.这是三栏布局的浮动解决方案;
          5.这是三栏布局的浮动解决方案;
          6.这是三栏布局的浮动解决方案;
        </div>
        <div class="right"></div>
      </article>
    </section>
  </body>
</html>

这是比较普遍的五种方案。

优缺点:

1.float布局:把清除浮动和周围元素的关系处理好就兼容性比较好。缺点是脱离文档流容易出问题。
2.position布局: 快捷,容易实现。但是脱离文档流导致子元素也脱离文档流,可使用性比较差。
3.flexbox布局: 比较完美的一种方案,为了解决以上两种方案的不足出现的。移动端基本都是这种布局方案。因为是CSS3的属性,所以对旧版本的浏览器不友好。
4.表格布局: 有时候麻烦,操作繁琐,高度改变之后其他单元格也跟着改变。但是兼容性非常好。
5.网格布局: 参考栅格布局。可以解决很多复杂的事情但是代码量要简化的多。

改变前提,高度不可知

高度不确定的情况下float,position跟网格布局会出现问题。所以flexbox跟表格布局会是高度未知情况下的好的解决方案

需要加强基础,基础不牢固给人留下的印象可能不太好

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。