<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      水平垂直居中深入挖掘

      在上篇文章 -- 一行 CSS 代碼的魅力 的最后,提到了兩種快速實現(xiàn)水平垂直居中的方式。

      當(dāng)然,CSS 中實現(xiàn)水平垂直居中的方式很多。別看到水平垂直居中就準(zhǔn)備右上角 x 掉,本文的重點不是羅列有多少種方式實現(xiàn)水平垂直居中方式,而是探討一下常見的幾種水平垂直居中的方式的利弊。

      嗯哼?也就是:

      • 那么多種水平垂直居中的方式,如果真的在業(yè)務(wù)中需要使用了,你腦海里第一時間會想到哪個?
      • 不同的水平垂直居中方式,它們肯定存在差異,那么最顯著的不同是什么?
      • 有沒有所謂的最完美的水平垂直居中?

      本文將討論 4 種水平垂直居中的方式,分別是,并且每個起個名字方面下面看圖:

      1. absolute: position: absolute 配合 top:50%;left:50%;transform:translate(-50%, -50%)
      2. autobot: display:flex 配合 margin:auto
      3. flex: display:flex 配合 align-items:centerjustify-content:center
      4. grid: display:grid 配合 place-content:center;

       

      居中單個元素

      對于如下簡單的結(jié)構(gòu):

      1
      2
      3
      <div class="g-container">
          <div class="sub"></div>
      </div>

      居中單個元素而言,上述 4 種方法都很好,沒有問題。

      CodePen Demo -- Centering in CSS

       

      居中多個元素

      對于如下稍微復(fù)雜點的結(jié)構(gòu):

      1
      2
      3
      4
      5
      <div class="g-container">
          <div class="sub">1</div>
          <div class="sub">123</div>
          <div class="sub">123456</div>
      </div>

      那么如果是居中多個子元素,上述 4 種方法,就能體現(xiàn)出明顯的不一樣。稍微也修改一下子元素,不給它設(shè)定寬度,通過 padding 撐開即可:

      1
      2
      3
      4
      5
      .sub {
          border1px solid deeppink;
          padding10px;
          border-radius: 5px;
      }

      看看結(jié)果如何:

      CodePen Demo -- Centering in CSS 2

      簡單分析分析:

      1. absolute 的方法明顯有問題,由于用的絕對定位,其實 3 個子元素都疊在了一起
      2. flex 和 grid 的方法,如果不手動添加邊距(margin 或者 gap),會貼在一起
      3. 不限制方向的話,flex 默認(rèn)是水平排列,grid 是豎直排列
      4. 非常重要的一點,grid 布局下的子元素的寬度,所有子元素的寬度會被強行拉伸至最寬的一個子元素的內(nèi)容的寬度(也就是拉伸至網(wǎng)格寬度)

      對于多個子元素,absolute 方法明顯不適用, 接下來主要看剩余 3 個方法在一些細(xì)節(jié)上的差異。

       

      控制間距

      如果我們希望控制每個元素之間的間距呢?我們給 autobotflexgrid 的容器各自加上 gap: 5px,再看看:

      1
      2
      3
      .g-container{
          gap: 5px;
      }

      CodePen Demo -- Centering in CSS 3

      1. margin: auto 由于需要均分剩余空間,所以表現(xiàn)并不好,無法按照我們設(shè)想的 5px 寬度進(jìn)行間隔

       

      讓元素多到溢出

      OK,接下來,我們讓內(nèi)容再多一點,多到溢出整個容器,看看有什么不一樣。

      再來一張豎直方向排列的:

      CodePen Demo -- Centering in CSS 4

      可以看到:

      1. 非常重要的一點,由于沒有了剩余空間,margin: auto 已經(jīng)無法做到均勻分配,水平垂直居中了,而是一邊貼著容器邊,另外一邊溢出
      2. flex 和 grid 都做到了即便超出容器空間,依然是水平垂直居中的

       

      總結(jié)一下

      經(jīng)由上述幾個 DEMO 可以看出來,在目前比較常用的水平垂直居中方案當(dāng)中。flex 方案應(yīng)該是目前而言最優(yōu)的選擇,它能夠在各種環(huán)境下都保持內(nèi)部元素的水平垂直居中并且不改變子元素的某些特征:

      1. 便捷的水平垂直居中單個元素
      2. 便捷的水平垂直居中多個元素,無論是橫向、豎向,亦或內(nèi)容超出
      3. 非常方便控制子元素之間的間距
      4. 不會改變子元素的寬度

      當(dāng)然,美中不足的是,可能相對而言,要敲多幾個字符。??

      而 margin: auto 和 grid 則或多或少有一些小問題。absolute 無法應(yīng)付多個元素。

       

      最后

      本文知識點比較細(xì),也表明 CSS 雖然簡單,但是不代表它容易。我們?nèi)粘9ぷ髦杏玫降暮芏鄬傩云鋵嵾€有很多細(xì)節(jié)可以挖掘深入。

      譬如,可以再比較下在書寫方式 writing-mode 不同的場景下,上述水平垂直居中的方式的異同,等等。

      更多精彩 CSS 技術(shù)文章匯總在我的 Github -- iCSS ,持續(xù)更新,歡迎點個 star 訂閱收藏。

      如果還有什么疑問或者建議,可以多多交流,原創(chuàng)文章,文筆有限,才疏學(xué)淺,文中若有不正之處,萬望告知。

      posted @ 2021-01-08 15:43  歪歪//  閱讀(94)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日本韩无专砖码高清观看| 一本色道久久东京热| 亚洲成av人片无码天堂下载| 欧产日产国产精品精品| 亚洲熟妇在线视频观看| 国产人成精品一区二区三| 午夜福利在线观看入口| 一二三四区无产乱码1000集| 国产精品露脸视频观看| 国产粉嫩美女一区二区三| 国产激情视频在线观看首页| 亚洲av鲁丝一区二区三区黄| 亚洲一区二区av免费| 最新的精品亚洲一区二区| 亚洲经典在线中文字幕| 国产精品天天看天天狠| 成人小说亚洲一区二区三区| 欧美极品色午夜在线视频| 日本www一道久久久免费| 亚洲码与欧洲码区别入口| 亚洲精品一区二区在线播| japanese边做边乳喷| 丰满人妻一区二区三区无码AV| 国产精品一码二码三码四码| 国产av剧情md精品麻豆| 国产成人午夜精品永久免费| 无码日韩av一区二区三区| 日本牲交大片免费观看| 国产精品成人一区二区三区| 少妇午夜啪爽嗷嗷叫视频| 亚洲日本欧美日韩中文字幕| 亚洲高清aⅴ日本欧美视频| 天全县| av天堂久久精品影音先锋| 亚洲一区二区三区十八禁| 中文字幕乱妇无码AV在线| 亚洲AV乱码毛片在线播放| 在线播放国产精品三级网| 污网站在线观看视频| a级免费视频| 国产69精品久久久久99尤物|