导读:

CSS 的居中有水平居中和垂直居中,这两种居中又分为行内元素居中和块级元素居中。根据父、子元素的高度是否清楚,又会使得不同的居中用不同方法。本文就其中一些情况做下简单说明,以作笔记之用,仅供大家参考。

1、文本居中

先上示例中的结构:

<!-- html 结构 -->
<div class="parent">
<span class="child">some text</span>
</div>
<!-- 以便查看效果添加如下样式 -->
.parent {
border: 1px solid #000;
}
.child {
}
1-1、水平居中

文本在元素内居中对齐,可以使用 text-align: center;。因为 text-align 属性是会被继承的,所以写在父元素或者子元素上都可以实现居中,这里我们对父元素进行设置:

.parent {
text-align: center;
}
some text
1-2、垂直居中

1-2-1、文本在元素内垂直对齐,可以使用设置 line-height 的值为包含元素的高度,所以这里我们需要设置父元素的高度。line-height 属性同样会被继承,这里我们对子元素进行设置:

.parent {
height: 60px;
}
.child {
line-height: 60px;
}
some text

1-2-2、也可以对父元素使用 padding 进行居中,:

.parent {
padding: 30px 0;
}
some text
1-3、水平垂直居中

1-3-1、如果要水平和垂直都居中,可以使用 line-heighttext-align: center;

.parent {
text-align: center;
height: 60px;
line-height: 60px;
}
some text

1-3-2、也可以使用 paddingtext-align: center;

.parent {
text-align: center;
padding: 30px 0;
}
some text

自然直接使用 padding: 30px;也可以实现水平垂直居中。

2、块元素居中

同样先上示例中的结构:

<!-- html 结构 -->
<div class="parent">
<div class="child"></div>
</div>
<!-- 以便查看效果添加如下样式 -->
<!-- 如果实例中没有指明需要知道父、子元素的高度或宽度则对应方法对此不作要求 -->
.parent {
height: 80px;
border: 1px solid #000;
}
.child {
height: 40px;
width: 80%;
background-color:#c0c0c0;
}
2-1、水平居中

2-1-1、要水平居中对齐一个元素(如 <div>), 可以使用 margin: auto;

.child {
margin: 0 auto;
width:80%;
}
 

注意:该方法必须设置子元素的 width 属性(且不能为100%)。

2-1-2、在父元素中设置 text-align: center;,子元素中设置 display: inline-block;*zoom:1;

.parent {
text-align: center;
}
.child {
display: inline-block;
*zoom:1; /* 兼容 IE6、7 */
}
 

2-1-3、在子元素中设置 display:table;margin: 0 auto;

.child {
display: inline-block;
*zoom:1; /* 兼容 IE6、7 */
}
 

2-1-4、absolute 配合 transform

.parent {
position: relative;
}
.child {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
 

2-1-5、强大的 flex 布局中的 justify-content: center;

.parent {
display: flex;
justify-content: center;
}
 
2-2垂直居中

2-2-1、对父元素设置 display: table-cell;vertical-align:middle;

.parent {
display: table-cell;
width:100px; /* 对table-cell元素设置百分比(如100%)的宽高值时无效的,所以我们需要这样设置 */
/* 但是可以将父元素设置display:table,再将父元素设置百分比宽高 */
/* 子元素table-cell会自动撑满父元素。这就可以做相对于整个页面的水平垂直居中 */
/* 此处为不破坏文章结构,实例采用并非上面展示的 width:100px; 而是第二种方法 */
vertical-align:middle;
}
 

2-2-2、absolute 配合 transform

.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
 

2-2-3、强大的 flex 布局中的 align-items: center;

.parent {
display: flex;
align-items: center;
}
 
2-3、完美居中(水平+垂直)

2-3-1、absolute 配合 transform

.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
 

2-3-2、强大的 flex布局

.parent {
display: flex;
justify-content: center;
align-items: center;
}
 

写在最后

实现居中的方法还有许多,根据不同的情况也会有不同的处理方式,本文只是简单的记录了其中一些,且涉及到一些兼容性并没有提及,学习需谨慎,若是文中有什么错误,欢迎指正。

CSS 中的各种居中 (水平、垂直)的更多相关文章

  1. 讨论CSS中的各类居中方式

    今天主要谈一谈CSS中的各种居中的办法. 首先是水平居中,最简单的办法当然就是 margin:0 auto; 也就是将margin-left和margin-right属性设置为auto,从而达到水平居 ...

  2. CSS中怎么设置元素水平垂直居中?

    记录怎么使用text-align与vertical-align属性设置元素在容器中垂直居中对齐.text-align与vertical-align虽然都是设置元素内部对齐方式的,但两者的用法还是有略微 ...

  3. HTML CSS 中DIV内容居中汇总

    转载博客(http://www.cnblogs.com/dearxinli/p/3865099.html) (备注:DIV居中情况,网上谈到也比较多,但是这篇文字,相对还是挺全面,现转载,如果冒犯,还 ...

  4. CSS中的各种居中方法总结

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

  5. CSS中ul li居中的问题

    一直以为对ul li居中对齐已经掌握了.但最近做项目时发现之前li的float:left方法显然有一个问题,就是无法居中(水平),只能使用padding-left或margin-right的方法方法来 ...

  6. css中两种居中方式text-align:center和margin:0 auto 的使用场景

    关于使用text-align:center和margin:0 auto 两种居中方式的比较 前言:最近由于要学习后端,需要提前学习一部分前端知识,补了补css知识,发现狂神在讲这一部分讲的不是特别清楚 ...

  7. css中的特殊居中

    大图居中: 先看一下普通的居中: 代码为: <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  8. CSS中元素各种居中方法(思维导图)

    前言 用思维导图的方式简单总结一下各种元素的居中方法,如下图: 补充一下: table自带功能 100% 高度的 afrer before 加上 inline block优化 div 装成 table ...

  9. CSS实现水平垂直同时居中的5种思路

    × 目录 [1]水平对齐+行高 [2]水平+垂直对齐 [3]margin+垂直对齐[4]absolute[5]flex 前面的话 水平居中和垂直居中已经单独介绍过,本文将介绍水平垂直同时居中的5种思路 ...

随机推荐

  1. UVA 11355 Cool Points( 极角计算 )

    We have a circle of radius R and several line segments situated within the circumference of this cir ...

  2. 如何使用 VLD 检测程序中的内存泄漏?

    下载地址:https://kinddragon.github.io/vld/ 下载 windows 安装包,进行安装即可,它会给你设置好 vs 的环境变量,使用时,直接在 vs ide 中包含即可. ...

  3. 使用腾讯地图请求来源未被授权, 此次请求来源域名/ip:servicewechat.com

    原文:微信小程序使用腾讯地图请求来源未被授权, 此次请求来源域名:servicewechat.com 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明 ...

  4. Linux Shell脚本在service模式下的环境变量

    普通Shell脚本在终端下运行时,环境变量来自于init/profile/.bash_profile等,就是在当前终端下可以得到的环境,比如PATH.在service模式下,脚本运行在受限的环境中:比 ...

  5. 前端学习(三十)es6的一些问题(笔记)

    赋值表达式    document.onclick = document.onmouseover = fn;    var a = b = c = d = 5;             不推荐 逗号表 ...

  6. 【C/C++】知识点系统复习 (第一周)

    2018/12/18 周二 1. C++内存布局分为几个区域,每个区域有什么特点? 主要可以分为 5 个区域, (1) 栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数 ...

  7. Linux中的系统服务_01

    Linux中的系统服务_01 1.linux中所有的内容都是以文件的形式存在,所以其服务也是以文件的形式存在/etc/init.d目中, 2.存在改/etc/init.d/目录里的文件,都可以通过命令 ...

  8. 第07章 JdbcTemplate

    第07章JdbcTemplate 1. 概述 为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架. 作为Spring JDBC框架的核心,JDB ...

  9. testNG之异常测试

    @Test(expectedExceptions = ) 在测试的时候,某些用例的输入条件,预期结果是代码抛出异常,那么这个时候就需要testNG的异常测试,先看一段会抛出异常的代码 exceptio ...

  10. ceph cache pool配置

    https://my.oschina.net/hanhanztj/blog/515410 0.引入 本文介绍如何配置cache pool tiering. cache pool的作用是提供可扩展的ca ...