亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

CSS的各種居中——如何書寫高質(zhì)量代碼

  發(fā)布時間:2012-11-20 08:58:13   作者:佚名   我要評論
CSS的居中有水平居中和垂直居中,這兩種居中又分為行內(nèi)元素居中和塊級元素居中,不同的居中用不同方法。 水平居中 1、行內(nèi)元素水平居中(文本,圖片) 給父層設置 text-align:center; 可以實現(xiàn)行內(nèi)元素水平居中。 [code] <!DOCTYPE HTML> <html lang=&qu
CSS的居中有水平居中和垂直居中,這兩種居中又分為行內(nèi)元素居中和塊級元素居中,不同的居中用不同方法。
水平居中
1、行內(nèi)元素水平居中(文本,圖片)
給父層設置 text-align:center; 可以實現(xiàn)行內(nèi)元素水平居中。

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.center{text-align:center;}
</style>
</head>
<body>
<div class="center">
<a >谷歌搜索</a><br/><br/>
<img src="cat.jpg" width="248" height="162" alt=""/>
</div>
</body>
</html>

2、確定寬度塊級元素水平居中
確定寬度的塊級元素水平居中,常用的有 margin:0 auto; 相信很多開發(fā)人員都用的是這個,不過本人認為還有更好的寫法:margin-left:auto;margin-right:auto; 因為 margin-top 和 margin-bottom 在重置 css 時就已經(jīng)寫了為 0 了。

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.center{width:100px;height:100px;margin-left:auto;margin-right:auto;background:green;}
</style>
</head>
<body>
<div class="center"></div>
</body>
</html>

3、不確定寬度的塊級元素水平居中
不確定寬度的塊級元素有三種方法實現(xiàn)。
方法一:

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
ul{list-style:none;}
table{margin-left:auto;margin-right:auto;}
.demo li{float:left;display:inline;margin-right:5px;}
.demo a{float:left;width:20px;height:20px;text-align:center;line-height:20px;background:#316ac5;color:white;border:1px solid #316ac5;text-decoration:none;}
.demo a:hover{background:white;color:#316ac5;}
</style>
</head>
<body>
<table>
<tbody>
<tr>
<td>
<ul class="demo">
<li><a href="#">1</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td>
<ul class="demo">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td>
<ul class="demo">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
</body>
</html>

這里用到了 table 標簽來實現(xiàn)不確定寬度的塊級元素水平居中。table 本身不是塊級元素,如果不給它設定寬度的話,會由內(nèi)部元素的寬度“撐開”,但即使不設定它的寬度,僅設置 margin-left:auto 和 margin-right:auto 就可以實現(xiàn)水平居中。
這種方法很巧妙,但是增加了無語義標簽,加深了標簽的嵌套層數(shù)。
方法二

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
ul{list-style:none;}
.wrapper{width:500px;height:100px;background:black;}
.demo{text-align:center;padding:5px;}
.demo li{display:inline;}
.demo a{padding:2px 6px;background:#316ac5;color:white;border:1px solid #316ac5;text-decoration:none;}
.demo a:hover{background:white;color:#316ac5;}
</style>
</head>
<body>
<div class="wrapper">
<ul class="demo">
<li><a href="#">1</a></li>
</ul>
<ul class="demo">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
<ul class="demo">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
</ul>
</div>
</body>
</html>

方法二是改變元素的 display 值,使塊級元素變成行內(nèi)元素,然后使用 text-align:center 使其居中。相對于方法一,它不用增加無語義標簽,簡化了標簽的嵌套深度,但它也存在一定的問題:它將塊級元素變成了行內(nèi)元素,這樣就失去了一些塊級元素的功能,比如設置寬度,高度。
方法三

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
ul{list-style:none;}
.wrapper{width:500px;height:100px;background:black;}
.demo{clear:both;padding-top:5px;float:left;position:relative;left:50%;}
.demo li{display:inline;float:left;margin-right:5px;position:relative;left:-50%;}
.demo a{float:left;width:20px;height:20px;text-align:center;line-height:20px;background:#316ac5;color:white;border:1px solid #316ac5;text-decoration:none;}
.demo a:hover{background:white;color:#316ac5;}
</style>
</head>
<body>
<div class="wrapper">
<ul class="demo">
<li><a href="#">1</a></li>
</ul>
<ul class="demo">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
<ul class="demo">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
</ul>
</div>
</body>
</html>

方法三通過給父層設置浮動和相對定位以及 left:50%,子元素設置相對定位和 left:-50% 來實現(xiàn)水平居中。它可以保留塊級元素的功能,而且不會添加無語義標簽,不增加嵌套深度,但是設置了相對定位,會帶來一定的副作用。
這三種方法各有優(yōu)缺點,具體使用哪種方法可以視具體情況而定。
垂直居中
1、父層高度不確定的垂直居中
通過給父層設置相同的上下內(nèi)邊距實現(xiàn)。

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
.demo{width:500px;color:white;margin-bottom:10px;padding-top:20px;padding-bottom:20px;background:black;}
.content{width:200px;height:50px;background:red;}
</style>
</head>
<body>
<div class="demo">hello world</div>
<div class="demo"><img src="cat.jpg" width="248" height="162" alt=""/></div>
<div class="demo"><div class="content"></div></div>
</body>
</html>

2、父層高度確定的單行文本垂直居中
通過給父層設置行高來實現(xiàn),行高和父層高度相同。

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
.demo{width:500px;color:white;background:black;height:100px;line-height:100px;}
</style>
</head>
<body>
<div class="demo">hello world</div>
</body>
</html>

3、父層高度確定的多行文本、圖片、塊級元素垂直居中
方法一
說到垂直居中,css 中有個用于垂直居中的屬性 vertical-align,但只有在父層為 td 或者 th 時,這個屬性才會生效,對于其他塊級元素,例如 div、p 等,默認情況是不支持的。在 firefox 和 ie8 下,可以設置塊級元素的 display 值為 table-cell,來激活 vertical-align 屬性,但 ie6,7 并不支持,所以這種方法沒有辦法跨瀏覽器兼容。但是我們可以使用 table。

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
.wrapper{background:black;width:500px;color:white;height:100px;}
.demo{width:200px;background:red;height:50px;}
</style>
</head>
<body>
<table>
<tr>
<td class="wrapper">
hellow world<br/>
hellow world<br/>
hellow world<br/>
</td>
</tr>
</table>
<table>
<tr>
<td class="wrapper">
<img src="cat.jpg" alt=""/>
</td>
</tr>
</table>
<table>
<tr>
<td class="wrapper">
<div class="demo"></div>
</td>
</tr>
</table>
</body>
</html>

table 可以很好的實現(xiàn)垂直居中效果,但是它添加了無語義標簽,增加了嵌套深度。
方法二
對支持 display:table-cell 的 ie8 和 firefox 用 display:table-cell 和 vertical-align:middle 來實現(xiàn)居中,對不支持 display:table-cell 的 ie6 和 ie7 使用 hack 寫法。

復制代碼
代碼如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
.mb{margin-bottom:10px;}
.wrapper{background:black;width:500px;color:white;height:100px;margin-bottom:10px;display:table-cell;vertical-align:middle;*position:relative;}
.demo{width:200px;background:red;height:50px;}
.vam{*position:absolute;*top:50%;}
.va{*position:relative;*top:-50%;}
</style>
</head>
<body>
<div class="mb10">
<div class="wrapper">
<div class="vam">
<div class="va">
hellow world<br/>
hellow world<br/>
hellow world
</div>
</div>
</div>
</div>
<div class="mb10">
<div class="wrapper">
<div class="vam">
<img src="cat.jpg" alt=""/>
</div>
</div>
</div>
<div class="mb10">
<div class="wrapper">
<div class="vam">
<div class="va demo"></div>
</div>
</div>
</div>
</body>
</html>

利用 hack 技術區(qū)別對待 firefox、ie8 和 ie6、ie7,在不支持 display:table-cell 的 ie6 和 ie7 下,通過給父子兩層元素分別設置 top:50% 和 top:-50% 來實現(xiàn)居中。這種方法的好處是沒有增加額外的標簽,但缺點也很明顯,一方面它使用了 hack,不利于維護,另一方面,它設置了 position:relative 和 position:absolute,帶來了副作用。

相關文章

  • 前端CSS Grid 布局示例詳解

    CSS Grid 是一種二維布局系統(tǒng),可以同時控制行和列,相比 Flex(一維布局),更適合用在整體頁面布局或復雜模塊結構中,這篇文章主要介紹了前端CSS Grid 布局詳解,需要的朋
    2025-04-16
  • CSS Padding 和 Margin 區(qū)別全解析

    CSS 中的 padding 和 margin 是兩個非?;A且重要的屬性,它們用于控制元素周圍的空白區(qū)域,本文將詳細介紹 padding 和 margin 的概念、區(qū)別以及如何在實際項目中使用它們
    2025-04-07
  • CSS will-change 屬性示例詳解

    will-change 是一個 CSS 屬性,用于告訴瀏覽器某個元素在未來可能會發(fā)生哪些變化,本文給大家介紹CSS will-change 屬性詳解,感興趣的朋友一起看看吧
    2025-04-07
  • CSS去除a標簽的下劃線的幾種方法

    本文給大家分享在 CSS 中,去除a標簽(超鏈接)的下劃線的幾種方法,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-04-07
  • 前端高級CSS用法示例詳解

    在前端開發(fā)中,CSS(層疊樣式表)不僅是用來控制網(wǎng)頁的外觀和布局,更是實現(xiàn)復雜交互和動態(tài)效果的關鍵技術之一,隨著前端技術的不斷發(fā)展,CSS的用法也日益豐富和高級,本文將
    2025-04-07
  • css中的 vertical-align與line-height作用詳解

    文章詳細介紹了CSS中的`vertical-align`和`line-height`屬性,包括它們的作用、適用元素、屬性值、常見使用場景、常見問題及解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-03-26
  • 淺析CSS 中z - index屬性的作用及在什么情況下會失效

    z-index屬性用于控制元素的堆疊順序,值越大,元素越顯示在上層,它需要元素具有定位屬性(如relative、absolute、fixed或sticky),本文給大家介紹CSS 中z - index屬性的作用
    2025-03-21
  • CSS @media print 使用詳解

    文章詳細介紹了CSS中的打印媒體查詢@mediaprint包括基本語法、常見使用場景和代碼示例,如隱藏非必要元素、調(diào)整字體和顏色、處理鏈接的URL顯示、分頁控制、調(diào)整邊距和背景等
    2025-03-18
  • CSS模擬 html 的 title 屬性(鼠標懸浮顯示提示文字效果)

    本文介紹了如何使用CSS模擬HTML的title屬性,通過鼠標懸浮顯示提示文字效果,通過設置`.tipBox`和`.tipBox.tipContent`的樣式,實現(xiàn)了提示內(nèi)容的隱藏和顯示,感興趣的朋友一起
    2025-03-10
  • 前端 CSS 動態(tài)設置樣式::class、:style 等技巧(推薦)

    本文介紹了Vue.js中動態(tài)綁定類名和內(nèi)聯(lián)樣式的兩種方法:對象語法和數(shù)組語法,通過對象語法,可以根據(jù)條件動態(tài)切換類名或樣式;通過數(shù)組語法,可以同時綁定多個類名或樣式,此外
    2025-02-26

最新評論