在布局的时候经常能用到居中,在此总结一下

html结构:

<div class="wrap">
<div class="content"></div>
</div>

1.水平居中:margin:auto;

.wrap{
width: 400px;
height: 400px;
background-color: lightblue;
}
.content{
width: 200px;
height: 200px;
background-color: lightcoral;
/*margin:auto只能水平居中*/
margin: auto;
}

此方法简单只需一行代码,但是只能水平居中,至于为什么垂直居中不起作用呢:默认宽度继承父级宽度,而高度不能继承可以由内容撑开,居中计算时是相对父级计算因此垂直居中不起作用

效果如下:

2.垂直居中:table-cell

.wrap{
   width: 400px;
   height: 400px;
   background-color: lightblue;
   /* 将父元素的display设置为table-cell*/
   display: table-cell;                
   vertical-align: middle;
}
.content{
   width: 200px;
   height: 200px;
   background-color: lightcoral;
}

这里要强调一点就是display:table-cell是对父元素设置的,在表格单元中,vertical-align属性会设置单元格框中的单元格内容的对齐方式。这里设置为middle居中对齐,有兴趣的小伙伴也可以试试其他值如:top,bottom等。

效果如下:

3.一个水平居中,一个垂直居中放在一起是不是就可以垂直水平居中了

.wrap{
width: 400px;
height: 400px;
background-color: lightblue;
display: table-cell;
vertical-align: middle;
}
.content{
width: 200px;
height: 200px;
background-color: lightcoral;
margin: auto;
}

效果图:

bingo就是这么完美

4.绝对定位(高度未知)

.wrap{
width: 400px;
height: 400px;
background-color: lightblue;
/*父元素相对定位*/
position: relative;
}
.content{
width: 200px;
height: 200px;
background-color: lightcoral;
/*子元素绝对定位*/
position: absolute;
/*子元素分别相对top,left偏移50%*/
top:50%;
left: 50%;
/*子元素相对自身top,left分别移动-50%*/
transform: translate(-50%,-50%);
}

效果图:

上面两种方法优点在于可以在高度未知的情况下使用,下面这种方法就要知道子元素高度

5.绝对定位(已知子元素宽高的情况下) 调整负margin值

.wrap{
width: 400px;
height: 400px;
background-color: lightblue;
/*父元素相对定位*/
position: relative;
}
.content{
width: 200px;
height: 200px;
background-color: lightcoral;
/*子元素绝对定位*/
position: absolute;
/*子元素分别相对top,left偏移50%*/
top:50%;
left: 50%;
/*子元素相对自身top,left分别移动负100像素*/
margin-top:-100px;
margin-left:-100px;
}

效果图与上面一种方法一样就不在放了。

6.弹性盒模型:display:flex;

.wrap{
width: 400px;
height: 400px;
background-color: lightblue;
display:flex;
}
.content{
width: 200px;
height: 200px;
background-color: lightcoral;
margin:auto;
}

flex兼容性问题可参考下图:

7.单行文本居中:line-height

html结构:

<div class="content">一切都是最好的安排</div>

css样式:

.content{
width: 200px;
height: 200px;
background-color: lightcoral;
line-height: 200px;
}

效果图:

8.多行文本就不能用line-height了,还可以用上面table-cell方法来使多行文本居中

.content{
width: 200px;
height: 200px;
background-color: lightcoral;
display:table-cell;
vertical-align:middle;
}

可以直接在div(.content)中输入文本或者文本输入在一个标签里

更新与2016-12-30

9.text-align:center+inline-block文本居中

text-align属性用于控制文字的对其与显示,从其渲染与解析上来看,其主要是用来控制inline水平元素或inline-block元素的对齐与显示的,例如嵌套行内标签的文字、图片、input表单控件等;而对block水平的元素是没有作用的。

  *{
margin:;
padding:;
}
div{
width:400px;
height:400px;
background-color: #00AA88;
}
ul{
font-size:;
/*因为li标签inline-block后li之间默认有3px间隙,font-size设为0去除间隙*/
text-align: center;
}
li{
font-size: 16px;
display: inline-block;
border:1px solid #000;
}

效果如下:

稍加修改可以作为分页标签来使用。

CSS垂直水平居中方法总结的更多相关文章

  1. CSS垂直水平居中方法整理

    CSS定位中常常用到垂直居中,比如覆盖层上的弹框. 兼容性比较好的方法: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transition ...

  2. 关于css垂直水平居中的几种方式

    css中元素的垂直水平居中是比较常见及较常使用的,在这里向大家介绍一下几种方式. 1.水平居中 margin: 0 auto; 效果图: 而文字的垂直水平居中也比较简单,加上line-height: ...

  3. css 垂直+水平居中

    垂直+水平居中是一个老生常谈的问题了,现在就固定高度和不固定高度两种情况去讨论 1.父盒子固定高度[定位] 实现1: father-box: position:relative child-box:p ...

  4. CSS之垂直水平居中方法

    //居中方法1 position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto; width: 346px; height ...

  5. css 垂直水平居中总结

    一.前言: 垂直居中有很多方式,我们要做的不是写出完美代码,而是在合适的情况下根据需求选择合适方式. 主要方式: line-height 绝对定位 表格 display:table-cell 主要需求 ...

  6. css垂直水平居中方案

    1. 水平居中 如果是inline元素:在父元素上面设置text-align:center; 如果是block元素:设置宽度和margin:0 auto; 如果是多块级元素:在父元素上面设置text- ...

  7. (转载)css垂直水平居中的整理

    方法一 .demo1 { width:180px; height:180px; line-height:180px; *font-size:160px; border:1px solid #ddd; ...

  8. CSS垂直水平居中

    小小的总结一下:行内元素水平居中用text-align: center;块级元素水平居中用margin-left: auto; margin-right: auto; 首先讨论一下单行时的情况. 毫无 ...

  9. div块元素垂直水平居中方法总结

    1.已知块级元素的宽和高,使用绝对定位+外边距设定水平垂直居中. 父元素position:relative,子元素position:absolute;top:50%;left:50%;margin-t ...

随机推荐

  1. Python3.5之TuShare

    这部分是直接搬运过来的,官方网站http://tushare.waditu.com/ TuShare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据 ...

  2. Echarts 3.19 制作常用的图形 非静态

    最近阿里内部使用的 图表也向外开放了 而百度就好像更有良心一点,Echarts 早就开放了 . 自己学Echarts的时候走了很多的弯路,毕竟谁让自己菜呢,多撞几次南墙才晓得疼 才知道学习方法,新手上 ...

  3. linux系统的初化始配置

    一.网络的初始化 1.ip地址的修改(临时生效) 使用ifconfig命令 ifconfig 网卡名 ip地址 子网掩码 [root@localhost /]# ifconfig eno1677773 ...

  4. iOSIPV6简单测试环境搭建

    应苹果官方要求,iOS应用必须适配IPV6才能通过审核,这里分享一个简单的ipv6测试方法 一.工具原料 1.1 Mac电脑一台 1.2 iPhone手机两部 1.3 数据线一根 二.步骤方法 2.1 ...

  5. WPF 画心2.0版之元旦快乐

    2017年元旦已经到了,想做一个祝福语的窗口,就把上一篇画心的程序改了改,变成了如下界面. 说下改动的地方,首先窗口没有标题栏了. MainWindow.xaml AllowsTransparency ...

  6. CentOS Yum 命令详解

    总所周知,Redhat和Fedora的软件安装命令是rpm,但是用rpm安 装软件最大的麻烦就是需要手动寻找安装该软件所需要的一系列依赖关系,超级麻烦不说,要是软件不用了需要卸载的话由于卸载掉了某个依 ...

  7. 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】

    一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...

  8. 深信服务发布SSL站点

    1.不能使用AD自带的HTTPS服务,需要新建一个服务,端口443 2.在“节点池”中添加内网HTTPS服务器的IP,端口443 3.在“策略”中新建一条策略,"服务"选新添加的端 ...

  9. maven权威指南学习笔记(四)—— maven生命周期(lifecycle)

    定义: 生命周期是包含在一个项目构建中的一系列有序的阶段 举个例子来说就是maven 对一个工程进行: 验证(validate) -- 编译源码(compile) -- 编译测试源码(test-com ...

  10. eclipse项目上面有个红叉,但是没有任何地方有错误

    eclipse项目上面有个红叉,但是没有任何地方有错误,clear,refresh,重启都试过了,依然没用, 后来我换了一个workspace,编译的时候提示: Description Resourc ...