CSS水平和垂直居中

一、內(nèi)聯(lián)元素

1. 定義:

在html中,<span>季稳、<a>、<label>澈魄、 <strong> 和<em>就是典型的內(nèi)聯(lián)元素(行內(nèi)元素)(inline)元素景鼠。
當(dāng)然塊狀元素也可以通過代碼display:inline將元素設(shè)置為內(nèi)聯(lián)元素。

內(nèi)聯(lián)元素特點(diǎn):

  • 1痹扇、和其他元素都在一行上铛漓;

  • 2、元素的高度鲫构、寬度及頂部和底部邊距不可設(shè)置浓恶;

  • 3、元素的寬度就是它包含的文字或圖片的寬度结笨,不可改變包晰。

2.水平居中

在其父元素(父元素一般為div這些塊狀元素)上設(shè)置text-align:center;
display:flex; justify-content:center;

//html
<div class="father">
        <span class="child">子內(nèi)聯(lián)</span>
 </div>

//css
.father {
            background: red;
            text-align: center;
            //或display:flex;
            //justify-content:center;
        }
 .child {
            background: green;
        }

效果:


圖片.png

3. 垂直居中

(1)父元素高度確定的單行文本(內(nèi)聯(lián)元素),設(shè)置 height = line-height;

.father {
            background: red;
            height: 100px;
        }
        
        .child {
            background: green;
            line-height: 100px;
        }

效果:


圖片.png

(2) 父元素高度確定的多行文本(內(nèi)聯(lián)元素)

a:插入 table (插入方法和水平居中一樣)炕吸,然后設(shè)置 vertical-align:middle伐憾;
b:先設(shè)置 display:table-cell 再設(shè)置 vertical-align:middle;
  <style>
        .father {
            background: red;
            height: 100px;
            display: table-cell;
            vertical-align: middle;
        }
        
        .child1 {
            background: green;
        }
        
        .child2 {
            background: yellow;
        }
        
        .child3 {
            background: blue;
        }
    </style>
</head>

<body>
    <div class="father">
        <span class="child1">子內(nèi)聯(lián)1</span>
        <span class="child2">子內(nèi)聯(lián)2</span>
        <span class="child3">子內(nèi)聯(lián)3</span>
    </div>
</body>

效果:


圖片.png

二赫模、塊級(jí)元素

在html中<div>树肃、 <p>、<h1>嘴瓤、<form>扫外、<ul> 和 <li>就是塊級(jí)元素。設(shè)置display:block就是將元素顯示為塊級(jí)元素廓脆。如a{display:block;}就是將內(nèi)聯(lián)元素a轉(zhuǎn)換為塊狀元素,從而使a元素具有塊狀元素特點(diǎn)磁玉。

塊級(jí)元素特點(diǎn):

  • 1停忿、每個(gè)塊級(jí)元素都從新的一行開始,并且其后的元素也另起一行蚊伞。(一個(gè)塊級(jí)元素獨(dú)占一行

  • 2席赂、元素的高度吮铭、寬度、行高以及頂和底邊距都可設(shè)置颅停。

  • 3谓晌、元素寬度在不設(shè)置的情況下,是它本身父容器的100%(和父元素的寬度一致)癞揉,除非設(shè)定一個(gè)寬度纸肉。

1.水平居中

(1)定寬塊狀元素:

設(shè)置 左右 `margin: auto;`
圖片.png

(2) 不定寬塊狀元素:
a:在元素外加入 table 標(biāo)簽(完整的喊熟,包括 table柏肪、tbody、tr芥牌、td)烦味,該元素寫在 td 內(nèi),然后設(shè)置 margin 的值為 auto壁拉;
b:給該元素設(shè)置 display:inline 方法谬俄;
c:父元素設(shè)置 position:relative 和 left:50%,子元素設(shè)置 position:relative 和 left:50%

2. 垂直居中

1.知道元素寬高

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  height: 100px;
  margin-top: -50px; /* account for padding and border if not using box-sizing: border-box; */
}

or:

<style>
        .father {
            background: red;
            display: table;
            width: 300px;
            height: 300px;
        }
        
        .child {
            display: table-cell;
            vertical-align: middle;
            text-align: center;//同時(shí)水平居中時(shí)加
        }
    </style>
</head>

<body>

    <div class="father">
        <div class="child">
            子塊狀
        </div>
    </div>
圖片.png

2.未知高度:仍然可以通過將其調(diào)高到其一半的高度來進(jìn)行對(duì)中:

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

2.靈活的Flex(推薦)

    <style>
        .father {
            background: red;
            height: 100px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        .child {
            background: green;
        }
    </style>
</head>

<body>

    <div class="father">
        <div class="child">
            子塊狀
        </div>
    </div>
圖片.png

水平和垂直

1.已知高寬
使用等于該寬度和高度的一半的負(fù)邊距弃理,在將其絕對(duì)定位在50%/ 50%之后凤瘦,將以很好的跨瀏覽器支持為中心:

.parent {
  position: relative;
}

.child {
  width: 300px;
  height: 100px;
  padding: 20px;

  position: absolute;
  top: 50%;
  left: 50%;

  margin: -70px 0 0 -170px;
}

2.未知高寬
可以使用transform屬性和兩個(gè)方向上的50%負(fù)向平移(它基于元素的當(dāng)前寬度/高度)居中:

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

3.使用flex布局

要使用flexbox在兩個(gè)方向上居中,您需要使用兩個(gè)居中屬性:

.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}

4.使用網(wǎng)格

body, html {
  height: 100%;
  display: grid;
}
span { /* thing to center */
  margin: auto;
}

可參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末案铺,一起剝皮案震驚了整個(gè)濱河市蔬芥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌控汉,老刑警劉巖笔诵,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異姑子,居然都是意外死亡乎婿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門街佑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谢翎,“玉大人,你說我怎么就攤上這事沐旨∩” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵磁携,是天一觀的道長(zhǎng)褒侧。 經(jīng)常有香客問我,道長(zhǎ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
  • 文/蒼蘭香墨 我猛地睜開眼学少,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了秧骑?” 一聲冷哼從身側(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ú)居荒郊野嶺守林人離奇死亡骂澄,尸身上長(zhǎng)有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
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像酸纲,于是被迫代替她去往敵國和親捣鲸。 傳聞我的和親對(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
  • 本文主要是起筆記的作用栽惶,內(nèi)容來自慕課網(wǎng). 認(rèn)識(shí)CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,622評(píng)論 0 30
  • CSS格式化排版 1、字體 我們可以使用css樣式為網(wǎng)頁中的文字設(shè)置字體疾嗅、字號(hào)外厂、顏色等樣式屬性。下面我們來看一個(gè)例...
    張文靖同學(xué)閱讀 1,278評(píng)論 0 3
  • 一 外部式css樣式 (也可稱為外聯(lián)式)就是把css代碼寫一個(gè)單獨(dú)的外部文件中宪迟,這個(gè)css樣式文件以“.css...
    KunMitnic閱讀 927評(píng)論 0 1
  • 寫下這些文字時(shí)次泽,我的心情非常沉重穿仪,為了一個(gè)人人都離不開的東西-錢。 今天是天貓和京東的618大促意荤,購物車?yán)镌缭邕x好...
    九號(hào)12閱讀 272評(píng)論 0 0