日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > CSS >内容正文

CSS

h5文字垂直居中_CSS实现居中的几种方式你都了解吗?

發布時間:2025/3/15 CSS 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 h5文字垂直居中_CSS实现居中的几种方式你都了解吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CSS(Cascading Style Sheets)層疊樣式表,是在1996年左右,W3C(萬維網聯盟)做HTML標準化的同時在HTML4.0之外開發的,拯救了當時越來越臃腫雜亂的HTML。

本文將按照由簡單至復雜的順序,展示在固定寬高的父容器中,實現單個子元素垂直水平居中的9種方式。

首先的HTML<body>部分都是<div>包含一個<p>:

<div class="box"><p>I'm Centered</p> </div>

為了方便觀察,CSS部分默認給<div>加了固定寬高和邊框,給<p>加了底色:

.box {width: 300px;height: 200px;border: 1px solid; } p {background: lightblue; }

此時<p>是默認的塊級盒子,撐滿了內容所在的一整行:

默認效果,未居中,p標簽沒到頂是因為自帶了外邊距

要達到的效果

途徑一:使用grid布局

  • 父容器設置 align-items justify-items 為 center ,這個很好理解
  • .box {width: 300px;height: 200px;border: 1px solid;display: grid;align-items: center;justify-items: center; } p {background: lightblue; }

    2. 同樣的,也可以把 justify-items 屬性換成 justify-content ,效果是一樣的

    .box {width: 300px;height: 200px;border: 1px solid;display: grid;align-items: center;justify-content: center; } p {background: lightblue; }

    但它和上一條方法的實現方式略有差別,justify-content 會把子元素所在網格收縮到內容所撐開的寬度,而 justify-items 會把網格撐滿父容器:

    justify-content下的網格僅到達內容的寬度

    justify-items下的網格撐滿父容器

    3. 直接在子元素上加 margin: auto; 應該是最簡便的方法了,利用子元素的外邊距撐滿父容器

    .box {width: 300px;height: 200px;border: 1px solid;display: grid; } p {background: lightblue;margin: auto; }

    途徑二:使用flex布局

    4. flex布局的方法和grid很像,但是flex布局中沒有 justify-items ,所以只能用 justify-content 啦

    .box {width: 300px;height: 200px;border: 1px solid;display: flex;align-items: center;justify-content: center; } p {background: lightblue; }

    5. 同樣的,也可以在子元素上加 margin: auto;

    .box {width: 300px;height: 200px;border: 1px solid;display: flex; } p {background: lightblue;margin: auto; }

    途徑三:使用table-cell布局

    6. table-cell布局表現像一個表格的單元格,父容器中加上 vertical-align 垂直居中和文字 text-align 水平居中就是垂直水平居中啦

    .box {width: 300px;height: 200px;border: 1px solid;display: table-cell;vertical-align: middle;text-align: center; } p {background: lightblue; }

    但是這時候會發現一個問題,我們設置的底色卻還是達到了父容器的左右兩端:

    底色未居中

    如果對底色水平居中也有要求,可以把子元素轉換為內聯盒子 inline-block

    .box {width: 300px;height: 200px;border: 1px solid;display: table-cell;vertical-align: middle;text-align: center; } p {background: lightblue;display: inline-block; }

    途徑四:使用絕對定位

    7. 子元素設置絕對定位,參考點是父容器,通過 left top 定位到靠中間的位置

    .box {width: 300px;height: 200px;border: 1px solid;position: relative; } p {background: lightblue;position: absolute;left: 50%;top: 50%; }

    定位后的位置,明顯不在中心

    接著移動子元素,向上向左各一半自己的高度和寬度

    .box {width: 300px;height: 200px;border: 1px solid;position: relative; } p {background: lightblue;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%); }

    移動后,看起來水平居中了,但是垂直還差一點

    還記得默認效果中<p>為什么沒到頂嗎?是的它的外邊距又來搗亂了,我們把它取消掉就可以完全居中啦

    .box {width: 300px;height: 200px;border: 1px solid;position: relative; } p {background: lightblue;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);margin: 0; }

    途(sǐ)徑(lù)五:不推薦

    8. 父容器設置文字水平居中,然后通過偽元素追加一個父容器高度的行高,最后子元素還要轉換為內聯盒子。或者行高加在父容器或子元素中,此時子元素要轉為行內元素或取消外邊距才行。由于過于復雜不推薦,故只展示一種情況的代碼

    .box {width: 300px;height: 200px;border: 1px solid;text-align: center; } .box::after {content: '';line-height: 200px; } p {background: lightblue;display: inline-block; }

    9. 體現CSS魅力的時候到了(霧

    .box {width: 300px;height: 200px;border: 1px solid;position: relative; } p {background: lightblue;width: 100px;height: 40px;position: absolute;top: 0;bottom: 0;left: 0;right: 0;margin: auto; }

    這種情況必須要給子元素設置寬高,仿佛所有的屬性都是給底色圍起來的框框設置的……肉眼可見效果并不好,而且代碼繁瑣。它存在的意義就是,當你考古時偶然遇到了,讓你知道前輩費勁巴力寫下的代碼,其實就是想實現一個居中的效果……

    你看出它偏了嗎?

    總結

    前面的方法肯定是現在在用的大部分,眼熟后幾種也不至于遇到就一臉萌逼:P


    參考文獻
    1. 饑人谷 - 居中的多種實現
    2. w3school - CSS 簡介

    總結

    以上是生活随笔為你收集整理的h5文字垂直居中_CSS实现居中的几种方式你都了解吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。