css 的規(guī)律摸索之路(二)css之居中問題(垂直居中與水平居中)

通過上篇css 的規(guī)律摸索之路(一)css之三角形的規(guī)律及變化,我們已經(jīng)知道css三角形是怎么回事度陆,現(xiàn)在我們來看看另外一個(gè)撼嗓,常見的應(yīng)用:css之居中問題(垂直居中與水平居中)

垂直居中

單行文本垂直居中

首先狂塘,說說最簡單的常見居中方式-單行文本垂直居中:

<div class="single_line_text_box">
    <div class="single_line_text">單行文本垂直居中</div>
    <!-- <img src="" alt="" class="single_line_text"> -->
</div>
<style>
    .single_line_text_box {
        height: 100px; width: 100%; background: #333; line-height: 100px; text-align: center;
    }
    .single_line_text {
        vertical-align: middle; position: relative;
    }
</style>

這方式很簡單夜焦,我們常用來做單行文本的垂直居中懒震,它的用處也只限與垂直居中包含文本的容器和圖片,并且寬高不能設(shè)定不然無法居中嗤详。

說明:通過父容器設(shè)定line-height个扰,以及子元素設(shè)定vertical-align: middle;來實(shí)現(xiàn),其中子元素垂直居中不能設(shè)定寬度和高度,子元素的內(nèi)容必須為文本或圖片,且文字盡量不能換行不然會(huì)溢出

display:table的方式

下來就是display:table的方式葱色,這是一種借助表格樣式的居中方式:

<div class="table_parent">
        <div class="table_child">說明:通過父容器設(shè)定display: table;递宅,以及子元素設(shè)定display: table-cell; vertical-align: middle;來實(shí)現(xiàn),其中子元素設(shè)定的高度寬度無效苍狰,子元素的內(nèi)容任意,內(nèi)容為文字時(shí)自動(dòng)換行照樣居中</div>
</div><br>
<div class="table_parent">
       <div class="table_child"><div class="table_child_content">display:table的方式</div></div>
 </div>
 <style>
        .table_parent {
            display: table; height: 100px; width: 100%; background: #eee; text-align: center;
        }
        .table_child {
            display: table-cell; vertical-align: middle;
        }
        .table_child_content {
            height: 20px; width: 500px; background: #aaa; display: inline-block;
        }
 </style>

這種方式的垂直居中效果如圖:

說明:這種方式通過父容器設(shè)定display: table;办龄,以及子元素設(shè)定display: table-cell; vertical-align: middle;來實(shí)現(xiàn),其中子元素設(shè)定的高度寬度無效淋昭,子元素的內(nèi)容任意,內(nèi)容為文字時(shí)自動(dòng)換行照樣居中

絕對(duì)定位居中

絕對(duì)定位居中的方式俐填,這是一種借助絕對(duì)定位和外邊距的居中方式:

<div class="absolute_locating_parent">
        <div class="absolute_locating_child">絕對(duì)定位居中</div>
    </div>
    <style>
        .absolute_locating_parent {
            height: 100px; width: 100%; position: relative; background: #eee;
        }
        .absolute_locating_child {
            margin: auto; position: absolute; width: 100px; height: 50px; background: #aaa;
            top: 0; left: 0; bottom: 0; right: 0;
        }
    </style>

這種方式的垂直居中效果如圖:

說明:通過父容器設(shè)定position: relative;,子元素設(shè)定margin: auto; position: absolute;top: 0; left: 0; bottom: 0; right: 0;來實(shí)現(xiàn)翔忽,其中子元素必須固定寬高英融,子元素的內(nèi)容任意。其中絕對(duì)定位居中支持跨瀏覽器歇式,包括IE8-IE10驶悟,不論是否設(shè)置padding都可居中(在不使用box-sizing屬性的前提下),完美支持圖片居中材失。但是.必須聲明高度以及設(shè)置overflow:auto來防止內(nèi)容越界溢出痕鳍,在Windows Phone設(shè)備上不起作用。

彈性盒居中對(duì)齊

通過彈性盒來實(shí)現(xiàn)居中對(duì)齊龙巨,本人推薦的居中方式笼呆,但是注意兼容性。

<div class="elastic_box_centering">
        <div class="iconloader">
            <!-- <div class="iconloader_child"></div> -->
            Loader...
        </div>
    </div>
    <style>
        .elastic_box_centering {
            display: flex;
            align-items: center; /*定義元素垂直居中*/
            justify-content: center; /*定義容器里的元素水平居中*/
            width: 100%; height: 300px;
            background: #eee;
        }
        .iconloader {
            background: #aaa;
        }
        /*.iconloader_child {
            width: 50px; height: 50px;
        }*/
    </style>

這種方式的垂直居中效果如圖:

說明:通過彈性魔盒來實(shí)現(xiàn)居中恭应,這種方式特別優(yōu)雅只需要給父元素添加就可以抄邀,不論你子元素是什么樣子都居中

絕對(duì)定位和負(fù)margin

通過padding等份自填充來實(shí)現(xiàn)居中對(duì)齊的假象耘眨,除非特殊環(huán)境不然盡量不要使用這種居中方式昼榛。

div class="absolute_locating_margin">
    <div class="absolute_locating_margin_child">絕對(duì)定位和負(fù)margin</div>
</div>
<style>
    .absolute_locating_margin {
        height: 100px; width: 100%; background: #eee; position: relative;
    }
    .absolute_locating_margin_child {
        position: absolute; top: 50%; left: 50%;
        height: 50px; width: 180px; margin: -25px 0 0 -90px;
        background: #999;
    }
</style>

這種方式的垂直居中效果如圖:

說明:這種方式是通過定位然后利用margin彌補(bǔ)定位來實(shí)現(xiàn)的居中,其子元素的寬度和高度必須固定

padding居中假象

通過padding等份自填充來實(shí)現(xiàn)居中對(duì)齊的假象剔难,除非特殊環(huán)境不然盡量不要使用這種居中方式胆屿。

<div class="padding_center">
    <div class="padding_center_child">padding居中</div>
</div>
<style>
    .padding_center {
        padding: 5% 0; width: 100%; background: #eee;
    }
    .padding_center_child {
        text-align: center; background: #999; color: #fff; padding: 10% 0;
    }
</style>

這種方式的垂直居中效果如圖:

說明:這種方式是通過padding填充來實(shí)現(xiàn)的假象,其父元素和子元素的高度是未知偶宫,由瀏覽器自由定義

到此垂直居中基本贅述完畢非迹,其實(shí)還有幾種但是個(gè)人覺得有些無腦加胡鬧

水平居中

text-align內(nèi)容居中

我們常用這種方式來進(jìn)行居中,對(duì)于需要居中的都得是行內(nèi)元素或內(nèi)聯(lián)塊元素纯趋。

<div class="center">
    <div class="center_child">內(nèi)容居中</div>
</div>
<style>
    .center {
        height: 500px; width: 100%; background: #eee;  text-align: center;
    }
    .center_child {
       display: inline-block; width: 70px; height: 70px; background: #999; 
    }
</style>

margin: 0 auto;

對(duì)于這個(gè)大家一定很熟悉憎兽,很常用冷离。

<div class="margin_center">
    <div class="margin_center_child">內(nèi)容居中</div>
</div>
<style>
    .margin_center {
        height: 500px; width: 100%; background: #eee;
    }
    .margin_center_child {
       width: 70px; height: 70px; background: #999; margin: 0 auto;
    }
</style>

說明:margin: 0 auto;這種居中方式特別適合寬和高固定的,但是不知道寬的他就解決不了了纯命,于是下面的孕育而生

table+margin

對(duì)于這個(gè)大家就不一定很熟悉西剥,其實(shí)很簡單,給子元素加上display: table;這句話就可以了

<div class="table_margin_center">
    <div class="table_margin_center_child">table_margin_center居中</div>
</div>
<style>
    .table_margin_center {
        height: 500px; width: 100%; background: #eee;
    }
    .table_margin_center_child {
        background: #999; display: table; margin: 0 auto;
    }
</style>

小結(jié)

到此常見的居中方式就完畢了亿汞,我們可以對(duì)與兩個(gè)進(jìn)行配合應(yīng)用瞭空。

提示:后面還有精彩敬請期待,請大家關(guān)注我的CSDN博文:儂姝沁兒疗我,或者我的簡書專題:web前端咆畏。如有意見可以進(jìn)行評(píng)論,每一條評(píng)論我都會(huì)認(rèn)真對(duì)待吴裤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旧找,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子麦牺,更是在濱河造成了極大的恐慌钦讳,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枕面,死亡現(xiàn)場離奇詭異愿卒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)潮秘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門琼开,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枕荞,你說我怎么就攤上這事柜候。” “怎么了躏精?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵渣刷,是天一觀的道長。 經(jīng)常有香客問我矗烛,道長辅柴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任瞭吃,我火速辦了婚禮碌嘀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘歪架。我一直安慰自己股冗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布和蚪。 她就那樣靜靜地躺著止状,像睡著了一般烹棉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怯疤,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天峦耘,我揣著相機(jī)與錄音,去河邊找鬼旅薄。 笑死辅髓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的少梁。 我是一名探鬼主播洛口,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凯沪!你這毒婦竟也來了第焰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤妨马,失蹤者是張志新(化名)和其女友劉穎挺举,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烘跺,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湘纵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滤淳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梧喷。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖脖咐,靈堂內(nèi)的尸體忽然破棺而出铺敌,到底是詐尸還是另有隱情,我是刑警寧澤屁擅,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布偿凭,位于F島的核電站,受9級(jí)特大地震影響派歌,放射性物質(zhì)發(fā)生泄漏弯囊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一硝皂、第九天 我趴在偏房一處隱蔽的房頂上張望常挚。 院中可真熱鬧,春花似錦稽物、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吼过。三九已至,卻和暖如春咪奖,著一層夾襖步出監(jiān)牢的瞬間盗忱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工羊赵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趟佃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓昧捷,卻偏偏與公主長得像闲昭,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子靡挥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案序矩? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 一 外部式css樣式 (也可稱為外聯(lián)式)就是把css代碼寫一個(gè)單獨(dú)的外部文件中,這個(gè)css樣式文件以“.css...
    KunMitnic閱讀 927評(píng)論 0 1
  • 收聽音頻,戳鏈接,舊號(hào)itclan已暫停使用,歡迎關(guān)注微信itclanCoder公眾號(hào)可收聽更多音頻 前言 關(guān)于網(wǎng)...
    itclanCoder閱讀 8,156評(píng)論 3 30
  • ?這里涉及到行內(nèi)元素和塊級(jí)元素跋破。 行內(nèi)元素和塊級(jí)元素可以相互轉(zhuǎn)換簸淀,比如用display來進(jìn)行設(shè)置。 行內(nèi)元素(又叫...
    憶飛閱讀 575評(píng)論 0 0
  • 垂直居中作為一個(gè)常見布局形式令蛉,或多或少的會(huì)給不熟悉頁面布局的人帶來困擾,這里參考Steven Bradley總結(jié)的...
    留七七閱讀 2,446評(píng)論 6 18