三栏布局(一)-------左右宽高固定,中间自适应

常见的页面布局有

1、左右宽度固定,中间自适应;

2、上下高度固定,中间自适应;

3、左宽度固定,右自适应;

4、上高度固定,下自适应,

下边是我看过网上的视频后写出来的三栏布局-左右宽高固定,中间自适应

有5种布局方式:float;    position;   flex;    table;   grid;

  1 <!DOCTYPE html><!-- html 5 -->
  2 <html>
  3 <head>
  4     <title>左中右三栏布局</title>
  5     <style type="text/css">
  6         html * {
  7             padding: 0;
  8             margin: 0;
  9         }
 10         .layout{
 11             width: 100%;
 12             margin-top: 15px;
 13         }
 14         .layout .three_columns > div{
 15             min-height: 150px;
 16             text-align: center;
 17         }
 18         .layout .three_columns > div.center > p{
 19             margin-top: 15px;
 20         }
 21     </style>
 22 </head>
 23 <body>
 24     <!-- 第一种三栏布局:float方式 -->
 25     <section class="layout float">
 26         <style type="text/css">
 27             .layout.float .left{
 28                 float: left;
 29                 width: 300px;
 30                 background: #90D9F7;
 31             }
 32             .layout.float .right{
 33                 float: right;
 34                 width: 300px;
 35                 background: #F5DE25;
 36             }
 37             .layout.float .center{
 38                 background: pink;
 39             }
 40         </style>
 41         <article class="three_columns">
 42             <div class="left"></div>
 43             <div class="right"></div>
 44             <div class="center">
 45                 <h1>三栏布局float布局</h1>
 46                 <p>优点:兼容性比较好
 47                    缺点:脱离文档流,清除浮动,处理与周边元素布局
 48                 </p>
 49                 <p>去掉高度后,内容会超出容器</p>
 50             </div>
 51         </article>
 52     </section>
 53 
 54     <!-- 第二种三栏布局:position方式 -->
 55     <section class="layout position">
 56         <style type="text/css">
 57             .layout.position .left{
 58                 position: absolute;
 59                 left: 0;
 60                 width: 300px;
 61                 background: #90D9F7;
 62             }
 63             .layout.position .center{
 64                 position: absolute;
 65                 left: 300px;
 66                 right: 300px;
 67                 background: pink;
 68             }
 69             .layout.position .right{
 70                 position: absolute;
 71                 right: 0;
 72                 width: 300px;
 73                 background: #F5DE25;
 74             }
 75         </style>
 76         <srticle class="three_columns">
 77             <div class="left"></div>
 78             <div class="center">
 79                 <h1>三栏布局position布局</h1>
 80                 <p>优点:快速布局
 81                    缺点:脱离文档流,可使用性差
 82                 </p>
 83                 <p>去掉高度后,内容会超出容器</p>
 84             </div>
 85             <div class="right"></div>
 86         </srticle>
 87     </section>
 88 
 89     <!-- 第三种三栏布局:flex方式 -->
 90     <section class="layout flexbox">
 91         <style type="text/css">
 92             .layout.flexbox{
 93                 margin-top: 180px;
 94             }
 95             .layout.flexbox .three_columns{
 96                 display: flex;
 97             }
 98             .layout.flexbox .left{
 99                 width:300px;
100                 background: #90D9F7;
101             }
102             .layout.flexbox .center{
103                 flex: 1;
104                 background: pink;
105             }
106             .layout.flexbox .right{
107                 width: 300px;
108                 background: #F5DE25;
109             }
110         </style>
111         <article class="three_columns">
112             <div class="left"></div>
113             <div class="center">
114                 <h1>三栏布局flex布局</h1>
115                 <p>解决上两种方案的缺陷,最好用的布局
116                 </p>
117                 <p>去掉高度后,容器会被内容撑开,还可以使用</p>
118             </div>
119             <div class="right"></div>
120         </article>
121     </section>
122 
123     <!-- 第四种三栏布局:table -->
124     <section class="layout table">
125         <style type="text/css">
126             .layout.table .three_columns{
127                 display: table;
128                 width: 100%;
129                 height: 150px;
130             }
131             .layout.table .three_columns>div{
132                 display: table-cell;
133             }
134             .layout.table .left{
135                 width: 300px;
136                 background: #90D9F7;
137             }
138             .layout.table .center{
139                 background: pink;
140             }
141             .layout.table .right{
142                 width: 300px;
143                 background: #F5DE25;
144             }
145         </style>
146         <article class="three_columns">
147             <div class="left"></div>
148             <div class="center">
149                 <h1>三栏布局table布局</h1>
150                 <p>
151                     优点:兼容性是最好的
152                     缺点:不好控制、当其中一个高度变,其他的高度也会变
153                 </p>
154                 <p>去掉高度后,容器会被内容撑开,还可以使用</p>
155             </div>
156             <div class="right"></div>
157         </article>
158     </section>
159 
160     <!-- 第五种三栏布局:grid -->
161     <section class="layout grid">
162         <style type="text/css">
163             .layout.grid .three_columns{
164                 width: 100%;
165                 display: grid;
166                 grid-template-rows: 150px;
167                 grid-template-columns: 300px auto 300px;
168             }
169             .layout.grid .left{
170                 background: #90D9F7; 
171             }
172             .layout.grid .center{
173                 background: pink;
174             }
175             .layout.grid .right{
176                 background: #F5DE25;
177             }
178         </style>
179         <article class="three_columns">
180             <div class="left"></div>
181             <div class="center">
182                 <h1>三栏布局grid布局</h1>
183                 <p>
184                     优点:兼容性是最好的
185                     缺点:不好控制、当其中一个高度变,其他的高度也会变
186                 </p>
187                 <p>去掉高度后,内容会超出容器</p>
188             </div>
189             <div class="right"></div>
190         </article>
191     </section>
192 </body>
193 </html>

下图是我的代码的运行结果:

我在上边总结了一下每种布局的优缺点,以及去掉高度后哪种布局还可以使用,如果各位有觉得不对的地方,欢迎大家帮我纠正!

 

 -THE END-

posted @ 2018-11-30 18:51  小时光不期而遇  阅读(791)  评论(0编辑  收藏  举报