1. 程式人生 > >CSS兩欄佈局,左邊定寬,右邊自適應怎麼實現?

CSS兩欄佈局,左邊定寬,右邊自適應怎麼實現?

這是頁面佈局的一個經典問題,總結下幾種可行性的方法。

左邊佈局定好寬度,右邊佈局實現自適應。

方法一:可以用用flex佈局,給父容器設定 display:flex;Right部分設定 flex:1 ;left只是之前定好的寬度;

<!DOCTYPE html>
<html>
<head>
<title>佈局</title>
<meta charset="utf-8">
<style type="text/css">
.left{
  width: 300px;
  height: 200px;
  background-color: blue;
}
.box{
  display: flex;
}
.right{
  flex: 1;
  height: 200px;
  background-color: red;
}
</style>
</head>
<body> 
    <div class="box">  
         <div class="left">left</div>
         <div class="right">right</div> 
    </div>
</body>
</html>


方法二:左邊設定左浮動,右邊寬度設定100%;

<!DOCTYPE html>
<html>
<head>
<title>佈局</title>
<meta charset="utf-8">
<style type="text/css">
.left{
  width: 300px;
  height: 200px;
  background-color: blue;
}
.box{
  display: flex;
}
.right{
  flex: 1;
  height: 200px;
  background-color: red;
}
</style>
</head>
<body> 
    <div class="box">  
         <div class="left">left</div>
         <div class="right">right</div> 
    </div>
</body>
</html>


方法三:使用負margin為自適應部分新增容器 .container, 同時改變左右部分的位置,如下:

<!DOCTYPE html>
<html>
<head>
<title>佈局</title>
<meta charset="utf-8">
<style type="text/css">
.container{
 float: left;
 width: 100%;
}
.right{
 margin-left: 300px;
 height: 200px;
 background-color: red;
}
.left{
 float:left;
 margin-left: -100%;
 width: 300px;
 height: 200px;
 background-color: blue;
}

</style>
</head>
<body>
<div class="container">
<div class="right">right</div> 
</div>
    <div class="left">left</div>
</body>
</html>


方法四:設定浮動 + 在 css 中使用 calc(四則運算)函式


【分析】 1. 浮動。(注意:為了不影響其他元素,別忘了在父級上清除浮動) 2. calc() = calc(四則運算) 用於在 css 中動態計算長度值,需要注意的是,運算子前後都需要保留一個空格,例如:width: calc(100% - 10px) 3. 原理是利用vwviewport width。1vw = viewport 寬度的 1%, 100vw = viewport width, 同樣的還有 vh: viewport height。1vw = viewport 高度的 1%, 100vh = viewport height。 瀏覽器支援情況: 主流瀏覽器、IE10+  vw 和 vh 會隨著viewport 的變化而變化,因此十分適合於自適應場景來使用。

。。。