CSS的水平垂直居中

一、水平居中

  • 内联:爸爸身上写 text-align:center;
    实现:
我是内联元素 我需要水平居中
.el{
  border: 1px solid red;
  width: 20px;
  height: 20px;
}
.wrapper{
  border: 1px solid blue;
  height: 100px;
  text-align: center;
}

效果:
内联元素水平居中
  • 块级:margin-left: auto; margin-right: auto;
    实现:
我是块级元素 我需要水平居中
.el{
  border: 1px solid red;
  width: 250px;
  margin-left: auto;
  margin-right: auto;
}
.wrapper{
  border: 1px solid blue;
  height: 100px;
}

效果:
块级元素水平居中

二、垂直居中

  1. table自带居中功能
需要垂直居中呀
.el{
  border: 1px solid red;
  width: 300px;
}
.wrapper{
  border: 1px solid blue;
  height: 100px;
}

效果:
table自带垂直居中效果
  1. 100%高度的before和after,加上inline-block.
    实现:
需要垂直居中呀
.wrapper{
  border: 1px solid blue;
  height: 100px;
    text-align: center;
}
.el{
  border: 1px solid red;
  width: 300px;
  display: inline-block;
  vertical-align: middle;
}

.before{
  border: 1px solid red;
  height: 100%;
  display: inline-block;
  vertical-align: middle;
}
.after{
  border: 1px solid red;
  height: 100%;
  display: inline-block;
  vertical-align: middle;
}

效果:
before、after

优化版本:

需要垂直居中呀
.wrapper{
  border: 3px solid red;
  height: 600px;
  text-align: center;
}

.el{
  border: 3px solid black;
  display: inline-block;
  width: 300px;
  vertical-align: middle;
}

.wrapper:before{
  content:'';
  outline: 3px solid red;
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}
.wrapper:after{
  content:'';
  outline: 3px solid red;
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}

效果相同。

  1. 将div装成table,利用table的特性
    实现:
div装成table
.table{
  border: 1px solid red;
  height: 300px;
  display: table;
}
.td{
  border: 1px solid blue;
  display: table-cell;
  vertical-align: middle;
}
.el{
  border: 1px solid black;
}

效果:
div装成table
  1. 写死高度,利用高度的50%确定位置
    实现:
用margin-top实现垂直居中
.wrapper{
  border: 1px solid red;
  position: relative;
  height: 300px;
}

.el{
  border: 1px solid black;
  position: absolute;
  width: 300px;
  height: 100px;
  top: 50%;
  left: 50%;
  margin:0 -150px;
  margin-top: -50px;
}

效果:
利用高度的50%定位
  1. 利用translate定位
用translate实现垂直居中
.wrapper{
  border: 1px solid red;
  position: relative;
  height: 300px;
}

.el{
  border: 1px solid black;
  position: absolute;
  width: 300px;
  height: 100px;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%)
}

效果:
translate定位
  1. top,left,bottom,right设为0,margin: auto;
    实现:
用margin auto实现垂直居中
.wrapper{
  border: 1px solid red;
  position: relative;
  height: 300px;
}

.el{
  border: 1px solid black;
  position: absolute;
  width: 300px;
  height: 100px;
  margin: auto;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}

效果:
margin:auto定位
  1. flex实现水平垂直居中
    实现:
用flex实现垂直居中
.wrapper{
  border: 1px solid red;
  height: 300px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.el{
  border: 1px solid black;
  width: 300px;
  height: 100px;
}

效果:
flex定位

8.。。。。。and so on

你可能感兴趣的:(CSS的水平垂直居中)