从css入门就开始接触,无所不在的,一直备受争议的居中问题。

css居中分为水平居中和垂直居中,水平居中方式也较为常见和统一,垂直居中的方法就千奇百怪了。

博客原文地址:Claiyre的个人博客 https://claiyre.github.io/

如需转载,请在文章开头注明原文地址

本文一下代码中 .outer是父元素的类名,.inner块级代表子元素,span代表行内子元素

水平居中

1. 行内元素的水平居中

直接设置其父元素

.ourter{
text-align: center;
}



不管有几个行内元素,一行代码即可搞定,so easy~

2. 块级元素的水平居中

也非常简单呐

设置该块级元素

div{
margin: 0 auto;
}

但是!但是!如果该元素的position为absolute的话,该方法会失效。

我是这样理解的:margin为auto即相当于外边距的值是自动的,相对的,所以在绝对定位下将失效。不过还是可以将其margin设为具体数值滴。

垂直居中

有很多关于垂直居中tricks,博主在这里只介绍一些比较简单常用的

如果对高度没有要求的哈

1. 行内元素的垂直居中

1)如果对父元素的高度没有具体的要求的话,将父元素的padding-top padding-bottom设置为相同的值即可。

.outer{
padding-top: 60px;
padidng-bottom: 60px;
width:300px;
height: auto; /*注意:此时父元素的height不能是具体数值*/
}

2)如果要求父元素的高度为具体数值时,且确保行内元素不会换行时,可以设置line-height等于父元素的高度

.outer{
width: 300px;
height: 200px;
line-height: 200px;
/*text-align: center; */
}

此时,即可实现行内元素的垂直居中。若把最后一行加上,即可同时实现水平和垂直居中。

但是!!!一定要确保不会换行,也就是只有一行。

3)在保持父元素具体数值宽度不变且有不止一行时,可以使用一点小tricks,比如

.outer{
text-align: center;
height: 200px;
width: 300px;
}
.outer::before{
content: " ";
height: 100%;
width: 1%;
display: inline-block;
vertical-align: middle;
}
/*html代码如下*/
<div id="outer">
<span>span1</span>
<span>span2</span>
</div>

但是,注意:因为vertical-align是指行内元素的基线相对于该元素所在行的基线的垂直对齐方式,所以该方法只对行内元素有效

效果:

2. 块级元素的垂直居中

1)如果已知子元素的高度,可以这样

.outer{
position: relative;
}
.inner{
height:50px;
width:50px;
position: absolute;
top: 50%;
margin-top: -25px;
}

注意子元素和父元素的position,切记父元素的position是relative



2)如果不知道子元素的具体高度,可以利用css的transform属性,对1)进行小改动,如下:

.outer{
position: relative;
}
.inner{
width:50px;
position: absolute;
top: 50%;
transform: translateY(-50%);
}

3)但以上两种方式对于有多个块级子元素的情况就不适用了,比如,这样的情况



这时我们可以用一个div把所有子元素包裹起来,变成一个子元素,然后就可以继续使用上面的方法了。

** 最最后!上面的所有方法都是在不使用flex的前提下的才使用的!解决居中问题最爽的当然是flex布局啦,O(∩_∩)O~~ **

什么?!还不会使用flex布局?赶紧点下面~

flex布局学习总结

使用flex,管它是行内元素还是块级元素,管它有几个元素,统统搞定!

举个栗子!

实现多个块级元素的垂直加水平居中

.outer{
display: flex;
justify-content: center;
align-items: center;
flex: 0 0 auto;
/* flex-direction: column; */
}

效果图如下:

如果加上最后一行,则竖直排列子元素,即:

是不是很简便腻~O(∩_∩)O哈!

css居中小结的更多相关文章

  1. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

  2. CSS居中的实现用法实例

    转载的一篇文章,讲解css内容居中的. 网上有关css 居中的文章不胜枚举,不过大多没有做系统的总结.这里分享的这篇有关css居中的文章,个人感觉不错,值得收藏. 一.水平居中1,将元素水平居中(us ...

  3. day--43 HTML标签和CSS基本小结

    HTML标签和CSS基本小结一:常用标签 01:块标签 p,h1--h6 ,hr ,div 02:内联标签 b,i,u,s 小提示:块标签可以嵌套内置元素或者某些块级元素,但内联元素不能包含块级元素 ...

  4. 常用的CSS居中方式

    1.水平居中margin 0 auto;(浮动元素除外) 这个属性在网页制作的过程中是经常被用到的,一般情况下页面的版心你就可以看到它. <style> .father { width: ...

  5. CSS居中demo

      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...

  6. css居中那点事儿

    css居中那点事儿 在css中对元素进行水平居中是非常简单的,然而使元素垂直居中就不是一件简单的事情了,多年以来,垂直居中已经成为了CSS领域的圣杯,因为它是极其常见的需求,但是在实践中却不是一件简单 ...

  7. css居中学习笔记

    css居中学习笔记 一.水平居中 以下面的代码为例: <body> <div class="parent"> <div class="chi ...

  8. CSS居中完全解决方案

    上次面试面试官问到了,问了个定宽局中和不定宽局中,下来我把所有有关CSS居中都总结了一下 原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 水平居中 行内元素 把行内元素 ...

  9. 理解CSS居中

    我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必 ...

随机推荐

  1. linux_修改ip(重启后永久生效)

    vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet UUID=a20869f2-4095-4e5d-9b0c- ...

  2. (14)Why some people find exercise harder than others

    https://www.ted.com/talks/emily_balcetis_why_some_people_find_exercise_harder_than_others/transcript ...

  3. 移动赋值运算符(c++11)

    1.概念 1)移动赋值运算符是一个重载的赋值运算符,参数为自身类的右值引用,返回值自身类的左值引用,由于不抛出任何异常,用noexcept指定(如果定义在类的外面,那么定义也要用noexcept指定) ...

  4. 内联/块级元素的宽高及margin/padding的说明 |||||| 为何img、input等内联元素可以设置宽、高

    1,内联非替换元素设置宽高是无效的,设置margin时,左右有效,上下无效.设置padding时,左右有效,而上下padding比较奇葩,内联非替换元素的上下padding会在元素内容盒不动的情况下上 ...

  5. 利用url传多个参数

    刚开始接触jsp,比较偏向于用button标签的onclick方法进行页面的跳转.但是关于页面跳转的各种问题真是叫人头大,以下记录,仅仅为自己以后查看. Qone 用url传参的时候遇到中文怎么办 编 ...

  6. DDR4 PSOD输出的优点--DBI的优点

    DDR4是JEDEC组织关于DRAM器件的下一代标准.DDR4主要是针对需要高带宽低功耗的场合.这些需求导致了DDR4芯片引入了一些新的特点,这些新的特点,导致在系统设计中,引入一些新的设计需求. D ...

  7. Eclipse添加servlet-api.jar库的引用

    右键Application-->Properties-->Java Build Path-->Libraries-->Add External JARs-->servle ...

  8. bzoj2893(费用流)

    先缩点,然后拆点,其实是很经典的一种操作,把不好做的点拆成边,然后我一开始想的是网络流,答案当然是增广次数, 但可以发现跑网络流的话不同的跑法增广次数不一样,不太好找最小的.我们可以换一种神奇的思路, ...

  9. android Activity中设置setResult 没有触发onActivityResult

    昨天修改<manifest 文件中activity 的 模式为单例模式:android:launchMode="singleTask" ,发现我的onActivityResu ...

  10. cxgrid强大用法

    cxgrid强大用法 (2012-07-25 14:09:42) 转载▼ 标签: delphi cxgrid 用法 强大 杂谈 分类: Delphi cxGrid功能强大,适合做企业级的复杂查询.非常 ...