CSS实现水平垂直居中可以说是前端老生常谈的问题了,一般面试官问的时候面试者都会回答出来,但是继续追问还有没有其他方法的时候有可能就说不出来了。

本着学习知识的目的,特在此纪录CSS实现水平垂直居中的多种方法。

准备工作

我们先写一个简单的HTML文件,方便我们接下来进行效果实现

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="./index.css">
<title>水平垂直居中</title>
</head>
<body>
<div class="container">
<div class="inner">水平垂直居中</div>
</div>
</body>
</html>
/* CSS文件 */
.container{
width: 400px;
height: 400px;
border: 1px solid black;
} .inner{
width: 100px;
height: 100px;
border: 1px solid red;
}

最终浏览器呈现的效果如下

水平居中

水平居中的方式有多种,总体来说可以使用flexgridtext-alignmargin等方法,我们要实现如下所示的效果

使用flex方法

.container{
width: 400px;
height: 400px;
border: 1px solid black;
/* 新增 */
display: flex;
justify-content: center;
}

只需在父DOM元素中新增以上CSS即可实现水平居中

使用margin方法

.inner{
width: 100px;
height: 100px;
border: 1px solid red;
/* 新增 */
margin: 0 auto;
}

注:这个方法适用于知道子dom元素宽度已知的情况下

使用text-align方法

要注意:text-align CSS属性定义行内内容(例如文字)如何相对它的块父元素对齐,并不控制块元素自己的对齐,只控制他行内内容的对齐。

所以这个属性对于我的HTML文件是无效的,我们要把内部的div改为span即可生效,修改后的代码如下:

<body>
<div class="container">
<!-- 将div修改为span -->
<span class="inner">水平垂直居中</span>
</div>
</body>

CSS样式表修改为如下所示

.container{
width: 400px;
height: 400px;
border: 1px solid black;
/* 新增 */
text-align: center;
}

使用grid方法

.container{
width: 400px;
height: 400px;
border: 1px solid black;
/* 新增 */
display: grid;
grid-template-rows: 1fr; /* 让inner的高度占满 */
grid-template-columns: 1fr; /* 让inner的宽度占满 */
justify-items: center; /* 让inner水平居中 */
}

关于grid的更多介绍详见张鑫旭的

最新文章

  1. 搜狗输入法linux安装 以及 12个依赖包下载链接分享
  2. iOS开发系列--C语言之存储方式和作用域
  3. Replication
  4. [转]fastjson常见问题
  5. MongoDB—— 读操作 Core MongoDB Operations (CRUD)
  6. 分享:PHP获取MAC地址的实现代码
  7. 【英语】Bingo口语笔记(8) - 爆破音的发音技巧
  8. PDF抽取文字 C# with Adobe API
  9. LeetCode: Longest Consecutive Sequence [128]
  10. [LeetCode] Search in Rotated Sorted Array [35]
  11. 帝国cms内容页模版
  12. JNLP(Java Web Start )(转)
  13. Centos7+lnmp+zabbix4+分离mysql实验
  14. css 3 新特性
  15. HTML5地理定位API在chrome中不能正常使用
  16. chrome中安装.crx后缀的离线插件
  17. 激活Pychram
  18. Linux 第七天
  19. vim常用
  20. AdminLTE模板使用

热门文章

  1. long类型在内存中占8个字节,float类型在内存中占4个字节,为什么long还要比float小呢?
  2. 白话SCRUM之五:四种会议
  3. java stream 集合运算
  4. pdfium
  5. appium--解决中文输入不了的问题
  6. 忍者钩爪 ( ninja) 题解———2019.10.19
  7. nginx日志说明
  8. 解决PEnetwork启动的时候提示&quot;An error occured while starting the &quot;TCP/IP Registry Compatibility&quot; Service (2)!&quot;程序将立即退出的问题
  9. Linux性能优化实战学习笔记:第八讲
  10. [LeetCode] 72. Edit Distance 编辑距离