元素的水平居中,如果是一个行内元素,就对它的父元素应用 “text-align:center”;

如果是一个块级元素,就对它自身应用“margin:auto”。


垂直居中的几种场景以及实现方法:

一、基于绝对定位的解决方案

1、绝对定位+固定宽高的垂直居中

原理:这种居中的方法本质上做了两件事,一是先把需要居中的元素的左上角放在视口(或具有定位属性的父元素)的正中心,二是再利用负外边距把它向左、向上移动自身宽高的一半,从而使元素水平和垂直居中(如下图所示)。

缺点:要求元素有固定的宽高,但很多情况下,居中元素的尺寸是由其内容来决定的。

那么对于未知宽高的元素如何实现垂直居中呢?这时我们可能会想到用百分比来解析,但问题是,包括margin在内的很多CSS属性,百分比都是以其父元素的尺寸为基准进行解析的。

2、绝对定位+自适应宽高的垂直居中

如果找到一个能以自身尺寸为基准进行解析的属性对元素进行移动变换问题是不是就迎刃而解了呢?细心的同学会发现,CSS3为我们提供的2D转换属性中的translate属性恰好是以元素自身尺寸为基准进行换算和移动的。

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

这样是不是就可以摆脱对固定尺寸的依赖实现垂直居中了。

二、基于视口单位的解决方案

有些情况基于对整体布局的考虑不想使用绝对定位,这时我们任然可以采用translate()技巧把元素以其自身宽高的一半为距离进行移动,只是在没有定位缺少left和top的情况下如何把元素的左上角放在容器的中心呢?如果只是相对于视口进行居中,依然使用margin就可以解决,只是需要使用一个很少见的单位 “vh”。

“vh” 是一个视口相关的长度单位,1vh表示视口高度的1%,50vh表示视口高度的一半,由此一个基于视口垂直居中的方法如下:

div{ 
  margin: 50vh auto 0;
  transform:translateY(-50%);
}

这种方法无需定位,可自适应高度

缺点:就是只适用于基于视口的垂直居中。

三、基于Flexbox(伸缩盒)的解决方案

我认为这是最简单也是最高效的方法,唯一需要注意的就是浏览器的兼容问题,只需要两行代码就可以搞定:

一是给待居中元素的父元素设置display:flex,再给自身设置 margin:auto即可。

body{ 
  height: 100vh;
  display: flex;
}
div{
  margin: auto;
  background: grey;
}

除此之外,给父元素指定一个固定尺寸,可借助 "align-items" 和 “justify-content" 属性对其子元素进行垂直和水平居中,这种方法同时也适用于文本,自此就不用太过纠结line-height了。

div{ display: flex; align-items: center; justify-content:center; width: 20em; height:10em; }


上面的代码随意改变div的宽高,里面文本始终保持水平和垂直居中。


本文是转自今日头条--》窗外楼   对文中提及的方法都逐一做了尝试,方法可行

最新文章

  1. springBoot上传文件大小设置
  2. js 根据屏幕大小调用不同的css文件
  3. Java编程思想重点笔记(Java开发必看)
  4. win10前面板耳机没声音
  5. HBase基础和伪分布式安装配置
  6. Hadoop学习10--常用命令记录帖
  7. 使用JDBC处理Oracle大数据
  8. 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨
  9. .net+easyui--combobox
  10. DLL ActiveForm 线程同步问题
  11. Java中精确的数字计算类BigDecimal
  12. JavaScript内置对象-Array
  13. C#历年来最受欢迎功能
  14. 【Spring Cloud笔记】 断路器-hystrix
  15. Linux系统中硬链接和软链接(符号链接)的区别
  16. docker简单介绍----存储
  17. bootstrap分页插件的使用
  18. 安晓辉大神的感悟:如果你发现了自己的学习模式,愿意学并且能坚持,我觉得没什么能阻挡你征服软件世界的脚步(对于开发人员来讲,最大的风险是:在职业规划上没有延续性地乱跳槽。时刻要牢记在心的:培养自己的稀缺性) good
  19. 原生Android 注意事项
  20. 001-Go JSON处理

热门文章

  1. jni javah
  2. Elasticsearch之四种查询类型和搜索原理(博主推荐)
  3. 关于Tool接口--------hadoop接口:extends Configured implements Tool 和 ToolRunner.run
  4. HttpWebRequest 表单提交
  5. 12:Challenge 5(线段树区间直接修改)
  6. Nginx——在Windows环境下安装(一)
  7. 51nod1073-约瑟夫环,递归。
  8. hiho1079 - 数据结构 线段树(入门题,离散化)
  9. LR编写post请求
  10. Msql免安装版安装