CSS學習筆記--基礎(四)

元素的居中設置


水平居中設置-行內元素

    我們實際的工作中常會遇到需要設置水平居中的場景, 比如文章的標題一般都是要求水平居中顯示的。


   設置水平居中, 我們需要分爲兩種情況: 行內元素還是塊狀元素的水平居中, 塊狀元素裏面又分爲定寬塊狀元素和不定寬塊狀元素。


    如果設置的元素爲文本、圖片等行內元素時,水平居中是通過給父元素設置text-align:center 來實現的。如下代碼:

html代碼:

<span style="font-size:12px;"><body>
    <div class="textCenter"> 設置水平居中, 我們需要分爲兩種情況: 行內元素還是塊狀元素的水平居中, 塊狀元素裏面又分爲定寬塊狀元素和不定寬塊狀元素。</div>
</body></span>

css代碼:

<span style="font-size:12px;"><style>
    .textCenter{
         text-align:center;
    }
</style></span>


水平居中設置-定寬塊狀元素

    當被設置的元素爲塊狀元素時用 text-align:center 就不再會起作用了, 這時的設置就分爲 定寬塊狀元素和不定寬塊狀元素的設置。

    滿足定寬和塊狀兩個條件的元素是可以通過設置左右margin值爲auto來實現居中的。   如下例子就是設置div這個塊狀元素水平居中:

html代碼:

<span style="font-size:12px;"><body>
    <div>設置水平居中, 我們需要分爲兩種情況: 行內元素還是塊狀元素的水平居中, 塊狀元素裏面又分爲定寬塊狀元素和不定寬塊狀元素。</div>
</body></span>

css代碼:

<span style="font-size:12px;"><style>
    div{
         border: 1px solid red;
         width:200px;/*定寬*/
         margin: 20px auto;/*margin-left與margin-right設置爲auto*/
    }
<style></span>

也可以寫成:

<span style="font-size:12px;">margin-left:auto;
margin-right:auto;</span>

注意:元素的上下margin是可以隨意設置的




水平居中-不定寬塊狀元素方法(一)

        在實際工作中我們會遇到需要爲 不定寬塊狀元素 設置居中, 比如網頁上的分頁導航,因爲分頁的數量是不確定的, 所以不能通過設置寬度來限制它的彈性。(不定寬塊狀元素的寬度width是不確定的)


        不確定寬度的塊狀元素居中顯示有以下三種方法:

        1.加入tabel標籤

        2.設置diplay:inline方法, 與第一種類似,顯示類型爲行內元素, 進行不定寬元素的屬性設置

3.設置position:relative和left:50%:利用相對定位的方式,將元素向左偏移50%, 即可達到居中的目的


加入tabel標籤來輔助設置不定寬塊狀元素居中顯示, 是利用table標籤的長度自適應--即不定義其長度也不默認父元素body的長度(table長度根據其內容的文本長度決定),因此可以看作一個定寬塊狀元素, 然後利用定寬塊狀居中的margin設置方法,使其水平居中。

加入table標籤設置水平居中需要按照以下步驟進行設置:

1.爲需要設置居中的元素外面加一個table標籤(包括<tbody>、<tr>、<td>)

2.爲這個table設置左右的margin爲居中

舉例如下

代碼如下:

<span style="font-size:12px;"><!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<style type="text/css">
		table{
			border:1px solid red;
			margin: 0 auto;
		}
	</style>
</head>
<body>
	<div>
		<table>
			<tr>
				<td>
					<ul>
						<li>第一行文本</li>
						<li>第二行文本</li>
						<li>第三行文本</li>
					</ul>
				</td>
			</tr>
		</table>
	</div>
</body>
</html></span>




水平居中-不定寬塊狀元素方法(二)

改變元素的display類型爲行內元素,利用其屬性直接設置。, 改變塊狀元素的display爲inline類型, 使用text-align:center來實現居中效果。

代碼如下:

<span style="font-size:12px;"><!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<style type="text/css">
		.container{
			text-align: center;
		}

		.contaiber ul{
			list-style: none;
			margin: 0;
			padding: 0;
			display: inline;
		}

		.container li{
			margin-right: 8px;
			display: inline;
		}
	</style>
</head>
<body>
	<div class="container">
		<ul>
			<li>第一行文本</li>
			<li>第二行文本</li>
			<li>第三行文本</li>
		</ul>
	</div>
</body>
</html></span>


這種方法相比第一種方法的優勢是不用增加無語義標籤, 但也存在着一些問題: 它將塊狀元素的display類型改爲inline, 變成了行內元素, 所以缺少了塊狀元素的某些功能, 比如設定長度值。




水平居中-不定寬塊狀元素方法(三)

通過給父元素設置float, 然後給父元素設置positon:relative和left50%, 子元素設置position:relative和left:-50%來實現水平居中。

代碼如下:

<span style="font-size:12px;"><!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<style type="text/css">
		.container{
			float: left;
			position: relative;
			left: 50%;
		}

		.contaiber ul{
			list-style: none;
			margin: 0;
			padding: 0;
			position: relative;
			left: -50%;
		}

		.container li{
			float: left;
			margin-right: 8px;
			display: inline;
		}
	</style>
</head>
<body>
	<div class="container">
		<ul>
			<li><a href="#">1</a></li>
			<li><a href="#">2</a></li>
			<li><a href="#">3</a></li>
		</ul>
	</div>
</body>
</html></span>




垂直居中- 父元素高度確定的單行文本

我們在實際開發的過程中,也會遇到許多需要垂直顯示的場景, 比如報紙的文章標題在左右一側時, 常常會設置爲垂直居中。

垂直居中顯示也分兩種情況:父元素高度確定的單行文本,以及父元素高度確定的多行文本。


父元素確定的單行文本的豎直居中的方法是通過設置父元素的height 和line-height高度一致來實現的。(height 該元素的高度, line-height 行高,指在文本中, 行與行之間的基線間的距離)。


line-height與font-size的計算值之差, 在css中稱爲行間距, 分爲兩半, 分別加到一個文本行內容的頂部和底部。


這種文字行高與塊高一致有一個很大的弊端: 當文字內容的長度大於塊的寬時, 就有內容脫離了塊。

代碼如下:

<span style="font-size:12px;"><div class="container">
     hello world!
</div>

<style>
    .container{
        height:100px;
        line-height:100px;
        background:#999;
    }
</style></span>



垂直居中-父元素高度確定的多行文本(方法一)

父元素確定的多行文本、圖片等的豎直居中的方法有兩種:

方法一:使用插入table(包括tbody、tr、td)標籤, 同時設置vertical-align: middle


css中又一個用於豎直居中的屬性 vertical-align, 在父元素設置此樣式時, 會對inline-block類型的子元素都有作用。

如下代碼:

<span style="font-size:12px;"><!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<style type="text/css">
		.wrap{
			height: 300px;
			background: #ccc;
		}
	</style>
</head>
<body>
	<table>
		<tbody>
			<tr>
				<td class="wrap">
					<div>
						<p>垂直居中顯示的文本信息</p>
						<p>垂直居中顯示的文本信息</p>
						<p>垂直居中顯示的文本信息</p>
						<p>垂直居中顯示的文本信息</p>
						<p>垂直居中顯示的文本信息</p>
					</div>
				</td>
			</tr>
		</tbody>
	</table>
</body>
</html></span>




垂直居中-父元素高度確定的多行文本(方法二)

在chrome、firefox及IE8以上的瀏覽器下可以設置塊級元素的 display爲table-cell(表格單元), 激活vertical-align屬性, 但注意IE6、IE7並不支持這個樣式,兼容性較差。


代碼如下:

<span style="font-size:12px;"><!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<style type="text/css">
		.container{
			height: 300px;
			background: #ccc;
			display: table-cell;
			vertical-align: middle;
		}
	</style>
</head>
<body>
	<div class="container">
		<div>
			<p>垂直居中顯示的文本信息</p>
			<p>垂直居中顯示的文本信息</p>
			<p>垂直居中顯示的文本信息</p>
			<p>垂直居中顯示的文本信息</p>
			<p>垂直居中顯示的文本信息</p>
		</div>
	</div>				
</body>
</html></span>

這種方法的好處就是不用添加多餘的無語義的標籤, 但缺點也是很明顯的, 兼容性不好。


隱性改變display類型

在html中, 只要代碼中出現 position:absolute 或者 float:left (float:right)之一, 元素的display顯示類型就會自動變爲以 display: inline-block(塊狀元素)的方式顯示, 當然就可以設置元素的width和height了, 且默認寬度不沾滿父元素。

如下代碼:

<span style="font-size:12px;"><!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<style type="text/css">
		.container a{
			position: absolute;
			width: 200px;
			background: #ccc;
		}
	</style>
</head>
<body>
	<div class="container">
		<a href="#" title="點擊菜單"></a>
	</div>			
</body>
</html></span>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章