整合營銷服務商

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

          免費咨詢熱線:

          前端技巧:css居中(不確定寬度)

          切圖公司專門從事web前端開發,要想讓一個box居中,立馬想到最常用的就是margin:0 auto; 即便是position:absolute絕對定位下,也可以通過 left:50%; margin-left- (寬度的一半)來實現, 但是這個的前提是必須知道盒子的寬度,所以盒子居中主要有兩種情況:

          一.確定盒子的寬度,解決辦法有:

          1.1 margin:0 auto;

          1.2 position:relative;left:50%;margin-left:-0.5*width;(用絕對定位也可以)

          二.不確定盒子寬度的,而且盒子寬度可變的,方法如下

          2.1 position:relative:left:50%;transform:translateX(-50%);-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);//這里的50%是指盒子本身的50%;

          2.2 width:fit-content;width:-moz-fit-content;width:-webket-fit-content;margin:auto;

          來源:切圖網 qietu.com

          <div id="parent">
          <!-- 定義子級元素 -->
          <div id="child">居中布局</div>
          </div>

          過以下CSS樣式代碼實現水平方向居中布局效果

          .parent{display:table-cell;vertical-align:middle;}

          優點:

          瀏覽器的兼容性比較好

          缺點:

          vertical-algin屬性具有繼承性, 導致父級元素的文本也是居中顯示的

          平居中設置

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

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

          行內元素

          如果被設置元素為文本、圖片等行內元素時,水平居中是通過給父元素設置 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>
          

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


          主站蜘蛛池模板: 一区二区三区福利视频免费观看| 国产日产久久高清欧美一区| 日本福利一区二区| 日本免费一区二区三区最新vr| 久久青青草原一区二区| 国产一区韩国女主播| 国产亚洲一区二区在线观看 | 国产在线精品一区二区不卡| 一区二区三区在线观看视频| 亚洲日韩精品一区二区三区无码| 无码精品视频一区二区三区| 狠狠色综合一区二区| 精品国产一区二区三区www| 国产短视频精品一区二区三区| 国产91精品一区二区麻豆网站 | 亚洲一区二区三区在线观看蜜桃| av在线亚洲欧洲日产一区二区| 无码AV天堂一区二区三区| 国产裸体舞一区二区三区| 2022年亚洲午夜一区二区福利 | 亚洲一区日韩高清中文字幕亚洲 | 无码乱码av天堂一区二区 | 乱子伦一区二区三区| 国产99精品一区二区三区免费| 国产成人久久一区二区不卡三区 | 色久综合网精品一区二区| 亚洲中文字幕丝袜制服一区 | 亚洲av无码一区二区三区天堂 | 国产成人精品一区二区三区无码 | 亚洲一区精品无码| 熟女少妇精品一区二区| 国产成人高清视频一区二区| 天天躁日日躁狠狠躁一区| 91精品一区二区综合在线| 国产福利在线观看一区二区| 亚洲午夜电影一区二区三区 | 在线不卡一区二区三区日韩| 鲁丝片一区二区三区免费| 无码AV中文一区二区三区| 亚洲AV永久无码精品一区二区国产| 日产亚洲一区二区三区|