双飞翼布局

实现双飞翼布局的五种方法

  • 浮动
  • 绝对定位
  • flex布局
  • table
  • grid

浮动
浮动的实现,就是直接将左右两边的块实现左右浮动,中间实现自适应

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>浮动</title>    <style>        * {            margin: 0;            padding: 0;        }                section div {            height: 200px;        }                .left {            width: 300px;            float: left;            background-color: pink;        }                .right {            width: 300px;            float: right;            background-color: blue;        }                .center {            background-color: red;        }    </style></head><body>    <section>        <div class="left"></div>        <div class="right"></div>        <div class="center">            浮动布局        </div>    </section></body></html>

绝对定位
实现方法将三块div实现绝对定位,将左右两块div分别设置left和right为0,中间实现left和right各为左右两边的宽度

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>绝对定位</title>    <style>        * {            margin: 0;            padding: 0;        }                section div {            height: 200px;            position: absolute;        }                .left {            width: 300px;            left: 0;            background-color: pink;        }                .right {            width: 300px;            right: 0;            background-color: blue;        }                .center {            left: 300px;            right: 300px;            background-color: red;        }    </style></head><body>    <section>        <div class="left"></div>        <div class="center">            absolute布局        </div>        <div class="right"></div>    </section></body></html>

flex布局

实现方式:将外层的块级元素设置flex,将中间的块级元素设置为flex:1

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>flex</title>    <style>        * {            margin: 0;            padding: 0;        }        /* 外边框增加display:flex */                section {            display: flex;        }                section div {            height: 200px;        }                .left {            width: 300px;            background-color: pink;        }                .right {            width: 300px;            background-color: blue;        }                .center {            flex: 1;            background-color: red;        }    </style></head><body>    <section>        <div class="left"></div>        <div class="center">            flex布局        </div>        <div class="right"></div>    </section></body></html>

表格布局

实现方式:将外层块级元素设置display:table,分别设置左右两个块级元素固定宽,中间块级元素自适应

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>表格布局</title>    <style>        * {            margin: 0;            padding: 0;        }        /* 外边框设置table布局,并设置宽度为100% */                section {            display: table;            width: 100%;        }                section div {            height: 200px;            display: table-cell;        }                .left {            width: 300px;            background-color: pink;        }                .right {            width: 300px;            background-color: blue;        }                .center {            background-color: red;        }    </style></head><body>    <section>        <div class="left"></div>        <div class="center">            table布局        </div>        <div class="right"></div>    </section></body></html>

grid布局

实现方式:外边框设置grid布局,并设置宽度为100% ,设置grid-template-rows和grid-template-columns

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>grid布局</title>    <style>        * {            margin: 0;            padding: 0;        }                section {            display: grid;            grid-template-rows: 200px;            grid-template-columns: 300px auto 300px;            width: 100%;        }                .left {            background-color: pink;        }                .right {            background-color: blue;        }                .center {            background-color: red;        }    </style></head><body>    <section>        <div class="left"></div>        <div class="center">            grid布局        </div>        <div class="right"></div>    </section></body></html>