text-align: center;水平居中
站在用戶的角度思考問題,與客戶深入溝通,找到北戴河網(wǎng)站設(shè)計與北戴河網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋北戴河地區(qū)。
height:30px;line-height:30px;垂直居中
vertical-align:middle;垂直居中
td里面可以直接td valign="middle" align="center"
層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現(xiàn)HTML(標(biāo)準(zhǔn)通用標(biāo)記語言的一個應(yīng)用)或XML(標(biāo)準(zhǔn)通用標(biāo)記語言的一個子集)等文件樣式的計算機(jī)語言。CSS不僅可以靜態(tài)地修飾網(wǎng)頁,還可以配合各種腳本語言動態(tài)地對網(wǎng)頁各元素進(jìn)行格式化
CSS 能夠?qū)W(wǎng)頁中元素位置的排版進(jìn)行像素級精確控制,支持幾乎所有的字體字號樣式,擁有對網(wǎng)頁對象和模型樣式編輯的能力。
其實當(dāng)時在互聯(lián)網(wǎng)界已經(jīng)有過一些統(tǒng)一樣式表語言的建議了,但CSS是第一個含有“層疊”豐意的樣式表語言。在CSS中,一個文件的樣式可以從其他的樣式表中繼承。讀者在有些地方可以使用他自己更喜歡的樣式,在其他地方則繼承或“層疊”作者的樣式。這種層疊的方式使作者和讀者都可以靈活地加入自己的設(shè)計,混合每個人的愛好。
哈坤于1994年在芝加哥的一次會議上第一次提出了CSS的建議,1995年的www網(wǎng)絡(luò)會議上CSS又一次被提出,博斯演示了Argo瀏覽器支持CSS的例子,哈肯也展示了支持CSS的Arena瀏覽器。
1.橫向居中
(1)方法一
position:?fixed;
/*?居中對齊begin?*/
left:?50%;
/*?兼容老版本的方法?*/
-webkit-transform:?translateX(-50%);
transform:?translateX(-50%);
(2)方法二
設(shè)置固定寬度,并且設(shè)置margin:auto
(3)方法三
position:?fixed;
left:?50% - 居中盒子寬度的50%;
2.縱向居中
(1) 高度和行高設(shè)置一樣
height: 100px;
line-height:100px;
3.橫向和縱向都居中
display:?flex;
/*?默認(rèn)的主軸是x軸row,?justify-content:?center?沿著主軸居中對齊?*/
justify-content:?center;
/*?我們需要一個側(cè)軸居中?*/
align-items:?center;
容器的居中顯示在網(wǎng)頁設(shè)計中是很常見的,居中顯示可以獲得視覺的焦點,是內(nèi)容更加突出,下面就簡單的說明一下如何在HTML中通過樣式的控制來實現(xiàn)
01
最常見的一種,代碼示例如下圖,首先,取big一半像素大小賦給small層,通過margin: 0 auto; text-align: center來實現(xiàn)
02
第二種方法,代碼示例如下圖,將big層的display設(shè)置為table-cell,然后small層的margin-left取(500-250)/2,也就是125即可
03
第三種方法,代碼示例如下圖,將big層的position設(shè)置為absolute,然后small層的margin-left取(500-250)/2,也就是125即可
04
第四種方法,通過display:flex實現(xiàn),代碼示例如下圖,big層display:flex;flex-direction:column;而small層align-self:center
05
第五種方法,在small層的寬度沒有的時候,可以通過width:fit-content這個設(shè)置來完成,代碼示例如下
06
第六種方法,通過display:inline-block來實現(xiàn),將這個設(shè)置賦給big層即可,代碼示例如下圖
07
第七種方法,設(shè)置big層position:relative,相對情況下,使small層左浮動,代碼示例如下
08
第八種方法,transform屬性,代碼示例如下
09
第九種方法,借助第三方樣式,比如增加一個add節(jié)點,水平浮動向左,使small層隨之浮動,代碼示例如下
特別提示
每種方法都適應(yīng)不同的運行環(huán)境,實際操作時需要考慮不同瀏覽器的解析時的兼容性
我們以一個面試題開始吧
這道題看似貌似很簡單,但是我們需要分析具體的場景,因為不同的顯示方式的使用利弊是不一樣的。
以下的討論都是子元素相對于其父元素的水平居中。垂直居中,以后會說到。
常見的行內(nèi)元素有 span img 等,對這些元素居中設(shè)置,只需要在父元素的css中添加 text-align:center 即可。同樣它也對行內(nèi)塊元素也是有效的。
但是,有個缺點,由于 text-align 是可繼承屬性,即父元素內(nèi)部的所有元素都會繼承這個屬性,從而它的子元素內(nèi)部的文本都會居中顯示了。因此需要對子元素的文本居中方式單獨設(shè)定。
針對塊級元素的居中,我們將分為定寬和不定寬兩種情況來討論。
1.定寬
(1)子元素是正常流布局
若子元素的寬度是已知的,那么我們可以設(shè)置子元素的左右 margin 為 auto 即可
行內(nèi)塊元素也算塊級元素,同樣適用
目前所有瀏覽器都是支持的
(2)子元素絕對定位布局(absolute)
如果子元素是絕對定位的,由于子元素此時是脫離文檔流,上面的方法就失效了。這時需要明確指出子元素的定位,四個方位均要指定。如下:
這樣也可以實現(xiàn)絕對定位元素的居中。原因可點擊 這里 。如果絕對定位子元素的margin為auto,你會發(fā)現(xiàn)它水平垂直居中了!此方法僅適用于IE8+瀏覽器中,IE7就掛了,不過你可以下面這個方法:
2.不定寬
不定寬元素如果要居中需要額外的輔助手段
(1)css3新特性 transform
如果你對瀏覽器并沒有什么特別要求,那么可以使用css3提出的新屬性 transform 完成居中需求
這里需要子元素是絕對定位
(2)借助table元素
上面定寬元素設(shè)定左右margin為auto之所以可以居中,原因是左右margin會平分父元素剩下的空間。有個元素除外,那就是tabel元素。table有趣的地方在于它本身并不是塊級元素,如果不給它設(shè)定寬度的話,它的寬度由內(nèi)部元素的寬度“撐起”,但即使不設(shè)定它的寬度,僅設(shè)置margin-left:auto和margin-right:auto就可以實現(xiàn)水平居中。
最大的缺點想必你也是知道,就是無關(guān)標(biāo)簽太多,加深了嵌套的層級,維護(hù)性很差。
(3)父元素使用float布局
這里需要多添加一層父元素,父子元素均float布局,之后設(shè)置position為relative,left為50%
缺點是你需要額外處理浮動所帶來的一些問題。并且如果你設(shè)置了背景色,布局會有些混亂
以上是我對元素實現(xiàn)居中的一些方法,歡迎大家補(bǔ)充。
2017.6.11 晴
于上海浦東
水平居中
若是行內(nèi)元素, 給其父元素設(shè)置 text-align:center,即可實現(xiàn)行內(nèi)元素水平居中.
若是塊級元素, 該元素設(shè)置 margin:0 auto即可.
若子元素包含 float:left 屬性, 為了讓子元素水平居中, 則可讓父元素寬度設(shè)置為fit-content,并且配合margin, 作如下設(shè)置:
.parent{
width: -moz-fit-content;
width: -webkit-fit-content;
width:fit-content;
margin:0 auto;}
使用flex 布局, 可以輕松的實現(xiàn)水平居中, 子元素設(shè)置如下:
.son{
display: flex;
justify-content: center;}
使用CSS3中新增的transform屬性, 子元素設(shè)置如下:
.son{
position:absolute;
left:50%;
transform:translate(-50%,0);}
使用絕對定位方式, 以及負(fù)值的margin-left, 子元素設(shè)置如下:
.son{
position:absolute;
width:固定;
left:50%;
margin-left:-0.5寬度;}
使用絕對定位方式, 以及l(fā)eft:0;right:0;margin:0 auto; 子元素設(shè)置如下:
.son{
position:absolute;
width:固定;
left:0;
right:0;
margin:0 auto;}
垂直居中
若元素是單行文本, 則可設(shè)置 line-height 等于父元素高度
若元素是行內(nèi)塊級元素, 基本思想是使用display: inline-block, vertical-align: middle和一個偽元素讓內(nèi)容塊處于容器中央.
.parent::after, .son{
display:inline-block;
vertical-align:middle;}.parent::after{
content:'';
height:100%;}
元素高度不定
可用 vertical-align 屬性, 而vertical-align只有在父層為 td 或者 th 時, 才會生效, 對于其他塊級元素, 例如 div、p 等, 默認(rèn)情況是不支持的. 為了使用vertical-align, 我們需要設(shè)置父元素display:table, 子元素 display:table-cell;vertical-align:middle;
用 Flex 布局
.parent {
display: flex;
align-items: center;}
可用 transform , 設(shè)置父元素相對定位(position:relative), 子元素如下css樣式:
.son{
position:absolute;
top:50%;
-webkit-transform: translate(-50%,-50%);
-ms-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);}
元素高度固定
設(shè)置父元素相對定位(position:relative), 子元素如下css樣式:
.son{
position:absolute;
top:50%;
height:固定;
margin-top:-0.5高度;}
設(shè)置父元素相對定位(position:relative), 子元素如下css樣式:
.son{
position:absolute;
height:固定;
top:0;
bottom:0;
margin:auto 0;}