1. 程式人生 > >css的幾種佈局方式都在這

css的幾種佈局方式都在這

說道佈局方式,是我們經常遇到的問題,下面我們就來講解css的常見的一些佈局方式。

1.雙飛翼佈局(兩邊定寬,中間自適應)

主要是通過浮動與margin實現,程式碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<title>雙飛翼佈局</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}
			
			body {
				min-width: 700px;
			}
			
			.header,
			.footer {
				border: 1px solid #333;
				background: #aaa;
				text-align: center;
			}
			
			.left,
			.main,
			.right {
				float: left;
				min-height: 130px;
			}
			
			.left {
				margin-left: -100%;
				width: 200px;
				background: gold;
			}
			
			.right {
				margin-left: -220px;
				width: 220px;
				background: greenyellow;
			}
			
			.main {
				width: 100%;
			}
			
			.main-inner {
				margin-left: 200px;
				margin-right: 220px;
				min-height: 130px;
				background: olivedrab;
				word-break: break-all;
			}
			
			.footer {
				clear: both;
			}
		</style>
	</head>

	<body>
		<div class="header">
			<h4>header</h4>
		</div>
		<div class="main">
			<div class="main-inner">
				<h4>main</h4>
			</div>
		</div>
		<div class="left">
			<h4>left</h4>
		</div>

		<div class="right">
			<h4>right</h4>
		</div>
		<div class="footer">
			<h4>footer</h4>
		</div>
	</body>

</html>

效果圖如下: 

 

2.聖盃佈局(兩邊定寬,中間自適應的另一種實現方式,這兩種方式在結構的書寫上還是有不一樣的)

主要是用相對定位與浮動和padding實現,程式碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>聖盃佈局</title>
<style type="text/css">
    *{margin: 0;padding: 0;}
    body{min-width: 700px;}
    .header,
    .footer{ 
        border: 1px solid #333;
        background: #aaa;
        text-align: center;
    }
    .left,
    .middle,
    .right{ 
        position: relative;
        float: left;
        min-height: 130px;
    }
    .container{
        padding:0 220px 0 200px;
        overflow: hidden;
    }
    .left{
        margin-left: -100%;
        left: -200px;
        width: 200px;
        background: olive;
    }
    .right{
        margin-left: -220px;
        right: -220px;
        width: 220px;
        background: gold;
    }
    .middle{ 
        width: 100%;
        background: orchid;
        word-break: break-all;

    }
    .footer{ 
        clear: both;
    }
</style>
</head>
<body>
<div class="header">
    <h4>header</h4>
</div>
<div class="container">
    <div class="middle">
        <h4>middle</h4>   
    </div>
    <div class="left">
        <h4>left</h4>  
    </div>
    <div class="right">
        <h4>right</h4>
    </div>
</div>
<div class="footer">
    <h4>footer</h4>
</div>
</body>
</html>

效果圖如下: 

 

3.常見的也是最普通的盒模型佈局,定位

這種主要就是利用padding,margin,float ,相對定位,絕對定位以及固定定位的幾種方式佈局。

4.flex彈性盒子佈局:

flex是css提出的一個新屬性,主要用法有這幾個:把容器變成彈性盒子:display:flex ,決定主軸方向:flex-direction:colum(預設為主軸),換不換行:flex-wrap,主軸對齊方式:justify-content,交叉軸對齊方式:align-items,更多詳細用法可以去flex網站上看。

5.媒體查詢@media,主要是用在移動端的相容不同裝置上的佈局上

@media screen and (max-width: 300px) {
    body {
        background-color:lightblue;
    }
}

6.通過rem單位(這個也不能說是佈局方式吧,只是通過螢幕大小自適應字型的變化,rem單位是相對根元素字型大小決定的,我們大可以根據js監聽螢幕變化然後改變根元素字型大小,從而達到縮放字型大小的目的)

function getRootFontsize(){
		var root=document.documentElement
		//獲取螢幕寬度
		var clientwidth=root.clientWidth
		//改變根元素字型大小
		root.style.fontSize=clientwidth*100/750+"px"
	}
window.addEventListener("orientationchange",getRootFontsize)// 監聽橫豎屏變化
window.addEventListener("resize",getRootFontsize)//監聽瀏覽器視窗大小變化

7.運用框架:比如elementui有layout佈局,bootstrap有柵格系統,每種UI框架都有自己的佈局方式

element-ui的佈局方式:

<el-row>
  <el-col :span="24"><div class="grid-content bg-purple-dark"></div></el-col>
</el-row>
<el-row>
  <el-col :span="12"><div class="grid-content bg-purple"></div></el-col>
  <el-col :span="12"><div class="grid-content bg-purple-light"></div></el-col>
</el-row>