NoteZ_技术博客 NoteZ_技术博客
🏠 首页
  • 📚 Web技术
  • 📋 Npm笔记
  • 📑 Markdown
  • 📄 Git笔记
  • 📝 Nginx文档
  • 📓 Linux文档
  • 📖 技术文档
  • 📜 其他文档
  • 🧊 NodeJs
  • 🎡 Express
  • 🔥 Rust
  • 🎉 Koa2
  • 🍃 MongoDB
  • 🐬 MySql
  • 🥦 Oracle
  • 🍁 Python
  • 🍄 JavaScript
  • 🌰 CSS
  • 🧄 HTML
  • 🥑 Canvas
  • 🌽 Nuxt
  • 🍆 React
  • 🥜 Vue
  • 🧅 TypeScript
  • 🌶️ AI
  • 📘 分类
  • 📗 标签
  • 📙 归档
⚜️ 在线编辑 (opens new window)
  • 📁 站点收藏
  • 📦 前端组件库
  • 📊 数据可视化
  • 🌈 开源插件
  • 🎗️ 关于我
  • 🔗 友情链接
GitHub (opens new window)

NoteZ_技术博客

前端界的小学生
🏠 首页
  • 📚 Web技术
  • 📋 Npm笔记
  • 📑 Markdown
  • 📄 Git笔记
  • 📝 Nginx文档
  • 📓 Linux文档
  • 📖 技术文档
  • 📜 其他文档
  • 🧊 NodeJs
  • 🎡 Express
  • 🔥 Rust
  • 🎉 Koa2
  • 🍃 MongoDB
  • 🐬 MySql
  • 🥦 Oracle
  • 🍁 Python
  • 🍄 JavaScript
  • 🌰 CSS
  • 🧄 HTML
  • 🥑 Canvas
  • 🌽 Nuxt
  • 🍆 React
  • 🥜 Vue
  • 🧅 TypeScript
  • 🌶️ AI
  • 📘 分类
  • 📗 标签
  • 📙 归档
⚜️ 在线编辑 (opens new window)
  • 📁 站点收藏
  • 📦 前端组件库
  • 📊 数据可视化
  • 🌈 开源插件
  • 🎗️ 关于我
  • 🔗 友情链接
GitHub (opens new window)
  • JavaScript笔记

  • CSS笔记

    • CSS @media 多媒体查询使用总结
    • CSS 改变鼠标指针形状
    • css 清除浮动的几种方法总结
    • CSS3 元素转圈动画 (元素旋转动画)
    • CSS3之animation动画
    • CSS3之transition过渡
    • CSS3动画、旋转、旋转放大、放大、移动
    • CSS媒体查询 @media 常见的媒体尺寸设置
    • CSS或Js实现文字超出显示省略号
    • CSS教程和技巧收藏
    • CSS水平垂直居中常见方法
      • 方法一:元素水平居中
      • 方法二:position 元素已知宽度
      • 方法三:position transform 元素未知宽度
      • 方案四:flex布局
      • 方案五:table-cell布局
    • CSS给table的tbody添加滚动条
    • CSS设置自定义滚动条样式(兼容IE)
    • flex布局案例-圣杯布局
    • flex布局案例-基础
    • flex布局案例-网格布局
    • flex布局案例-输入框布局
    • flex布局案例-骰子
    • flex布局语法
    • Sass 基本使用方法
    • 「css技巧」使用hover和attr()定制悬浮提示
    • 「布局技巧」图片未加载前自动撑开元素高度
    • 从box-sizing属性入手,了解盒子模型
    • 使用 CSS 实现 pre 标签中内容换行方法
    • 图片加载失败使用CSS处理最佳实践
    • 如何根据系统主题自动响应CSS深色模式
    • 水平垂直居中的几种方式-案例
    • 滚动条样式设置(CSS)
    • 纯css实现Loading加载效果
    • CSS实现左侧固定,右侧自适应方法
  • HTML笔记

  • Canvas笔记

  • Nuxt笔记

  • React笔记

  • Vue笔记

  • TypeScript笔记

  • AI相关笔记

  • 开发文档
  • CSS笔记
NoteZ
2019-05-10
目录

CSS水平垂直居中常见方法

CSS 中的居中可分为水平居中和垂直居中。水平居中分为行内元素居中和块状元素居中两种情况,而块状元素又分为定宽块状元素居中和不定宽块状元素居中。下面详细介绍这几种情况。

# 方法一:元素水平居中

<div class="box">
    <div class="content">
        哇!居中了
    </div>
</div>
<style type="text/css">
    .box {
        background-color: #FF8C00;
        width: 300px;
        height: 300px;
        margin: 0 auto;
    }
    .content {
        background-color: #F00;
        width: 100px;
        height: 100px;
        line-height: 100px; //文字在块内垂直居中   
        text-align: center; //文字居中   
        margin: 0 auto;
    }
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 方法二:position 元素已知宽度

  • 父元素设置为:position: relative;
  • 子元素设置为:position: absolute;
  • 距上 50%,据左 50%,然后减去元素自身宽度的距离就可以实现
  • <div class="box">
        <div class="content">
        </div>
    </div>
    <style type="text/css">
        .box {
            background-color: #FF8C00;
            width: 300px;
            height: 300px;
            position: relative;
        }
        .content {
            background-color: #F00;
            width: 100px;
            height: 100px;
            position: absolute;
            left: 50%;
            top: 50%;
            margin: -50px 0 0 -50px;
        }
    </style>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

# 方法三:position transform 元素未知宽度

如果元素未知宽度,只需将上面例子中的 margin: -50px 0 0 -50px; 替换为:transform: translate(-50%,-50%);

<div class="box">
     <div class="content"></div>
</div>
<style type="text/css">
    .box {
        background-color: #FF8C00;
        width: 300px;
        height: 300px;
        position: relative;
    }
   .content {
        background-color: #F00;
        width: 100px;
        height: 100px;
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
    }
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 方案四:flex布局

<div class="box">
    <div class="content"></div>
</div>
<style type="text/css">
    .box {
        background-color: #FF8C00;
        width: 300px;
        height: 300px;
        display: flex; //flex布局
        justify-content: center; //使子项目水平居中
        align-items: center; //使子项目垂直居中
    }
    .content {
        background-color: #F00;
        width: 100px;
        height: 100px;
    }
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 方案五:table-cell布局

因为 table-cell 相当与表格的 td,td 为行内元素,无法设置宽和高,所以嵌套一层,嵌套一层必须设置 display: inline-block; td 的背景覆盖了橘黄色,不推荐使用

<div class="box">
    <div class="content">
        <div class="inner">
        </div>
    </div>
</div>
<style type="text/css">
    .box {
        background-color: #FF8C00; //橘黄色
        width: 300px;
        height: 300px;
        display: table;
    }
    .content {
        background-color: #F00; //红色
        display: table-cell;
        vertical-align: middle; //使子元素垂直居中
        text-align: center; //使子元素水平居中
    }
    .inner {
        background-color: #000; //黑色
        display: inline-block;
        width: 20%;
        height: 20%;
    }
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#CSS
上次更新: 2024/01/30, 00:35:17
CSS教程和技巧收藏
CSS给table的tbody添加滚动条

← CSS教程和技巧收藏 CSS给table的tbody添加滚动条→

最近更新
01
Gitea数据备份与还原
03-10
02
Linux 中使用 rsync 同步文件目录教程
03-10
03
Linux 使用 rsync 互相传输同步文件的简单步骤
03-08
更多文章>
Theme by Vdoing | Copyright © 2019-2025 NoteZ,All rights reserved | 冀ICP备2021027292号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式