Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
平居中設(shè)置
我們?cè)趯?shí)際工作中常會(huì)遇到需要設(shè)置水平居中的場(chǎng)景,比如為了美觀,文章的標(biāo)題一般都是水平居中顯示的。
這里我們又得分兩種情況:行內(nèi)元素 還是 塊狀元素 ,塊狀元素里面又分為定寬塊狀元素,以及不定寬塊狀元素。今天我們先來(lái)了解一下
如果被設(shè)置元素為文本、圖片等行內(nèi)元素時(shí),水平居中是通過(guò)給父元素設(shè)置 text-align:center 來(lái)實(shí)現(xiàn)的。
當(dāng)被設(shè)置元素為 塊狀元素 時(shí)用 text-align:center 就不起作用了,這時(shí)也分兩種情況:定寬塊狀元素和不定寬塊狀元素。
如果是定寬塊狀元素。(定寬塊狀元素:塊狀元素的寬度width為固定值。)
滿(mǎn)足定寬和塊狀兩個(gè)條件的元素是可以通過(guò)設(shè)置“左右margin”值為“auto”來(lái)實(shí)現(xiàn)居中的。
不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):
第一種做法:
為什么選擇方法一加入table標(biāo)簽? 是利用table標(biāo)簽的長(zhǎng)度自適應(yīng)性---即不定義其長(zhǎng)度也不默認(rèn)父元素body的長(zhǎng)度(table其長(zhǎng)度根據(jù)其內(nèi)文本長(zhǎng)度決定),因此可以看做一個(gè)定寬度塊元素,然后再利用定寬度塊狀居中的margin的方法,使其水平居中。
第一步:為需要設(shè)置的居中的元素外面加入一個(gè) table 標(biāo)簽 ( 包括 <tbody>、<tr>、<td> )。
第二步:為這個(gè) table 設(shè)置“左右 margin 居中”(這個(gè)和定寬塊狀元素的方法一樣)。
舉例如下:
html代碼:
<div> <table> <tbody> <tr><td> <ul> <li>我是第一行文本</li> <li>我是第二行文本</li> <li>我是第三行文本</li> </ul> </td></tr> </tbody> </table> </div>
css代碼:
<style> table{ border:1px solid; margin:0 auto; } </style>
第二種做法:
改變塊級(jí)元素的 display 為 inline 類(lèi)型(設(shè)置為 行內(nèi)元素 顯示),然后使用 text-align:center 來(lái)實(shí)現(xiàn)居中效果。如下例子:
html代碼:
<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>
css代碼:
<style> .container{ text-align:center; } /* margin:0;padding:0(消除文本與div邊框之間的間隙)*/ .container ul{ list-style:none; margin:0; padding:0; display:inline; } /* margin-right:8px(設(shè)置li文本之間的間隔)*/ .container li{ margin-right:8px; display:inline; } </style>
這種方法相比第一種方法的優(yōu)勢(shì)是不用增加無(wú)語(yǔ)義標(biāo)簽,但也存在著一些問(wèn)題:它將塊狀元素的 display 類(lèi)型改為 inline,變成了行內(nèi)元素,所以少了一些功能,比如設(shè)定長(zhǎng)度值。
方法三:
通過(guò)給父元素設(shè)置 float,然后給父元素設(shè)置 position:relative 和 left:50%,子元素設(shè)置 position:relative 和 left: -50% 來(lái)實(shí)現(xiàn)水平居中。
我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對(duì)齊;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對(duì)齊,從而實(shí)現(xiàn)li層的居中。
代碼如下:
<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>
css代碼:
<style> .container{ float:left; position:relative; left:50% } .container ul{ list-style:none; margin:0; padding:0; position:relative; left:-50%; } .container li{float:left;display:inline;margin-right:8px;} </style>
這三種方法使用得都非常廣泛,各有優(yōu)缺點(diǎn),具體選用哪種方法,可以視具體情況而定。
習(xí)css大家是不是對(duì)元素居中的知識(shí)點(diǎn)很是模糊?是不是苦于找不到一個(gè)總結(jié)的通俗易懂的說(shuō)明?是不是自己懶得去總結(jié)?今天小編在前端的學(xué)習(xí)與實(shí)踐中總結(jié)出的元素的五大居中方式,黏貼了代碼并對(duì)代碼做了解釋?zhuān)M麑?duì)迷茫的有所幫助!
下面的居中示例中,統(tǒng)一使用了同一個(gè)div作為父元素和p作為子元素
設(shè)置一個(gè)div,并且設(shè)置了div的寬高邊框,div里面設(shè)置一個(gè)塊元素p,設(shè)置了它的寬高和背景色
css居中方式1
這里利用了偽元素讓子元素p在div盒子里左右水平居中只需要在它的父元素div里加text-align:center;垂直方向居中需要在父元素后面加了一個(gè)偽元素,并使得樣式為inline-block;height:100%;就是和父元素一樣高,vertical-align:middle;垂直居中,也就是p元素相對(duì)與偽元素居中,由于偽元素和div一樣高,所以相當(dāng)于p元素在div里垂直居中。
css居中方式2
這里利用了定位居中
子元素p設(shè)置position:absolute脫離文檔流,默認(rèn)以html作為父元素,所以我們給父元素div設(shè)置position:relative;使得p以div為父元素做位置的變動(dòng),left:0;tight:0;top:0;bottom:0;(只有設(shè)置了定位的元素才可以使用這種方式來(lái)移動(dòng)),最后margin:auto;就會(huì)水平和垂直都居中。
css居中方式3
這里利用了彈性盒居中
父元素div設(shè)置成彈性盒樣式,justify-content:center;主軸居中
align-items:center;垂直居中(而且這兩個(gè)只能設(shè)置在父元素上,彈性盒知識(shí))
css居中方式4
利用定位線左上角居中,然后左移子元素寬度的一半,再上移子元素高度的一半。
css居中方式5
利用動(dòng)畫(huà)移動(dòng)屬性transform
小編是一個(gè)有著5年工作經(jīng)驗(yàn)的架構(gòu)師,關(guān)于web前端,自己有做材料的整合,一個(gè)完整學(xué)習(xí)web前端的路線,學(xué)習(xí)材料和工具。需要的伙伴可以私信我,發(fā)送“前端”等3秒后就可以獲取領(lǐng)取地址,免費(fèi)送給大家。對(duì)于學(xué)習(xí)web前端有任何問(wèn)題(學(xué)習(xí)方法,學(xué)習(xí)效率,如何就業(yè))都可以問(wèn)我。希望你也能憑自己的努力,成為下一個(gè)優(yōu)秀的程序員!
相信看了上面的有關(guān)Html5、css的元素五大居中方式,你們就可以解決自己的小問(wèn)題了,但是也要養(yǎng)成一個(gè)總結(jié)的好習(xí)慣。好記性不如爛筆頭!以前留下來(lái)的話語(yǔ)總是有他的道理。Comeon!
們?cè)谑褂胏ss來(lái)布局時(shí)經(jīng)常需要進(jìn)行居中,有時(shí)一個(gè)屬性就能搞定,有時(shí)則需要一定的技巧才能兼容到所有瀏覽器,利用css來(lái)實(shí)現(xiàn)對(duì)象的垂直居中有許多不同的方法,比較難的是應(yīng)該選擇哪種正確的方法。比如我們都知道 margin:0 auto;的樣式能讓元素水平居中,而margin: auto;卻不能做到垂直居中……下面就css居中的一些常用方法做個(gè)集中的介紹。
首先是水平居中,最簡(jiǎn)單的辦法當(dāng)然就是:
margin:0 auto;
利用line-height設(shè)為height的一樣即可:
eg:
.div {
width:200px;
height: 200px;
line-height: 200px;/*實(shí)現(xiàn)垂直居中的關(guān)鍵*/
text-align:center;
font-size: 36px;
background-color: #ccc;
}
父容器元素:position: relative,子元素:position:absolute;
eg:
<div class="box">
<div class="content"></div>
</div>
<style>
.box{position:relative;width:200px;height:200px;background:#999;}
.content{
width: 50%;
height: 50%;
overflow: auto;
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
background:#C9F;}
</style>
效果如下所示:
!注意:高度必須定義,建議加 overflow: auto,防止內(nèi)容溢出。
介紹一下CSS3中的display:flex來(lái)實(shí)現(xiàn)的水平垂直居中的方法。
eg:
<div class="parent">
<div class="children">我是通過(guò)flex的水平垂直居中噢!</div>
</div>
<style>
.parent {
display:flex;
align-items: center;/*垂直居中*/
justify-content: center;/*水平居中*/
width:200px;
height:200px;
background-color:green;
}
.children {
background-color:blue;
color:#FFF;
}
</style>
效果如下所示:
這種方式最為簡(jiǎn)便,就是兼容性不好,不過(guò)隨著時(shí)間的前進(jìn),各大瀏覽器一定會(huì)都兼容的。
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。