美文网首页CSSWeb前端之路让前端飞
所有CSS居中方法,了解一下?

所有CSS居中方法,了解一下?

作者: 许骁Charles | 来源:发表于2019-08-19 18:40 被阅读62次

目录

  1. 水平居中
    • 内联元素水平居中
    • 块级元素水平居中
    • 多个块级元素的水平居中
  2. 垂直居中
    • 内联元素垂直居中
      • 单行内联元素
      • 多行内联元素
    • 块级元素垂直居中
      • 知道元素的height
      • 不知道元素的height
      • 子元素高度无所谓
      • 能用Flex-box
  3. 水平且垂直居中
    • 元素有固定宽高
    • 元素没有固定宽高
    • 能用Flex-box
    • 能用Grid

水平居中

(1)内联元素水平居中

.center-children {
  text-align: center;
}

(2)块级元素水平居中

.center-me {
  margin: 0 auto;
}

(3)多个块级元素的水平居中

多元素水平排列

inline-block 法:

.father {
  text-align: center;
}
.father .center-children {
  display: inline-block;
}

flex 法:

.father {
  display: flex;
  justify-content: center;
}

多元素纵向排列

main {
  margin: 20px 0;
}

main div {
  margin: 0 auto;
}
main div:nth-child(1) {
  width: 200px;
}
main div:nth-child(2) {
  width: 400px;
}
main div:nth-child(3) {
  width: 125px;
}

垂直居中

(1)内联元素垂直居中

① 单行内联元素

padding 法:

.link {
  padding-top: 30px;
  padding-bottom: 30px;
}

line-height 法:

.center-text-trick {
  height: 100px;
  line-height: 100px;
  white-space: nowrap;
}

② 多行内联元素

table 法:

<table>
  <tr>
    <td>
      I'm vertically centered multiple lines of text in a real table cell.
    </td>
  </tr>
</table>
table {
  width: 240px;
  height: 250px;
}

table td {
  padding: 20px;
  /* default is vertical-align: middle; */
}

display: table; 法:

<div class="center-table">
  <p>I'm vertically centered multiple lines of text in a CSS-created table layout.</p>
</div>
.center-table {
  display: table;
  height: 250px; 
  width: 240px;
}
.center-table p {
  display: table-cell;
  margin: 0;
  padding: 20px;
  vertical-align: middle;
}

flex 法:

<div class="flex-center">
  <p>I'm vertically centered multiple lines of text in a flexbox container.</p>
</div>
.flex-center {
  height: 200px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  resize: vertical;    /* 允许用户在垂直方向上调整元素的大小 */
  overflow: auto;
}

伪元素法:(在不确定父类高度时使用)

.ghost-center {
  position: relative;
}
.ghost-center::before {
  content: " ";
  display: inline-block;
  height: 100%;
  width: 1%;
  vertical-align: middle;
}
.ghost-center p {
  display: inline-block;
  vertical-align: middle;
}

(2)块级元素垂直居中

① 知道元素的height

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  height: 100px;
  margin-top: -50px; /* account for padding and border if not using box-sizing: border-box; */
}

② 不知道元素的height

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

③ 子元素高度无所谓

main {
  height: 300px;
  width: 300px;
  position: relative;
  display: table;
}
main div {
  display: table-cell;
  vertical-align: middle;
}

④ 能用Flex-box

.parent {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

水平且垂直居中

(1)元素有固定宽高

.parent {
  position: relative;
}

.child {
  width: 300px;
  height: 100px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin: -50px 0 0 -150px;
}

(2)元素没有固定宽高

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

(3)能用Flex-box

.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}

(4)能用Grid

body, html {
  height: 100%;
  display: grid;
}
span { /* thing to center */
  margin: auto;
}


参考:https://css-tricks.com/centering-css-complete-guide/

相关文章

  • 所有CSS居中方法,了解一下?

    目录 水平居中内联元素水平居中块级元素水平居中多个块级元素的水平居中 垂直居中内联元素垂直居中单行内联元素多行内联...

  • CSS垂直居中

    #CSS垂直居中的所有方法 标签(空格分隔): css技巧 --- ##1.利用padding垂直居中(line-...

  • CSS解决盒模型居中的问题

    CSS实现盒子模型水平居中、垂直居中、水平垂直居中的多种方法 CSS实现盒子模型水平居中的方法 全局样式 第一种:...

  • Css让div在屏幕上居中

    # 让div在屏幕上居中(水平居中+垂直居中)的方法总结 - html代码如下: - Css居中方法 (敲黑板)...

  • 什么鬼?我只是想居中而已!!!

    今天来总结一下使用css来使元素居中的方法,首先说说使元素居中的基本思路 1、水平居中:margin-left=m...

  • CSS - 垂直水平居中方法

    前言 总括:整理 css 垂直水平居中方法,区分内联元素与块级元素 CSS垂直居中和水平居中 用css让一个容器水...

  • CSS居中小结

    下面是CSS居中的几种方法: 水平居中元素: 通用方法,元素的宽高未知 方式一:CSS3 transform 方式...

  • CSS布局(不完全)总结

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

  • css实现盒子内部 div水平垂直居中

    总结一下利用css实现盒子内部 div居中的几种方法 1.水平居中 1)margin: 0 auto 2.水平垂直...

  • 垂直居中的这点事

    标签(空格分隔): css 垂直居中浮动元素 垂直居中元素,在布局中经常使用,总结一下: 方法一:已知元素的高宽 ...

网友评论

    本文标题:所有CSS居中方法,了解一下?

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