DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> DIV十CSS布局 >> 布局實例 >> 垂直三欄布局擁有相同高度的方法
垂直三欄布局擁有相同高度的方法
編輯:布局實例     

 我們都了解擁有相同高度的布局是很麻煩的事,有很多相關資料提到過相關設計方法,所以在這我就不多做解釋了。

最近在研究一個兩個欄目的動態布局,每個欄目背景不同。我立刻想起了Dan Cederholm的Faux Columns,但我仍然需要一個動態布局的方法。我又看了完美布局的文章One True Layout,但是有很多bug,需要許多注釋和程序。甚至考慮用JavaScrip來實現欄目始終保持同一高度,但是不行。絕望之余,幾乎要用table布局,不,一定還有更好的方法。我想著一個問題“盒子外面是什麼”,border!如果我可以使“sidebar”(或"rail")的div相對與“content”的div浮動,就可以實現多欄目相同高度。這個方法在很多地方介紹過:Douglas Livingstone的introduced ,Holly的extended John Bergevin的Position Is Everything。由one true layout的方法發展而來,用更簡潔清楚的代碼 實現了兩個欄目的動態變化。下面是代碼:

HTML:

 

<div id="container">
  <div id="content">This is<br />some content</div>
  <div id="rail">This is the rail</div>
</div>

CSS:
#container{
  background-color:#0ff;
  overflow:hidden;
  width:750px;
}
#content{
  background-color:#0ff;
  width:600px;
  border-right:150px solid #f00; &raquo;
  /* The width and color of the rail */
  margin-right:-150px; /* Hat tip to Ryan Brill */
  float:left;
}
#rail{
  background-color:#f00;
  width:150px;
  float:left;
}

 

<div id="container">
  <div id="content">This is<br />some content</div>
  <div id="rail">This is the rail</div>
</div>

CSS:
#container{
  background-color:#0ff;
  overflow:hidden;
  width:750px;
}
#content{
  background-color:#0ff;
  width:600px;
  border-right:150px solid #f00; &raquo;
  /* The width and color of the rail */
  margin-right:-150px; /* Hat tip to Ryan Brill */
  float:left;
}
#rail{
  background-color:#f00;
  width:150px;
  float:left;
}

給content div右加border,顏色寬度和rail一樣,並相對與rail浮動。Margin:-150px;使rail div移到margin騰出的空間。如果content div變的比rail div 高,border隨content div變高。視覺效果就是好像rail div也在變高。container的顏色設定和content div一樣,如果rail div達到最高,container隨之變高,這樣就給我們content變高的效果。
看看效果。See it in action 。試改變字體大小,布局隨之變化。

3個欄目:3個顏色
3個欄目的布局有點不同:直接給container div加border.

HTML:

 

<div id="container">
  <div id="center">CENTER<br />COLUMN CENTER</div>
  <div id="leftRail">LEFT RAIL</div>
  <div id="rightRail">RIGHT RAIL</div>
</div>

CSS:
#container{
  background-color:#0ff;
  float:left;
  width:500px;
  border-left:150px solid #0f0; &raquo; 
  /* The width and color of the left rail */
  border-right:200px solid #f00; &raquo; 
  /* The width and color of the right rail */
}
#leftRail{
  float:left;
  width:150px;
  margin-left:-150px;
  position:relative;
}
#center{
  float:left;
  width:500px;
  margin-right:-500px;
}
#rightRail{
  float:right;
  width:200px;
  margin-right:-200px;
  position:relative;
}

 

<div id="container">
  <div id="center">CENTER<br />COLUMN CENTER</div>
  <div id="leftRail">LEFT RAIL</div>
  <div id="rightRail">RIGHT RAIL</div>
</div>

CSS:
#container{
  background-color:#0ff;
  float:left;
  width:500px;
  border-left:150px solid #0f0; &raquo; 
  /* The width and color of the left rail */
  border-right:200px solid #f00; &raquo; 
  /* The width and color of the right rail */
}
#leftRail{
  float:left;
  width:150px;
  margin-left:-150px;
  position:relative;
}
#center{
  float:left;
  width:500px;
  margin-right:-500px;
}
#rightRail{
  float:right;
  width:200px;
  margin-right:-200px;
  position:relative;
}

中間的欄目margin-right:-150px 使左邊的rail div始終沿中間欄目的左沿浮動,使旁邊欄目在真確的位置顯示。還有一些方法可以實現,但這個方法最好,更易實現流動布局(動態布局)。

因為邊欄在container div外,浮動在border上。使用overflow: hidden使之隱藏:IE不支持,Firefox可以實現。邊欄不需要設置顏色,它會於container div的顏色保持一致。

流動布局

了解定寬布局之後,我嘗試把這個方法用到動態布局中去。邊欄仍然需要設置固定寬,很多浏覽器不支持border:**%的屬性。但是我門可以使中間欄目自適應。

CSS:
#container{
  background-color:#0ff;
  overflow:hidden;
  margin:0 100px;
  padding-right:150px; /* The width of the rail */
}
* html #container{
  height:1%; /* So IE plays nice */
}
#content{
  background-color:#0ff;
  width:100%;
  border-right:150px solid #f00;
  margin-right:-150px;
  float:left;
}
#rail{
  background-color:#f00;
  width:150px;
  float:left;
  margin-right:-150px;
}

3個欄目自適應布局
方法簡單,不需要引用圖片,沒有BUG.

HTML:

<div id="container">
  <div id="center">Center Column Content</div>
  <div id="leftRail">Left<br /> Sidebar</div>
  <div id="rightRail">Right Sidebar</div>
</div>

CSS:

body{
  margin:0 100px;
  padding:0 200px 0 150px;
}
#container{
  background-color:#0ff;
  float:left;
  width:100%;    
  border-left:150px solid #0f0;
  border-right:200px solid #f00;
  margin-left:-150px;
  margin-right:-200px;
  display:inline; /* So IE plays nice */
}
#leftRail{
  float:left;
  width:150px;
  margin-left:-150px;
  position:relative;
}
#center{
  float:left;
  width:100%;
  margin-right:-100%;
}
#rightRail{
  float:right;
  width:200px;
  margin-right:-200px;
  position:relative;
}

效果:

運行代碼框

<!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 http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>css</title>

<style type="text/css">

<!--

body{

  margin:0 100px;

  padding:0 200px 0 150px;

}

#container{

  background-color:#0ff;

  float:left;

  width:100%;    

  border-left:150px solid #0f0;

  border-right:200px solid #f00;

  margin-left:-150px;

  margin-right:-200px;

  display:inline; /* So IE plays nice */

}

#leftRail{

  float:left;

  width:150px;

  margin-left:-150px;

  position:relative;

}

#center{

  float:left;

  width:100%;

  margin-right:-100%;

}

#rightRail{

  float:right;

  width:200px;

  margin-right:-200px;

  position:relative;

}

 

-->

</style>

</head>

 

<body>

<div id="container">

  <div id="center">Center Column Content</div>

  <div id="leftRail">Left<br /> Sidebar</div>

  <div id="rightRail">Right Sidebar</div>

</div>

</body>

</html>

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved