CSS常用布局的实现
1. 幻灯片
1 <div class="slide"> 2 <!-- 图片省略 --> 3 <!-- 以下是指示器 --> 4 <div class="pointer"><i class="current"></i><i></i><i></i></div>
1 .slide{ 2 position: relative; 3 width: 200px; 4 height: 100px; 5 background-color: #bdd7ee; 6 margin: 0; 7 } 8 .slide .pointer{ 9 position: absolute; 10 right: 10px; 11 bottom: 10px; 12 line-height: 10px; 13 } 14 .slide .pointer i{ 15 display: inline-block; 16 width: 10px; 17 height: 10px; 18 margin: auto 5px; 19 border-radius: 10px; 20 background-color: black; 21 } 22 .slide .pointer i.current{ 23 background-color: white; 24 }
2. 水平居中
1 <div class="parent"> 2 <div class="child">DEMO</div> 3 </div>
1)第一种方法
1 .parent{ 2 text-align: center; 3 } 4 .child{ 5 display: inline-block; 6 }
2)第二种方法
1 .child{ 2 display: table; 3 margin: 0 auto; 4 }
3)第三种方法
1 .parent{ 2 height:1.5em; 3 position: relative; 4 } 5 .child{ 6 position: absolute; 7 left: 50%; 8 transform: translateX(-50%); 9 }
4)第四种方法
1 .parent{ 2 display: flex; 3 justify-content: center; 4 } 5 .child{ 6 margin: 0 auto; 7 }
3.垂直居中
1 <div class="parent"> 2 <div class="child">DEMO</div> 3 </div>
1)第一种方法
1 .parent{ 2 width:4em; 3 height:500px; 4 } 5 .child{ 6 width:100%; 7 } 8 .parent{ 9 display: table-cell; 10 vertical-align: middle; 11 }
2)第二种方法
1 .parent{ 2 width:4em; 3 height:500px; 4 } 5 .child{ 6 width:100%; 7 } 8 .parent{ 9 position: relative; 10 } 11 .child{ 12 position: absolute; 13 top: 50%; 14 transform: translateY(-50%); 15 }
3)第三种方法
1 .parent{ 2 width:4em; 3 height:500px; 4 } 5 .child{ 6 width:100%; 7 } 8 .parent{ 9 display: flex; 10 align-items: center; 11 }
4. 居中(水平垂直都居中)
1 <div class="parent"> 2 <div class="child">DEMO</div> 3 </div>
1)第一种方法
1 .parent{ 2 width:200px; 3 height:300px; 4 } 5 .parent{ 6 text-align: center; 7 display: table-cell; 8 vertical-align: middle; 9 } 10 .child{ 11 display: inline-block; 12 }
2)第二种方法
1 .parent{ 2 width:200px; 3 height:300px; 4 } 5 .parent{ 6 position: relative; 7 } 8 .child{ 9 position: absolute; 10 left: 50%; 11 top: 50%; 12 transform: translate(-50%,-50%); 13 }
3)第三种方法
1 .parent{ 2 width:200px; 3 height:300px; 4 } 5 .parent{ 6 display: flex; 7 justify-content: center; 8 align-items: center; 9 }
5. 多列布局——定宽与自适应
1 <div class="parent"> 2 <div class="left"> 3 <p>left</p> 4 </div> 5 <div class="right"> 6 <p>right</p> 7 <p>right</p> 8 </div> 9 </div>
1)第一种方法
1 .left{ 2 float: left; 3 width: 100px; 4 } 5 .right{ 6 margin-left: 120px; 7 }
2)第二种方法
1 <div class="parent"> 2 <div class="left"><p>left</p></div> 3 <div class="right-fix"> 4 <div class="right"> 5 <p>right</p><p>right</p> 6 </div> 7 </div> 8 </div>
1 .left{ 2 float: left; width: 100px; 3 position: relative; 4 } 5 .right-fix{ 6 float: right; width: 100%; 7 margin-left: -100px; 8 } 9 .right{ 10 margin-left: 120px; 11 }
3)第三种方法
1 .left{ 2 float: left; 3 width: 100px; 4 margin-right: 20px; 5 } 6 .right{ 7 overflow: hidden; 8 }
4)第四种方法
1 .parent{ 2 display: table; width: 100%; 3 table-layout: fixed; 4 } 5 .left,.right{ 6 display: table-cell; 7 } 8 .left{ 9 width: 100px; 10 padding-right: 20px; 11 }
5)第五种方法
1 .parent{ 2 display: flex; 3 } 4 .left{ 5 width: 100px; 6 margin-right: 20px; 7 } 8 .right{ 9 flex: 1; 10 }
6. 等分
1 <div class="parent"> 2 <div class="column"><p>1</p></div> 3 <div class="column"><p>2</p></div> 4 <div class="column"><p>3</p></div> 5 <div class="column"><p>4</p></div> 6 </div>
1)第一种方法
1 .parent{ 2 margin-left: -20px; 3 } 4 .column{ 5 float: left; 6 width: 25%; 7 padding-left: 20px; 8 box-sizing: border-box; 9 }
2)第二种方法
1 <div class="parent-fix"> 2 <div class="parent"> 3 <div class="column"><p>1</p></div> 4 <div class="column"><p>2</p></div> 5 <div class="column"><p>3</p></div> 6 <div class="column"><p>4</p></div> 7 </div> 8 </div>
1 .parent-fix{ 2 margin-left: -20px; 3 } 4 .parent{ 5 display: table; 6 width:100%; 7 table-layout: fixed; 8 } 9 .column{ 10 display: table-cell; 11 padding-left: 20px; 12 }
3)第三种方法
1 .parent{ 2 display: flex; 3 } 4 .column{ 5 flex: 1; 6 } 7 .column+.column{ 8 margin-left:20px; 9 }
7. 等高
1 <div class="parent"> 2 <div class="left"> 3 <p>left</p> 4 </div> 5 <div class="right"> 6 <p>right</p> 7 <p>right</p> 8 </div> 9 </div>
1)第一种方法
1 .parent{ 2 display: table; width: 100%; 3 table-layout: fixed; 4 } 5 .left,.right{ 6 display: table-cell; 7 } 8 .left{ 9 width: 100px; 10 padding-right: 20px; 11 }
2)第二种方法
1 .parent{ 2 display: flex; 3 } 4 .left{ 5 width: 100px; 6 margin-right: 20px; 7 } 8 .right{ 9 flex: 1; 10 }
3)第三种方法
1 .parent{ 2 overflow: hidden; 3 } 4 .left,.right{ 5 padding-bottom: 9999px; 6 margin-bottom: -9999px; 7 } 8 .left{ 9 float: left; width: 100px; 10 margin-right: 20px; 11 } 12 .right{ 13 overflow: hidden; 14 }
8. 全屏布局
1 <div class="parent"> 2 <div class="top">top</div> 3 <div class="left">left</div> 4 <div class="right"><div class="inner">right</div></div> 5 <div class="bottom">bottom</div> 6 </div>
1)第一种方法
1 html,body,.parent{margin:0;height:100%;overflow:hidden;} 2 body{color:white;} 3 .top{ 4 position:absolute;top:0;left:0;right:0;height:100px; 5 background:blue; 6 } 7 .left{ 8 position:absolute;left:0;top:100px;bottom:50px;width:200px; 9 background:red; 10 } 11 .right{ 12 position:absolute;left:200px;top:100px;bottom:50px;right:0; 13 background:pink;overflow: auto; 14 } 15 .right .inner{min-height: 1000px;} 16 .bottom{ 17 position:absolute;left:0;right:0;bottom:0;height:50px; 18 background: black; 19 }
2)第二种方法
1 html,body,.parent{margin:0;height:100%;overflow:hidden;} 2 body{color: white;} 3 .parent{display: flex;flex-direction: column;} 4 .top{height:100px;background: blue;} 5 .bottom{height:50px;background: black;} 6 .middle{flex:1;display:flex;} 7 .left{width:200px;background: red;} 8 .right{flex: 1;overflow: auto;background:pink;} 9 .right .inner{min-height: 1000px;}

浙公网安备 33010602011771号