题目
假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应。
解答
1.浮动布局;
2.绝对定位;
3.flexbox解决;
4.table-cell表格布局;
5.grid网格布局。
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
| <!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>
|