美文网首页
CSS布局方案——居中布局

CSS布局方案——居中布局

作者: 白小九 | 来源:发表于2016-12-15 17:30 被阅读0次

水平居中

  • 假设有HTML如下:
<div class="parent">
    <div class="child">这里都是child不定宽高的解决方案</div>
</div>
  • 方案一:inline-block + text-align
    • CSS代码:
    .parent{ text-align:center; }
    .child{ display:inline-block; }
    
    • 优点:方法简单,兼容性也不错。
    • 缺点:1、text-align:center会导致文本也居中,可能需要额外处理;2、IE7-不支持inline-block,可以用*display:inline*zoom:1模拟。
  • 方案二:table + margin
    • CSS代码:
    .child{ display:table; margin:0 auto; }
    
    • 优点:只需要设置child,兼容性也不错。
    • 缺点:IE7-不支持display:table,可以把HTML结构换成table。
    • PS:可以将display:table换成display:inline-block
  • 方案三:position + translate
    • CSS代码:
    .parent{ position:relative; }
    .child{ position:absolute; left:50%; transform:translateX(-50%); }
    
    • 优点:绝对定位元素脱离文档流,因此该居中的元素不会对其他元素产生影响。
    • 缺点:transform是CSS3属性,因此IE8-不支持,而且不同的浏览器需要加上其私有前缀。
  • 方案四:flex + justify-content
    • CSS代码:
    .parent{ display:flex; justify-content:center; }
    
    • 优点:只需要设置parent。
    • 缺点:IE8-不支持flex
    • PS:可以把justify-content:center换成margin:0 auto

垂直居中

  • 假设有HTML如下:
<div class="parent">
    <div class="child">这里都是child不定宽高的解决方案</div>
</div>
  • 方案一:table-cell + vertical-align
    • CSS代码:
    .parent{ display:table-cell; vertical-align:middle; }
    
    • 优点:1、方法简单,兼容性也不错;2、只需要设置parent。
    • 缺点:IE7-不支持display:table-cell,可以把HTML结构换成table。
    • PS:vertical-align只能用于行内元素和table元素。
  • 方案二:position + translate
    • CSS代码:
    .parent{ position:relative; }
    .child{ position:absolute; top:50%; transform:translateY(-50%); }
    
    • 优缺点:参考水平居中布局的方案三。
  • 方案三:flex + align-items
    • CSS代码:
    .parent{ display:flex; align-items:center; }
    
    • 优点:只需要设置parent。
    • 缺点:1、IE8-不支持flex;2、IE10-不支持align-items,且不同浏览器要加私有前缀。
    • PS:可以把parent中align-items:center去掉,在子元素中添加align-self:center,但IE10-也不支持align-self

水平垂直居中

  • 假设有HTML如下:
<div class="parent">
    <div class="child">child不定宽高</div>
</div>
  • 方案一:水平居中的方案一+垂直居中的方案二
.parent{ display:table-cell; vertical-align:middle; text-align:center; }
.child{ display:inline-block; }
  • 方案二:水平居中的方案三+垂直居中的方案二
.parent{ position:relative; }
.child{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); }
  • 方案三:水平居中的方案四+垂直居中的方案三
.parent{ display:flex; align-items:center; justify-content:center; }
  • 方案四:position + margin
    • CSS代码:
    .child{ position:absolute; top:0; right:0; bottom:0; left:0; margin:auto; }
    
    • 优点:兼容性强。
    • 缺点:必须声明width和height

相关文章

  • CSS布局方案——居中布局

    水平居中 假设有HTML如下: 方案一:inline-block + text-alignCSS代码:.paren...

  • 文章收藏

    CSS布局 CSS布局方案整理

  • 页面架构

    布局解决方案 水平居中布局 垂直居中布局 水平垂直都居中的布局 多列布局 多列等分布局 多列等高布局 在多列布局的...

  • CSS居中布局方案

    水平居中 垂直居中 水平垂直居中

  • CSS布局(不完全)总结

    CSS布局(不完全)总结 实现水平居中布局的几种方式 方法一: 通过以下CSS代码实现水平居中布局 方法二: 通过...

  • CSS常用布局实现

    该系列用于整理记录常用的CSS布局实现。 CSS常用布局实现01-水平居中 CSS常用布局实现02-垂直居中 CS...

  • CSS水平居中布局、垂直居中布局、垂直水平居中布局

    本章将介绍父子元素宽高不定的CSS水平居中布局、垂直居中布局、垂直水平居中布局。学习如何写出布局不是内容关键,解决...

  • CSS布局

    HTML CSS + DIV实现整体布局必备知识利用HTML和CSS实现常见的布局 单列布局 css 实现竖直居中...

  • web前端教程:CSS 布局十八般武艺都在这里了

    CSS布局 布局是CSS中一个重要部分,本文总结了CSS布局中的常用技巧,包括常用的水平居中、垂直居中方法,以及单...

  • html编程技巧

    字体外部描边 Css 基于flex布局的盒子上下居中 Css 基于flex布局的盒子左右居中 Css 基于flex...

网友评论

      本文标题:CSS布局方案——居中布局

      本文链接:https://www.haomeiwen.com/subject/osdgmttx.html