厚積薄發(fā) 前端學習筆記 CSS基礎篇-水平剥哑、垂直居中布局

水平硅则、垂直居中布局是每個前端人必備掌握的基礎技能之一,也是各大公司無比常用的面試題之一株婴,可能我們在實踐中用不到這么多的方法怎虫,但是掌握主流的垂直居中布局方法,是一個前端人的必須的職業(yè)素養(yǎng)之一困介,本文歸納總結了筆者認為比較實用的一些方法大审,另外一些奇淫技巧不在本文的討論范圍內

GitHub項目鏈接

寫在前面

相關代碼我只貼出水平垂直居中的,水平和垂直居中的綜合方案代碼座哩,水平和垂直居中的分別的代碼其實大部分都是融合在水平垂直居中布局中的

水平居中

  • 方法一:父元素text-align 子元素必須是inline-block或者inline
  • 方法二:子元素設置margin:0 auto
  • 方法三:父元素設置position:relative徒扶,子元素通過absolute+left+transform水平居中
    注意:這里居中的只是子元素的左邊線,為了讓整個子元素實現(xiàn)真正意義的居中根穷,必須調整至子元素的中線居中姜骡,也就是必須向左調整半個子元素寬度的距離
  • 方法四:父元素設置position:relative,子元素通過absolute+left+margin水平居中
    注意:這個方法和上面方法三類似屿良,唯一不同的是修正子元素整體定位時圈澈,這里用的是margin-left:-xxx,而方法三用的是css3的transform尘惧,方法三可以不用知道子元素的寬度康栈,方法四必須知道子元素的寬度
  • 方法五:flex布局

垂直居中

  • 方法一:父元素設置position:relative,子元素通過absolute+top+transform垂直居中
    注意:這個方法和水平居中方法三類似喷橙,所以也必須調整中心線居中啥么,另外考慮適配性
  • 方法二:父元素設置position:relative,子元素通過absolute+top+margin-top:-xxx垂直居中
    注意:這個方法和水平居中方法四類似重慢,所以也必須調整中心線居中饥臂,另外必須知道子元素寬度
  • 方法三:文本內容居中 設置line-height等于父級元素高度,文本垂直居中
  • 方法四:display:table-cell和vertical-algin: middle 進行垂直居中
    注意1:圖片的垂直居中也是用這個屬性vertical-algin: middle
    注意2:table-cell無法自動填充父級元素似踱,除非父級元素是display:table隅熙,所以這里也就無法使用width:100%,只能手動設置px寬度核芽,如果想要自適應父元素囚戚,也可以,只需要在外層再套一層父元素轧简,設置為display:table即可
    注意3:vertical-algin和line-height這兩個屬性對于行內元素垂直居中是比較常用的驰坊,建議讀者深入了解一下這兩個屬性的用法,這里不做詳細說明
  • 方法五:flex布局

總結:塊級元素水平垂直居中

首先列出通用的css樣式
通用css樣式

/* 父元素通用樣式 */
.containerCommon {
  height: 100px;
  background-color: gray;
}

/* 子元素通用樣式 */
.itemCommon {
  width: 80px;
  height: 40px;
  background-color: black;
  color: white;
}
  • 綜合定位方案1
    這個方法就是通過父元素設置position:relative哮独,子元素通過absolute+left+top+margin或transform來達到布局要求拳芙,使用margin來調整位置需要知道子元素寬度察藐,使用transform: translate(-50%,-50%)來調整位置,需要考慮適配性
.container-11 {
  position: relative;
}

.item-11 {
  position: absolute;
  left: 50%;
  top: 50%;
  /*這里不用transform的話舟扎,就必須知道子元素寬度分飞,通過margin-left和margin-right進行位移*/
  transform: translate(-50%, -50%);
}
  • 綜合定位方案2
    這個方法就是通過父元素設置position:relative,子元素通過left:0,right:0,top:0,bottom:0,margin:auto來達到布局要求
.container-12 {
  position: relative;
}

.item-12 {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  margin: auto;
}
  • 利用display:table和display:table-cell特性
    說明:table-cell會自動填充table的空間睹限,垂直居中使用vertical-align:middle; 水平居中可以使用行內元素的text-align:center;譬猫,也可以在子元素設置 margin: 0 auto;
.container-13 {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
  width: 200px;
}

.item-13 {
  display: inline-block;
  color: white;
  background-color: black;
  /* margin: 0 auto; */
}
  • flex布局
.container-14 {
  display: flex;
  justify-content: center;
  align-items: center;
}

寫在后面

關于介紹的所有方法水平垂直居中布局方法中,在不考慮兼容性的情況下羡疗,首推flex布局染服,flex的特性現(xiàn)在主流瀏覽器都已經兼容到了,簡介易用的語法叨恨,應該沒誰不喜歡用了柳刮,除非是老版本的IE。其次就是綜合定位方案2痒钝,相對比較傳統(tǒng)的定位布局方法诚亚,兼容性都比較好,綜合定位方案1要考慮 transform: translate(-50%, -50%)方法的兼容性

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末午乓,一起剝皮案震驚了整個濱河市站宗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌益愈,老刑警劉巖梢灭,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蒸其,居然都是意外死亡敏释,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門摸袁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钥顽,“玉大人,你說我怎么就攤上這事靠汁》浯螅” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵蝶怔,是天一觀的道長奶浦。 經常有香客問我,道長踢星,這世上最難降的妖魔是什么澳叉? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上成洗,老公的妹妹穿的比我還像新娘五督。我一直安慰自己,他們只是感情好瓶殃,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布概荷。 她就那樣靜靜地躺著,像睡著了一般碌燕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上继薛,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天修壕,我揣著相機與錄音,去河邊找鬼遏考。 笑死慈鸠,一個胖子當著我的面吹牛,可吹牛的內容都是我干的灌具。 我是一名探鬼主播青团,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咖楣!你這毒婦竟也來了督笆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤诱贿,失蹤者是張志新(化名)和其女友劉穎娃肿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珠十,經...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡料扰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了焙蹭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晒杈。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖孔厉,靈堂內的尸體忽然破棺而出拯钻,到底是詐尸還是另有隱情,我是刑警寧澤撰豺,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布说庭,位于F島的核電站,受9級特大地震影響郑趁,放射性物質發(fā)生泄漏刊驴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捆憎。 院中可真熱鬧舅柜,春花似錦、人聲如沸躲惰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽础拨。三九已至氮块,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诡宗,已是汗流浹背滔蝉。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留塔沃,地道東北人蝠引。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像蛀柴,于是被迫代替她去往敵國和親螃概。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內容