导读:

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. Redis 系列(02)数据结构

    目录 Redis 系列(02)数据结构 Redis 系列目录 1. String 1.1 基本操作 1.2 数据结构 1.3 Redis数据存储结构 2. Hash 2.1 基本操作 2.2 数据结构 ...

  2. luoguP2680 运输计划 题解(二分答案+树上差分)

    P2680 运输计划  题目 这道题如果是看的我的树上差分来的,那么肯定一看题目就可以想到树上差分. 至于这是怎么想到的,一步一步来: 1.n有300000,不可能暴力枚举每一条边 2.因为我们要使运 ...

  3. websocket简单实现聊天

    1.多人聊天 from geventwebsocket.handler import WebSocketHandler # 请求处理WSGI HTTP from geventwebsocket.ser ...

  4. 解决MVC中textarea出现多余空格的问题

    public static MvcHtmlString FixedTextAreaFor<TModel, TProperty>(this HtmlHelper<TModel> ...

  5. sublime text 3安装Anaconda插件之后写python出现白框

    sublime test 3安装anaconda插件之后写python代码会出现白框,这是应为anaconda自带了pep8语法检查, 有一些是语法错误,能够检查出来还是能有用的.但有一些不过是一些代 ...

  6. css 图片有间隔多个Img标签之间的间隙

    今天写css时发现,图片加起来刚好是900px的三张图片,不能在一个900px宽容器放下,因为图片之间有间隔,我猜是浏览器把两个img标签之间的空格当成了空白节点. 在网上找到了几个不错的解决方法: ...

  7. python mqtt 客户端实现

    安装paho-mqtt pip install paho-mqtt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com py ...

  8. 【最新】 ELK之 logstash 同步数据库数据到Elasticsearch

    cd /usr/local 下载logstash 6.4.3版本 wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3 ...

  9. vs2010管理员运行

    VS2010  Configuation->Linker->Manifest File->UAC Execution Level-> requireAdministrator

  10. 人脸识别课件需要安装的python模块

    Python3.6安装face_recognition人脸识别库 https://www.jianshu.com/p/8296f2aac1aa