CSS的幾種布局實(shí)現(xiàn)

左右布局

這個(gè)布局比較簡(jiǎn)單,直接使用float就可以實(shí)現(xiàn)

.left {
  height: 100px;
  border: 1px solid red;
  float: left;
  width: 50%;
/* 加上box-sizing是為了整個(gè)盒模型寬度計(jì)算方便 */
  box-sizing: border-box;
}

.right {
  height: 100px;
  border: 1px solid green;
  float: left;
  width: 50%;
  box-sizing: border-box;
}

左中右布局

  • 實(shí)現(xiàn)1:使用左右布局的思路實(shí)現(xiàn)
.left {
  height: 100px;
  border: 1px solid red;
  float: left;
  width: 30%;
  box-sizing: border-box;
}

.middle {
  height: 100px;
  border: 1px solid yellow;
  float: left;
  width: 30%;
  box-sizing: border-box;
}

.right {
  height: 100px;
  border: 1px solid green;
  float: left;
  width: 30%;
  box-sizing: border-box;
}
  • 實(shí)現(xiàn)2:使用inline-block+text-align實(shí)現(xiàn)
<div class="wrapper">
    <div class="left">left</div>
    <div class="middle">middle</div>
    <div class="right">right</div>
</div>

<!-- font-size相關(guān)的代碼是為了去除inline-block元素之間的間隙 -->
.wrapper {
  text-align: center;
  font-size: 0px;
}

.left {
  display:inline-block;
  border: 1px solid red;
  font-size: 14px;
}

.middle {
  display:inline-block;
  border: 1px solid yellow;
  font-size: 14px;
}

.right {
  display:inline-block;
  border: 1px solid green;
  font-size: 14px;
}

水平居中

  • 實(shí)現(xiàn)1
div {
  /* 必須指定寬度才能生效 */
  width: 100px;
  margin: 0 auto;
}
  • 實(shí)現(xiàn)2:inline-block+text-align,不在重復(fù)
  • 實(shí)現(xiàn)3:先用margin將div整個(gè)移動(dòng)到頁(yè)面寬度一般出,再往回移動(dòng)div寬度一半的距離即可實(shí)現(xiàn)水平居中
div {
  height: 100px;
  width: 100px;
  border: 1px solid red;
  margin-left: 50%;
  position: relative;
  transform: translateX(-50%);
}

垂直居中

  • 實(shí)現(xiàn)1:設(shè)置line-height可以實(shí)現(xiàn)單行文字的垂直居中
  • 實(shí)現(xiàn)2:使用vertical-align可以實(shí)現(xiàn)內(nèi)聯(lián)元素的垂直居中
  • 實(shí)現(xiàn)3:多行文本可以通過(guò)調(diào)整padding-toppadding-bottom實(shí)現(xiàn)垂直居中
  • 實(shí)現(xiàn)4:和水平居中實(shí)現(xiàn)3是類似的思路,只不過(guò)用了絕對(duì)定位
<div class="wrapper">
    <div class="inner"></div>
</div>

.wrapper {
  height: 200px;
  border: 1px solid red;
  position: relative;
}

.inner {
  height: 50px;
  width: 50px;
  border: 1px solid blue;
  position: absolute;
  top: 100px;
  transform: translateY(-50%);
}

小技巧

  • 一般使用了display: inline-block都要加上vertical-align: top,避免出現(xiàn)奇怪的空隙
  • 很多CSS效果都可以使用網(wǎng)上的generator來(lái)生成,更加方便
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,806評(píng)論 1 92
  • 1. 前言 前端圈有個(gè)“梗”:在面試時(shí),問(wèn)個(gè)css的position屬性能刷掉一半人,其中不乏工作四五年的同學(xué)。在...
    YjWorld閱讀 4,543評(píng)論 5 15
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,741評(píng)論 1 45
  • 盼望著,校園里的櫻花開(kāi)了。心萌生在春天,念在咫尺,如遺落花間的美麗,醉在落紅深處的天涯,泛起點(diǎn)點(diǎn)相思。 櫻花不像桃...
    赫章020劉凱閱讀 329評(píng)論 0 0
  • 那些單薄的青春中總有打馬而過(guò)的憂傷和喜悅…… 01 其實(shí)我和童浩之間真的沒(méi)有什么,清白的...
    嘶墨閱讀 577評(píng)論 0 2