CSS各种居中,十分钟掌握

313 阅读3分钟

学习文章来自CSS水平居中+垂直居中+水平/垂直居中的方法总结,本文不详细探讨具体实现,只对其中的知识点做总结。

知识点:

  1. text-align: center运用在块级元素中,规定元素中的文本的水平对齐方式为居中对齐

潜台词:运用在块级元素中text-align会使其包含的行内元素对齐

  1. margin: 0 auto;在有宽度的块元素中生效。auto为自动填充,左右方向的auto值均分了剩余空间,使得块元素得以在包含块内居中显示

生效条件:

块级元素:给定宽度

行内元素: 先设置display:block使其变为块元素,再给定宽度

行内块元素:设置display:block

  1. display: inline-block; /display: inline 使其转换成行内块级/行内元素

  2. left:50%令子元素左上角水平居中(生效前提是需要设置本身的position:absolute或relative)

  3. translate(-50%,-50%) 作用是,往上(x轴),左(y轴)移动自身长宽的 50%,以使其居于中心位置。translate()函数是css3的新特性

  4. margin-left 为负值时,在元素本身有宽度的情况下,会产生位移,margin-top为负值时,不管是否设置高度,都不会增加高度,而会产生向上的位移

  5. line-height: 父元素高度行高等于高度值时可居中块级元素内的文字(只对单行文本有效)

  6. display: table-cell让标签元素以表格单元格的形式呈现,可用于实现居中效果

  7. vertical-align: middle;设置元素的垂直对齐方式为将此元素放置在父元素的中部

  8. display: flex; 表明使用flex布局模型

  9. align-items: center;决定flex items在交叉轴(默认为y轴)上的对齐方式为居中对齐

  10. justify-content: center; :决定flex item在主轴(默认为x轴)上的对齐方式为居中对齐

有了上面的知识储备后,居中实现就更容易理解了。

行内元素

水平居中

  1. 父元素为块元素:父元素设置text-align: center属性 (知识点1)
  2. 父元素不为块元素:父元素设置display: block属性,使之变成块元素,之后操作同1 (知识点1,3)

垂直居中

  1. 单行行内元素:行内元素设置line-height: 父元素高度属性 (知识点7)
  2. 多行行内元素:父元素设置display: table-cellvertical-align: middle;属性 (知识点8,9)

块级元素

水平居中

  1. 定宽情况下:margin: 0 auto;即可实现 (知识点2)
  2. 不定宽情况下:需要设置display: inline-block;转化成行内块级元素 (知识点3) ,之后操作和行内元素一样 使用定位的方法:

首先,父元素设置postition: relative;属性,需要居中的块元素设置postition: absolute;属性

  1. 定宽情况下:需要居中的块元素设置left:50%; ,margin-left: -块元素宽度的一半;/transform: translateX(-50%); (知识点4,6)
  2. 不定宽情况下:需要居中的块元素设置left:50%; transform: translateX(-50%); (知识点4,5)

使用flex的方法: 无论是否定宽:父元素上设置display: flex; justify-content: center; (知识点10,12)

垂直居中 使用定位的方法:

首先,父元素设置postition: relative;属性,需要居中的块元素设置postition: absolute;属性

  1. 定高情况下:需要居中的块元素设置top:50%; ,margin-top: -块元素高度的一半;/transform: translateY(-50%); (知识点4,6)
  2. 不定高情况下:需要居中的块元素设置top:50%; transform: translateY(-50%); (知识点4,5) 使用flex的方法: 只需要父元素上设置display: flex; align-items: center; (知识点10,11) (flex的方便显现得淋漓尽致)

水平垂直居中

就是上述对应方法的叠加