整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          CSS-設置水平居中總結

          平居中設置

          我們在實際工作中常會遇到需要設置水平居中的場景,比如為了美觀,文章的標題一般都是水平居中顯示的。

          這里我們又得分兩種情況:行內元素 還是 塊狀元素 ,塊狀元素里面又分為定寬塊狀元素,以及不定寬塊狀元素。今天我們先來了解一下

          行內元素

          如果被設置元素為文本、圖片等行內元素時,水平居中是通過給父元素設置 text-align:center 來實現的。

          定寬塊狀元素

          當被設置元素為 塊狀元素 時用 text-align:center 就不起作用了,這時也分兩種情況:定寬塊狀元素和不定寬塊狀元素。

          如果是定寬塊狀元素。(定寬塊狀元素:塊狀元素的寬度width為固定值。)

          滿足定寬和塊狀兩個條件的元素是可以通過設置“左右margin”值為“auto”來實現居中的。

          不定寬塊狀元素

          不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):

          1. 加入 table 標簽
          2. 設置 display: inline 方法:與第一種類似,顯示類型設為 行內元素,進行不定寬元素的屬性設置
          3. 設置 position:relative 和 left:50%:利用 相對定位 的方式,將元素向左偏移 50% ,即達到居中的目的

          第一種做法:

          為什么選擇方法一加入table標簽? 是利用table標簽的長度自適應性---即不定義其長度也不默認父元素body的長度(table其長度根據其內文本長度決定),因此可以看做一個定寬度塊元素,然后再利用定寬度塊狀居中的margin的方法,使其水平居中。

          第一步:為需要設置的居中的元素外面加入一個 table 標簽 ( 包括 <tbody>、<tr>、<td> )。

          第二步:為這個 table 設置“左右 margin 居中”(這個和定寬塊狀元素的方法一樣)。

          舉例如下:

          html代碼:

          <div>
           <table>
           <tbody>
           <tr><td>
           <ul>
           <li>我是第一行文本</li>
           <li>我是第二行文本</li>
           <li>我是第三行文本</li>
           </ul>
           </td></tr>
           </tbody>
           </table>
          </div>
          

          css代碼:

          <style>
          table{
           border:1px solid;
           margin:0 auto;
          }
          </style>
          

          第二種做法:

          改變塊級元素的 display 為 inline 類型(設置為 行內元素 顯示),然后使用 text-align:center 來實現居中效果。如下例子:

          html代碼:

          <body>
          <div class="container">
           <ul>
           <li><a href="#">1</a></li>
           <li><a href="#">2</a></li>
           <li><a href="#">3</a></li>
           </ul>
          </div>
          </body>
          

          css代碼:

          <style>
          .container{
           text-align:center;
          }
          /* margin:0;padding:0(消除文本與div邊框之間的間隙)*/
          .container ul{
           list-style:none;
           margin:0;
           padding:0;
           display:inline;
          }
          /* margin-right:8px(設置li文本之間的間隔)*/
          .container li{
           margin-right:8px;
           display:inline;
          }
          </style>
          

          這種方法相比第一種方法的優勢是不用增加無語義標簽,但也存在著一些問題:它將塊狀元素的 display 類型改為 inline,變成了行內元素,所以少了一些功能,比如設定長度值。

          方法三:

          通過給父元素設置 float,然后給父元素設置 position:relative 和 left:50%,子元素設置 position:relative 和 left: -50% 來實現水平居中。

          我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對齊;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對齊,從而實現li層的居中。

          代碼如下:

          <body>
          <div class="container">
           <ul>
           <li><a href="#">1</a></li>
           <li><a href="#">2</a></li>
           <li><a href="#">3</a></li>
           </ul>
          </div>
          </body>
          

          css代碼:

          <style>
          .container{
           float:left;
           position:relative;
           left:50%
          }
          .container ul{
           list-style:none;
           margin:0;
           padding:0;
           
           position:relative;
           left:-50%;
          }
          .container li{float:left;display:inline;margin-right:8px;}
          </style>
          

          這三種方法使用得都非常廣泛,各有優缺點,具體選用哪種方法,可以視具體情況而定。

          習css大家是不是對元素居中的知識點很是模糊?是不是苦于找不到一個總結的通俗易懂的說明?是不是自己懶得去總結?今天小編在前端的學習與實踐中總結出的元素的五大居中方式,黏貼了代碼并對代碼做了解釋,希望對迷茫的有所幫助!

          下面的居中示例中,統一使用了同一個div作為父元素和p作為子元素

          設置一個div,并且設置了div的寬高邊框,div里面設置一個塊元素p,設置了它的寬高和背景色

          css居中方式1

          這里利用了偽元素讓子元素p在div盒子里左右水平居中只需要在它的父元素div里加text-align:center;垂直方向居中需要在父元素后面加了一個偽元素,并使得樣式為inline-block;height:100%;就是和父元素一樣高,vertical-align:middle;垂直居中,也就是p元素相對與偽元素居中,由于偽元素和div一樣高,所以相當于p元素在div里垂直居中。

          css居中方式2

          這里利用了定位居中

          子元素p設置position:absolute脫離文檔流,默認以html作為父元素,所以我們給父元素div設置position:relative;使得p以div為父元素做位置的變動,left:0;tight:0;top:0;bottom:0;(只有設置了定位的元素才可以使用這種方式來移動),最后margin:auto;就會水平和垂直都居中。

          css居中方式3

          這里利用了彈性盒居中

          父元素div設置成彈性盒樣式,justify-content:center;主軸居中

          align-items:center;垂直居中(而且這兩個只能設置在父元素上,彈性盒知識)

          css居中方式4

          利用定位線左上角居中,然后左移子元素寬度的一半,再上移子元素高度的一半。

          css居中方式5

          利用動畫移動屬性transform

          小編是一個有著5年工作經驗的架構師,關于web前端,自己有做材料的整合,一個完整學習web前端的路線,學習材料和工具。需要的伙伴可以私信我,發送“前端”等3秒后就可以獲取領取地址,免費送給大家。對于學習web前端有任何問題(學習方法,學習效率,如何就業)都可以問我。希望你也能憑自己的努力,成為下一個優秀的程序員!

          結語

          相信看了上面的有關Html5、css的元素五大居中方式,你們就可以解決自己的小問題了,但是也要養成一個總結的好習慣。好記性不如爛筆頭!以前留下來的話語總是有他的道理。Comeon!

          們在使用css來布局時經常需要進行居中,有時一個屬性就能搞定,有時則需要一定的技巧才能兼容到所有瀏覽器,利用css來實現對象的垂直居中有許多不同的方法,比較難的是應該選擇哪種正確的方法。比如我們都知道 margin:0 auto;的樣式能讓元素水平居中,而margin: auto;卻不能做到垂直居中……下面就css居中的一些常用方法做個集中的介紹。

          首先是水平居中,最簡單的辦法當然就是:

          margin:0 auto;

          文字的水平居中方法:

          利用line-height設為height的一樣即可:

          eg:

          .div {

          width:200px;

          height: 200px;

          line-height: 200px;/*實現垂直居中的關鍵*/

          text-align:center;

          font-size: 36px;

          background-color: #ccc;

          }

          絕對定位居中

          父容器元素:position: relative,子元素:position:absolute;

          eg:

          <div class="box">

          <div class="content"></div>

          </div>

          <style>

          .box{position:relative;width:200px;height:200px;background:#999;}

          .content{

          width: 50%;

          height: 50%;

          overflow: auto;

          margin: auto;

          position: absolute;

          top: 0; left: 0; bottom: 0; right: 0;

          background:#C9F;}

          </style>

          效果如下所示:

          !注意:高度必須定義,建議加 overflow: auto,防止內容溢出。

          flex居中

          介紹一下CSS3中的display:flex來實現的水平垂直居中的方法。

          eg:

          <div class="parent">

          <div class="children">我是通過flex的水平垂直居中噢!</div>

          </div>

          <style>

          .parent {

          display:flex;

          align-items: center;/*垂直居中*/

          justify-content: center;/*水平居中*/

          width:200px;

          height:200px;

          background-color:green;

          }

          .children {

          background-color:blue;

          color:#FFF;

          }

          </style>

          效果如下所示:

          這種方式最為簡便,就是兼容性不好,不過隨著時間的前進,各大瀏覽器一定會都兼容的。


          主站蜘蛛池模板: 丝袜美腿一区二区三区| 日本高清无卡码一区二区久久| 一区二区三区伦理高清| 日产亚洲一区二区三区| 久久免费视频一区| 波多野结衣av高清一区二区三区| 亚洲午夜日韩高清一区| 国产福利无码一区在线| 国产伦精品一区二区三区视频猫咪| 色一情一乱一伦一区二区三区| 日本一区二区三区不卡视频| 另类免费视频一区二区在线观看| 成人国产一区二区三区| 国产一区二区三区不卡在线观看| 国产精品视频一区二区三区| 无码人妻精品一区二区三区在线 | 国产精品一区二区av不卡| 亚洲一区二区无码偷拍| 亚洲色精品VR一区区三区| 中文字幕一区二区精品区| 亚洲国产精品无码久久一区二区| 免费无码毛片一区二区APP| 一区二区三区人妻无码| 一本AV高清一区二区三区| 国产精品小黄鸭一区二区三区| 无码国产精成人午夜视频一区二区| 亚洲AV综合色区无码一区爱AV | 内射一区二区精品视频在线观看| 国产精品亚洲综合一区在线观看| 天码av无码一区二区三区四区 | 中文字幕久久久久一区| 国产一区二区精品久久岳| 亚洲国模精品一区| 国产人妖视频一区二区| 亚洲爆乳无码一区二区三区| 日韩精品乱码AV一区二区| 性色AV一区二区三区天美传媒| 日韩一区二区在线观看| 国产AV国片精品一区二区| 国内国外日产一区二区| 亚洲一区二区三区不卡在线播放|