CSS 居中的各種方案

CSS 居中的各種方案

  • 實現居中的樣式分為容器 (container) 的樣式和需要居中的元素 (item) 的樣式最住。
  • 容器默認指一個塊級元素望众。
  • 各種方案都有其優(yōu)缺點揩尸,根據實際需求選擇绣溜。如果不考慮兼容性的話牍戚,優(yōu)先選擇用 flex 實現幕帆。

水平居中

  • 行內或行內塊元素
    .container {
      text-align: center;
    }
    
  • 單個塊級元素
    .item {
      margin: 0 auto;
    }
    
  • 多個塊級元素
    • inline-block 方案
      .container {
        text-align: center;
      }
      
      .item {
        display: inline-block;
      }
      
    • flex 方案
      .container {
        display: flex;
        justify-content: center;
      }
      

垂直居中

  • 行內或行內塊元素
    • 單行
      • 容器高度由元素撐開
        .container {
          padding: 50px 0;
        }
        
      • 容器高度固定并且已知
        .container {
          height: 100px;
          line-height: 100px;
        }
        
    • 多行(要將多行內容包成一個元素)
      • table 方案
        .container {
          display: table;
        }
        
        .item {
          display: table-cell;
          vertical-align: middle;
        }
        
      • flex 方案(多行內容為文本時获搏,可以不包成一個元素)
        .container {
          display: flex;
          flex-direction: column;
          justify-content: center;
        }
        
      • 偽元素方案
        • 元素的寬度必須小于容器的寬度,否則會被擠到容器下面失乾。
        • 這是因為即使的空的偽元素常熙,它跟它后面的行內元素或文本之間也會有空隙。
        • 這個空隙的大小跟字體大小有關碱茁,當字體大小等于 0 時空隙消失裸卫。
        • 所以這就導致后面元素在容器中可以占用的寬度變小了,于是當元素寬度等于容器寬度時纽竣,它就會被擠下去墓贿。
        • 解決的方法就是將容器的 font-size 設置為 0茧泪,然后在元素中再將 font-size 設置為所需的值。
        .container {
          font-size: 0;
        }
        
        .container::before {
          content: '';
          display: inline-block;
          height: 100%;
          vertical-align: middle;
        }
        
        .item {
          display: inline-block;
          vertical-align: middle;
          font-size: 16px;
        }
        
  • 單個塊級元素
    • 絕對定位方案
      • 元素高度已知
        .container {
          position: relative;
        }
        
        .item {
          position: absolute;
          top: 50%;
          height: 100px;
          margin-top: -50px;
        }
        
      • 元素高度未知
        .container {
          position: relative;
        }
        
        .item {
          position: absolute;
          top: 50%;
          transform: translateY(-50%);
        }
        
    • flex 方案
      .container {
        display: flex;
        flex-direction: column;
        justify-content: center;
      }
      

同時水平和垂直居中

  • 絕對定位方案
    .container {
      position: relative;
    }
    
    .item {
      position: absolute;
      top: 50%;
      left: 50%;
      width: 100px;
      height: 100px;
      margin: -50px 0 0 -50px;
    }
    
    .container {
      position: relative;
    }
    
    .item {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
    
    .container {
      position: relative;
    }
    
    .item {
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      width: 100px;
      height: 100px;
      margin: auto;
    }
    
  • flex 方案
    .container {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    
    .container {
      display: flex;
    }
    
    .item {
      margin: auto;
    }
    
  • grid 方案
    .container {
      display: grid;
    }
    
    .item {
      margin: auto;
    }
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末聋袋,一起剝皮案震驚了整個濱河市队伟,隨后出現的幾起案子,更是在濱河造成了極大的恐慌舱馅,老刑警劉巖缰泡,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異代嗤,居然都是意外死亡棘钞,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門干毅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宜猜,“玉大人,你說我怎么就攤上這事硝逢∫逃担” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵渠鸽,是天一觀的道長叫乌。 經常有香客問我,道長徽缚,這世上最難降的妖魔是什么憨奸? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮凿试,結果婚禮上排宰,老公的妹妹穿的比我還像新娘。我一直安慰自己那婉,他們只是感情好板甘,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著详炬,像睡著了一般盐类。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呛谜,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天在跳,我揣著相機與錄音,去河邊找鬼呻率。 笑死,一個胖子當著我的面吹牛呻引,可吹牛的內容都是我干的礼仗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼元践!你這毒婦竟也來了韭脊?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤单旁,失蹤者是張志新(化名)和其女友劉穎沪羔,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體象浑,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蔫饰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了愉豺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篓吁。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚪拦,靈堂內的尸體忽然破棺而出杖剪,到底是詐尸還是另有隱情,我是刑警寧澤驰贷,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布盛嘿,位于F島的核電站,受9級特大地震影響括袒,放射性物質發(fā)生泄漏次兆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一箱熬、第九天 我趴在偏房一處隱蔽的房頂上張望类垦。 院中可真熱鬧,春花似錦城须、人聲如沸蚤认。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砰琢。三九已至,卻和暖如春良瞧,著一層夾襖步出監(jiān)牢的瞬間陪汽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工褥蚯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挚冤,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓赞庶,卻偏偏與公主長得像训挡,于是被迫代替她去往敵國和親澳骤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案澜薄? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,728評論 1 92
  • H5移動端知識點總結 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,395評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,453評論 0 6
  • display:設置元素的顯示方式 display:block(塊級元素) 默認為父元素寬高为肮,可設置寬高相對前序換...
    bluishwhiteC閱讀 658評論 0 0
  • 系統(tǒng)需求 Mac OS X 步驟0 - 安裝系統(tǒng)需要的包 先安裝 Xcode 開發(fā)工具,它將幫你安裝好 Unix ...
    CodingIran閱讀 572評論 0 0