CSS 中的各种居中 (水平、垂直)
导读:
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;
}
1-2、垂直居中
1-2-1、文本在元素内垂直对齐,可以使用设置 line-height 的值为包含元素的高度,所以这里我们需要设置父元素的高度。line-height 属性同样会被继承,这里我们对子元素进行设置:
.parent {
height: 60px;
}
.child {
line-height: 60px;
}
1-2-2、也可以对父元素使用 padding 进行居中,:
.parent {
padding: 30px 0;
}
1-3、水平垂直居中
1-3-1、如果要水平和垂直都居中,可以使用 line-height 和 text-align: center;。
.parent {
text-align: center;
height: 60px;
line-height: 60px;
}
1-3-2、也可以使用 padding 和 text-align: center;。
.parent {
text-align: center;
padding: 30px 0;
}
自然直接使用 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 中的各种居中 (水平、垂直)的更多相关文章
- 讨论CSS中的各类居中方式
今天主要谈一谈CSS中的各种居中的办法. 首先是水平居中,最简单的办法当然就是 margin:0 auto; 也就是将margin-left和margin-right属性设置为auto,从而达到水平居 ...
- CSS中怎么设置元素水平垂直居中?
记录怎么使用text-align与vertical-align属性设置元素在容器中垂直居中对齐.text-align与vertical-align虽然都是设置元素内部对齐方式的,但两者的用法还是有略微 ...
- HTML CSS 中DIV内容居中汇总
转载博客(http://www.cnblogs.com/dearxinli/p/3865099.html) (备注:DIV居中情况,网上谈到也比较多,但是这篇文字,相对还是挺全面,现转载,如果冒犯,还 ...
- CSS中的各种居中方法总结
CSS中的居中可分为水平居中和垂直居中.水平居中分为行内元素居中和块状元素居中两种情况,而块状元素又分为定宽块状元素居中和不定宽块状元素居中.下面详细介绍这几种情况. 一.水平居中 1.行内元素居中 ...
- CSS中ul li居中的问题
一直以为对ul li居中对齐已经掌握了.但最近做项目时发现之前li的float:left方法显然有一个问题,就是无法居中(水平),只能使用padding-left或margin-right的方法方法来 ...
- css中两种居中方式text-align:center和margin:0 auto 的使用场景
关于使用text-align:center和margin:0 auto 两种居中方式的比较 前言:最近由于要学习后端,需要提前学习一部分前端知识,补了补css知识,发现狂神在讲这一部分讲的不是特别清楚 ...
- css中的特殊居中
大图居中: 先看一下普通的居中: 代码为: <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- CSS中元素各种居中方法(思维导图)
前言 用思维导图的方式简单总结一下各种元素的居中方法,如下图: 补充一下: table自带功能 100% 高度的 afrer before 加上 inline block优化 div 装成 table ...
- CSS实现水平垂直同时居中的5种思路
× 目录 [1]水平对齐+行高 [2]水平+垂直对齐 [3]margin+垂直对齐[4]absolute[5]flex 前面的话 水平居中和垂直居中已经单独介绍过,本文将介绍水平垂直同时居中的5种思路 ...
随机推荐
- Redis 系列(02)数据结构
目录 Redis 系列(02)数据结构 Redis 系列目录 1. String 1.1 基本操作 1.2 数据结构 1.3 Redis数据存储结构 2. Hash 2.1 基本操作 2.2 数据结构 ...
- luoguP2680 运输计划 题解(二分答案+树上差分)
P2680 运输计划 题目 这道题如果是看的我的树上差分来的,那么肯定一看题目就可以想到树上差分. 至于这是怎么想到的,一步一步来: 1.n有300000,不可能暴力枚举每一条边 2.因为我们要使运 ...
- websocket简单实现聊天
1.多人聊天 from geventwebsocket.handler import WebSocketHandler # 请求处理WSGI HTTP from geventwebsocket.ser ...
- 解决MVC中textarea出现多余空格的问题
public static MvcHtmlString FixedTextAreaFor<TModel, TProperty>(this HtmlHelper<TModel> ...
- sublime text 3安装Anaconda插件之后写python出现白框
sublime test 3安装anaconda插件之后写python代码会出现白框,这是应为anaconda自带了pep8语法检查, 有一些是语法错误,能够检查出来还是能有用的.但有一些不过是一些代 ...
- css 图片有间隔多个Img标签之间的间隙
今天写css时发现,图片加起来刚好是900px的三张图片,不能在一个900px宽容器放下,因为图片之间有间隔,我猜是浏览器把两个img标签之间的空格当成了空白节点. 在网上找到了几个不错的解决方法: ...
- python mqtt 客户端实现
安装paho-mqtt pip install paho-mqtt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com py ...
- 【最新】 ELK之 logstash 同步数据库数据到Elasticsearch
cd /usr/local 下载logstash 6.4.3版本 wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3 ...
- vs2010管理员运行
VS2010 Configuation->Linker->Manifest File->UAC Execution Level-> requireAdministrator
- 人脸识别课件需要安装的python模块
Python3.6安装face_recognition人脸识别库 https://www.jianshu.com/p/8296f2aac1aa