DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> WEB網站前端 >> 前端技巧 >> 三種方式實現元素水平居中顯示與固定布局和流式布局概念理解
三種方式實現元素水平居中顯示與固定布局和流式布局概念理解
編輯:前端技巧     
css中讓文本居中的屬性很簡單就可以實現,那就是設置text-align:center即可。而我這裡所說的“元素”實際上是指容器,如果要有一個貼切點的標簽,那應該可以用div來表示。
讓元素水平居中,相信對於許多網頁設計師而言都不會陌生。但是有的時候,自己就在想,為什麼要讓元素水平居中?是出於什麼原因呢?都是一點自己的見解,蠻寫下來...

首先,要 讓元素水平居中,就必須得了解css設計中固定布局和流式布局兩者的概念。它們之間的直觀區別就看是否給元素設置了寬度。下面是兩段代碼,用來簡單地說明固定布局和流式布局的區別。
1、固定布局demo:

復制代碼代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>position-layout</title>
<style type="text/css">
.wrapper{width:750px;position:relative;margin:0 auto;text-align:left;}
.contentArea{width:450px;position:absolute;top:0;left:150px;height:500px;background:#96c;}
.leftPanel{width:150px;position:absolute;top:0;left:0;height:500px;background:#999;}
.rightPanel{width:150px;position:absolute;top:0;left:600px;height:500px;background:#06C;}
</style>
</head>
<body>
<div class="wrapper">
<div class="contentArea"></div>
<div class="leftPanel"></div>
<div class="rightPanel"></div>
</div>
</body>
</html>

2、流式布局demo:

復制代碼代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>col3-margin-layout</title>
<style type="text/css">
.contentArea{margin:0 160px;height:500px;background:#96c;}
.leftPanel{width:150px;float:left;height:500px;background:#999;}
.rightPanel{width:150px;float:right;height:500px;background:#06C;}
</style>
</head>
<body>
<div class="wrapper">
<div class="leftPanel"></div>
<div class="rightPanel"></div>
<div class="contentArea"></div>
</div>
</body>
</html>

通過上面兩個例子,可以得出:流式布局不存在元素水平居中的可能,因為它都是滿屏顯示的。只有固定布局,因為限寬,所以就有了讓元素水平居中的可能。
其次,固定布局的實現也不一定要讓元素水平居中,之所以這麼做,是為了讓浏覽器的兩邊能夠留出平均的旁白,而不是只有一邊是一大片空白,影響美觀。
都是些淺顯的知識,下面進入主題。
============================================================================
讓元素水平居中的三種方式,我將分別進行介紹。如下
1、自動外邊距法
這是目前網頁設計人員最熟悉的一種方法,它需要給容器設置寬度,並設置margin:auto樣式。下面是一段代碼:

復制代碼代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>position-layout</title>
<style type="text/css">
.wrapper{width:750px;margin:0 auto;position:relative;}
.contentArea{width:450px;position:absolute;top:0;left:150px;height:500px;background:#96c;}
.leftPanel{width:150px;position:absolute;top:0;left:0;height:500px;background:#999;}
.rightPanel{width:150px;position:absolute;top:0;left:600px;height:500px;background:#06C;}
</style>
</head>
<body>
<div class="wrapper">
<div class="contentArea"></div>
<div class="leftPanel"></div>
<div class="rightPanel"></div>
</div>
</body>
</html>

通過這段代碼,可以發現,這種方式在在目前各種主流浏覽器下(包括ie6)都能很好的顯示,只有在ie6以下的版本不生效,元素依然向左排列。如果不考慮低版本浏覽器的問題,那麼它將是最便捷的。
2、文本居中和自動外邊距的結合使用
這種方式可以解決ie6以下版本不支持margin:0 auto的 問題,它的用法就是在body裡設置text-align:center樣式。具體代碼如下:

復制代碼代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>position-layout</title>
<style type="text/css">
body{text-align:center;}
.wrapper{width:750px;position:relative;margin:0 auto;text-align:left;}
.contentArea{width:450px;position:absolute;top:0;left:150px;height:500px;background:#96c;}
.leftPanel{width:150px;position:absolute;top:0;left:0;height:500px;background:#999;}
.rightPanel{width:150px;position:absolute;top:0;left:600px;height:500px;background:#06C;}
</style>
</head>
<body>
<div class="wrapper">
<div class="contentArea"></div>
<div class="leftPanel"></div>
<div class="rightPanel"></div>
</div>
</body>
</html>

在這裡,text-align:center被作為css hack來使用,因為它本屬於文本的樣式,用在body裡來實現元素居中的樣式,做了本不屬於自己該做的事...
3、負外邊距法
這種方式的實現方式比前兩種復雜。它得結合定位來使用。具體代碼如下:

復制代碼代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>negative-margin-element-center</title>
<style type="text/css">
.wrapper{width:750px;position:relative;left:50%;margin-left:-375px;}
.contentArea{width:450px;position:absolute;top:0;left:150px;height:500px;background:#96c;}
.leftPanel{width:150px;position:absolute;top:0;left:0;height:500px;background:#999;}
.rightPanel{width:150px;position:absolute;top:0;left:600px;height:500px;background:#06C;}
</style>
</head>
<body>
<div class="wrapper">
<div class="contentArea"></div>
<div class="leftPanel"></div>
<div class="rightPanel"></div>
</div>
</body>
</html>

首先,讓容器相對文檔向右偏移50%,然後,將容器的左外邊距設置為負的容器寬度的一半,即可實現元素的水平居中顯示。這種方式沒有hack,且兼容性很好,能在最廣泛的浏覽器下表現一致。
以上就是我所知道的三種實現元素水平居中的方法,都比較簡單,寫下來就當是一次知識的回顧總結吧。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved