一欄固定一欄自適應

實現代碼:
<!DOCTYPE html>
<html>
<head>
<title>自適應布局-一欄固定一欄自適應</title>
<meta charset="utf-8">
<style type="text/css">
*{
padding: 0;
margin: 0;
}
#left{
height: 600px;
width: 200px;
float: left;
background-color: #fffc00;
}
#main{
height: 600px;
width: auto;
background-color: #03c03c;
}
</style>
</head>
<body>
<div id="left">left 固定寬度</div>
<div id="main">main 自適應寬度</div>
</body>
</html>
左右兩欄固定,中間自適應

- 方法一 :使用float浮動
自身浮動法的原理就是使用對左右使用分別使用float:left和float:right,float使左右兩個元素脫離文檔流,中間元素正常在正常文檔流中,使用margin指定左右外邊距對其進行一個定位。
<!DOCTYPE html>
<html>
<head>
<title>自適應布局</title>
<meta charset="utf-8">
<style type="text/css">
*{
padding: 0;
margin: 0;
}
#container{
width: 100%;
margin: 0 auto;
}
#left{
width: 200px;
height: 600px;
float: left;
background-color: #fffc00;
}
#right{
width: 100px;
height: 600px;
float: right;
background-color: orange;
}
#main{
height: 600px;
margin-left: 0 100px 0 200px;
background-color: #03c03c;
}
</style>
</head>
<body>
<div id="container">
<div id="left">left 200px</div>
<div id="right">right 100px</div>
<div id="main">main 自適應</div>
</div>
</body>
</html>
- 方法二:使用絕對定位
絕對定位法原理是將左右兩邊使用absolute定位,因為絕對定位使其脫離文檔流,后面的center會自然流動到他們上面,然后使用margin屬性,留出左右元素的寬度,既可以使中間元素自適應屏幕寬度。
<!DOCTYPE html>
<html>
<head>
<title>自適應布局</title>
<meta charset="utf-8">
<style type="text/css">
*{
padding: 0;
margin: 0;
}
#left{
width: 200px;
height: 600px;
position: absolute;
top: 0;
left: 0;
background-color: #fffc00;
}
#right{
width: 100px;
height: 600px;
position: absolute;
top: 0;
right: 0;
background-color: orange;
}
#main{
height: 600px;
position: absolute;
left: 200px;
right: 100px;
top: 0;
background-color: #03c03c;
}
</style>
</head>
<body>
<div id="left">left 200px</div>
<div id="right">right 100px</div>
<div id="main">main 自適應</div>
</body>
</html>
- 方法三:使用負margin(聖杯布局)
聖杯布局的原理是margin負值法。使用聖杯布局首先需要在center元素外部包含一個div,包含div需要設置float屬性使其形成一個BFC,並設置寬度,並且這個寬度要和left塊的margin負值進行配合,具體原理參考這里。這里對聖杯布局解釋特別詳細。
<!DOCTYPE html>
<html>
<head>
<title>自適應布局</title>
<meta charset="utf-8">
<style type="text/css">
*{
padding: 0;
margin: 0;
}
#wrap{
width: 100%;
float: left;
}
#main{
height: 600px;
margin: 0 100px 0 200px;
background-color: #03c03c;
}
#left{
width: 200px;
height: 600px;
float: left;
margin-left: -100%;
background-color: #fffc00;
}
#right{
width: 100px;
height: 600px;
float: left;
margin-left: -100px;
background-color: orange;
}
</style>
</head>
<body>
<div id="wrap">
<div id="main">main 自適應</div>
</div>
<div id="left">left 200px</div>
<div id="right">right 100px</div>
</body>
</html>
- 方法四:使用flex(css3新特性)
<!DOCTYPE html>
<html>
<head>
<title>自適應布局</title>
<meta charset="utf-8">
<style type="text/css">
*{
padding: 0;
margin: 0;
}
#container{
width: 100%;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flex;
display: -o-flex;
display: flex;
}
#left{
width: 200px;
height: 600px;
background-color: #fffc00;
}
#main{
width: auto;
height: 600px;
background-color: #03c03c;
-webkit-flex: 1;
-moz-flex: 1;
-ms-flex: 1;
-o-flex: 1;
flex: 1;
}
#right{
width: 100px;
height: 600px;
background-color: orange;
}
</style>
</head>
<body>
<div id="container">
<div id="left">left 200px</div>
<div id="main">main 自適應</div>
<div id="right">right 100px</div>
</div>
</body>
</html>
