参考资料

  1. 有没有推荐的 CSS 过渡动画库?
  2. Flex布局在动画制作中的应用?
  3. 如何用Flex布局制作响应式布局?
  4. CSS格式化/压缩有哪些
  5. 目标伪类选择器详细说明以及案例
  6. css阴影颜色怎么设置
  7. 类选择器详细说明以及案例
  8. 几种常用的 CSS 横向布局方法

CSS中div居中的方法

水平居中

1. 使用margin: auto

div {
  width: 200px;
  margin: 0 auto;
}

2. 使用text-align (适用于内联元素)

.container {
  text-align: center;
}
div {
  display: inline-block;
}

3. 使用flexbox

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

垂直居中

1. 使用line-height (适用于单行文本)

div {
  height: 100px;
  line-height: 100px;
}

2. 使用padding

div {
  padding: 50px 0;
}

3. 使用flexbox

.container {
  display: flex;
  align-items: center;
  height: 300px;
}

水平和垂直同时居中

1. 使用绝对定位和transform

div {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

2. 使用flexbox

.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

3. 使用grid布局

.container {
  display: grid;
  place-items: center;
  height: 100vh;
}

完整示例

<!DOCTYPE html>
<html>
<head>
<style>
  /* 方法1: flexbox */
  .container1 {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 200px;
    background: #f0f0f0;
    margin-bottom: 20px;
  }
  
  .box {
    width: 100px;
    height: 100px;
    background: #3498db;
  }
  
  /* 方法2: 绝对定位 */
  .container2 {
    position: relative;
    height: 200px;
    background: #e0e0e0;
  }
  
  .centered {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100px;
    height: 100px;
    background: #e74c3c;
  }
</style>
</head>
<body>

<div class="container1">
  <div class="box"></div>
</div>

<div class="container2">
  <div class="centered"></div>
</div>

</body>
</html>