垂直居中&水平居中&垂直水平居中

垂直居中

行內

單行行內

設置子元素line-height(行高)等于父盒子高度

  .box{
           height: 300px;
           width: 300px;
           background: #FF6666;
       }
    a{
            line-height: 300px;
     }
<div class="box">
    <a href="">111</a>
</div>

? 7尥怠! 注意:行內元素沒有屬性width 和 height
還有 margin-top 和 margin-bottom 對內聯元素(行內元素)的高度沒有影響,并且由于margin是透明的,他也沒有任何的視覺影響震檩。

 #box{
           height: 300px;
           width: 300px;
           background: #FF6666;
           margin-top: 100px;
       }
        a{
           color: #6666FF;
            border-bottom: solid red 2px;
            padding-bottom: 30px;
            margin-bottom: 40px;
            margin-left: 20px;
            padding-left: 30px;
            border-left: orange solid 2px;
            background: orangered;
        }
<body>
<div id="box">
    <a href=""id="aaa">111</a>
</div>
<script>
    var aaa = document.getElementById("aaa");
    var contentHeight = window.getComputedStyle(aaa).height;
  var contentWidth = window.getComputedStyle(aaa).width;
    console.log(contentHeight);
    console.log(contentWidth);
</script>
</body>

控制臺輸出auto


多行行內

重新審視一下 CSS vertical-align 屬性 的定義:

該屬性定義行內元素的基線相對于該元素所在行的基線的垂直對齊。允許指定負長度值和百分比值蜓堕。這會使元素降低而不是升高抛虏。在表單元格中,這個屬性會設置單元格框中的單元格內容的對齊方式套才。

--- inline水平的元素無法設置line-height迂猴,所以display要設置成inline-block

方法一:
    <style>
        *{padding: 0;margin:0;font-size: 12px;}
        div{
              float: left;
              width: 200px;
              height:200px;
               margin: 10px;
              border:1px solid blue;
               line-height: 200px;
              }
        span{
              display: inline-block;
              vertical-align: middle;
              line-height: 22px;
              }
    </style>
 
    <div>
        <span>測試文字測試文字</span>
    </div>
    <div>
        <span>測試文字 <br/> 測試文字<br/> 測試文字<br/> 測試文字<br/> 測試文字<br/> 測試文字</span>
    </div>

關鍵:
① 父元素(這里是div)設置和高度一致的 line-height (這里是200px)--- 由后面的vertical-align定義看,這是為了設置div的基線

② 子元素 (這里是span) 設置合適的line-height霜旧,并設置display:inline-block错忱、vertical-align: middle; --- inline水平的元素無法設置line-height。所以這里要設置inline-block挂据。

由 CSS vertical-align 屬性 的定義可知需要注意 :

vertical-align屬性應該設置到 行內元素上(行內塊元素也可)

方法二:

利用display:table-cell

    <style>
        *{padding: 0;margin:0;font-size: 12px;}
        div{display: table-cell;width: 200px;border:1px solid blue;vertical-align: middle;}
    </style>
 
    <div>
        <span>測試文字測試文字</span>
    </div>
    <div>
        測試文字測試文字
    </div>
    <div>
        <span>測試文字 <br/> 測試文字<br/> 測試文字<br/> 測試文字<br/> 測試文字<br/> 測試文字</span>
    </div>

優(yōu)點:等高布局以清,無需設置高度,文字輕松實現垂直居中,不用知道父盒子高度崎逃。而方法一中需要知道父盒子高度掷倔。


塊級

1.定位方法

子絕父相 子盒子top設為50%

1)定高

margin-top:元素高度一半的px( 注意!个绍!寫精具體px 不要寫百分數)或者transform:translateY(-50%)


2)不定高

transform:translateY(-50%) 即相對自身高度的一半


2.flexbox(定不定高都可)

水平居中

行內元素

1)若父元素是塊級元素勒葱,直接給父元素設置text-align:center
2)父元素不是塊級元素,將父元素設成塊級元素巴柿,再設置text-align:center


image.png

塊級元素

一.(分寬度定不定)

定寬:
需要誰居中就設置誰的margin:0 auto
不定:
默認子元素寬度與父元素一樣凛虽,設子元素的display為:inline-block/inline 再給父元素設置text-align:center

二.定位

子絕父相 子元素:left:50%
定寬:
子元素:margin-left:-子元素寬度一半px或transform:translateX(-50%)
不定:
transform:translateX(-50%)

三.flexbox

父元素:display:flex;justfiy-content:center广恢;

水平垂直居中

已知高和寬

子絕父相凯旋,定位實現
法一:top:0px;bottom:0px;left:0px至非;right:0px钠署;margin:auto;
法二:子元素:left:50%荒椭;top:50%谐鼎;margin-left:-寬一半px;margin-top:-高一半px趣惠;

未知高和寬

一.定位

left:50%狸棍;top:50%;translateX(-50%)translateY(-50%)

二.flex

父元素:display:flex味悄;justfiy-content:center隔缀;align-items:center;

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末傍菇,一起剝皮案震驚了整個濱河市猾瘸,隨后出現的幾起案子,更是在濱河造成了極大的恐慌丢习,老刑警劉巖牵触,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異咐低,居然都是意外死亡揽思,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門见擦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钉汗,“玉大人,你說我怎么就攤上這事鲤屡∷鹛担” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵酒来,是天一觀的道長卢未。 經常有香客問我,道長堰汉,這世上最難降的妖魔是什么辽社? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮翘鸭,結果婚禮上滴铅,老公的妹妹穿的比我還像新娘。我一直安慰自己就乓,他們只是感情好汉匙,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布譬淳。 她就那樣靜靜地躺著,像睡著了一般盹兢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上守伸,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天绎秒,我揣著相機與錄音,去河邊找鬼尼摹。 笑死见芹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的蠢涝。 我是一名探鬼主播玄呛,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼和二!你這毒婦竟也來了徘铝?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤惯吕,失蹤者是張志新(化名)和其女友劉穎惕它,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體废登,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡淹魄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了堡距。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甲锡。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖羽戒,靈堂內的尸體忽然破棺而出缤沦,到底是詐尸還是另有隱情,我是刑警寧澤易稠,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布疚俱,位于F島的核電站,受9級特大地震影響缩多,放射性物質發(fā)生泄漏呆奕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一衬吆、第九天 我趴在偏房一處隱蔽的房頂上張望梁钾。 院中可真熱鬧,春花似錦逊抡、人聲如沸姆泻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拇勃。三九已至四苇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間方咆,已是汗流浹背月腋。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓣赂,地道東北人榆骚。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像煌集,于是被迫代替她去往敵國和親妓肢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案苫纤? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,751評論 1 92
  • 一 外部式css樣式 (也可稱為外聯式)就是把css代碼寫一個單獨的外部文件中碉钠,這個css樣式文件以“.css...
    KunMitnic閱讀 939評論 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準卷拘。 注意:講述HT...
    kismetajun閱讀 27,485評論 1 45
  • 水平居中 子元素寬高已知: .parent{ position: relative; } .child{ posi...
    愛在幾米之瑤閱讀 298評論 0 0
  • 今天長沙下起了蒙蒙雨放钦,等了 好久,公交還未到恭金,突然腦海里浮現了另一個等公交的場景…… 這是大概十天前操禀,在公交站等車...
    金融文藝小妖閱讀 327評論 0 0