题目

假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应。

解答

1.浮动布局;

2.绝对定位;

3.flexbox解决;

4.table-cell表格布局;

5.grid网格布局。

代码实现

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>   html *{   padding: 0;   margin: 0;   }   .layout{margin-top:20px;   }   .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 .right{float: right;width:300px;background:green;}.layout.float .center{background:yellow;}</style><article class="left-right-center"><div class="left"></div><div class="right"></div><div class="center"><h1>浮动解决方案</h1></div></article></section><section class="layout absolute"><style>.layout.absolute .left-center-right>div{position: absolute;}.layout.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:green;}</style><article class="left-center-right"><div class="left"></div><div class="center">   <h1>绝对定位解决</h1></div><div class="right"></div></article></section><section class="layout flexbox"><style>.layout.flexbox{margin-top: 140px;}.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:green;}</style><article class="left-center-right"><div class="left"></div><div class="center"><h1>flexbox解决方案</h1></div><div class="right"></div></article></section><section class="layout table"><style>.layout.table .left-center-right{width: 100%;display: table;height: 100px;}.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:green;}</style><article class="left-center-right"><div class="left"></div><div class="center"><h1>表格布局</h1></div><div class="right"></div></article></section><section class="layout grid"><style media="screen">.layout.grid .left-center-right{display: grid;width:100%;grid-template-rows: 100px;grid-template-columns: 300px auto 300px;}.layout.grid .left{background:red;}.layout.grid .center{background:yellow;}.layout.grid .right{background: green;}</style><article class="left-center-right"><div class="left"></div><div class="center"><h1>网格布局</h1></div><div class="right"></div></article></section></body></html>