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种思路 ...
随机推荐
- 使用phpexcel导入excel文件种的时期数据时数据导入格式
在使用phpexcel导入类似于 YYYY-MM-DD HH:ii:ss格式的数据时,导入成功以后会发现导入的数据其实是类似于42085.746516204格式的数据( excel在存储时间类型的数据 ...
- Windows server 2016远程桌面登录和修改3389端口
- [转] 一位ACMer过来人的心得
刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解.很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是必要条件. 我觉 ...
- SpringBoot入门简介
SpringBoot诞生的背景 所有软件行业里面,如果要说商用体系,排在第一位的永远是java,因为java的体系丰富,支持度高,安全性也高 但是我们所有的开发者也不得不去忍受Java中的以下痛苦 举 ...
- NULL合并操作符??
参考官方手册: /** * NULL合并操作符 ?? */ // $a, $b, $c都未声明和定义 var_dump($a??$b??$c); // NULL // $a为数组,$b为100,$c为 ...
- javascript基础7(正则及表单验证)
1.正则的概念 JS诞生的目的是什么? 就是为了做表单验证. 在JS未出现以前,表单的信息验证需要传输给后台,让后台做数据验证处理之后,再返回给前端页面处理的结果.在带宽有 ...
- gevent协程之猴子补丁带来的坑
我们都知道使用gevent协程时,经常会看见在导入包的时候看见这样的代码 from gevent import monkey; monkey.patch_all() monkey.patch_all( ...
- jQuery效果-隐藏与显示 小方块的移除
html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- Django创建工程项目以及工作原理
一.Django 创建工作项目 1.创建 North 工程项目 (1)使用CMD命令行,切换到指定路径 django-admin.py startproject north (2)使用pycharm创 ...
- bean的初始化和销毁方法
1.bean的生命周期: bean创建---初始化----销毁的过程 容器管理bean的生命周期: 我们可以自定义初始化和销毁方法:容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁 ...