前言

  看了好多篇帖子,发现没有一个能够直接让新手很快上手使用水平居中布局的,所以在此进行一番总结,也算是我对水平居中布局的一点点积累沉淀,同时也方便初学者们拿来即用。

一、元素分类

1.行内元素

行内元素,也就是内联元素,可以在一行内显示多个。注:元素的高度、宽度、顶部底部边距均不可设置,元素的高度和宽度就是它包含的文字或图片的高度和宽度。

行内元素有这些:

<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>

当然有些时候可以通过以下代码变成块状元素:

display: block;

2.块状元素

块状元素,霸占一行,别的元素要另起行才可以。注:元素的高度、宽度、顶部底部边距可设置,元素宽度在不设置的情况下,是它本身父容器的100%。

块状元素有这些:

<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>

同样的你也可以通过以下代码把块状元素变为行内元素:

display: inline;

3.内联块状元素

内联块状元素,和行内元素相似,都在可以显示在一行上。注:元素的高度、宽度、行高以及顶和底边距都可设置,实用性较强。

内联块状元素有这些:<img>、<input>

可以通过以下代码把其他元素变为内联块状元素:

display: inline-block;    注:inline-block不支持IE6、IE7,使用时需要额外加上*display:inline;*zoom:1;以触发layout。

二、正常元素的居中方法

a.使用左右外边距自适应方法:

width: 200px;
margin: 0 auto;        /*使用此方法需要变为块状元素,且需要固定宽度*/

b.使用外边距加定位方法:/*此方法不适用于行内元素,需要变为块状元素或内联块状元素*/

width: 500px;
height: 30px;
position:relative;
margin-left: 50%;
left: -250px;        /*250px是元素的宽度除以2得到,且需要进行定位*/

c.父元素设置text-align: center;  /*使用此方法需要变为行内元素或内联块状元素*/

d.对于宽度不确定的元素,可以在外层套上一个table标签,然后给table使用margin: 0 auto来居中:/*此方法只适用于块状元素*/

table{
  width: 960px;
  height: 500px;
  border: 1px solid red;
  margin: 0 auto;
}
.center{
  border: 1px solid blue;
}

HTML代码:

<table>
    <tbody>
        <tr>
            <td>
                <div class="center">
                  我想水平居中!
                </div>
            </td>
        </tr>  
    </tbody>
</table>
 

e.对于宽度不确定的元素,给它和父元素进行定位,分别设置left: -50%和left: 50%,然后实现水平居中:/*此方法只适用于块状元素*/

.father{
  position:relative;
  left:50%;
  width: 960px;
  height: 300px;
  background: yellow;
}
.children{
  height: 30px;
  background:#ccc;
  position:relative;
  left:-50%;
}

HTML代码:

<div class="father">
  <div class="children">aaaaaaaa</div>
</div>

f.使用css3的flexbox居中,要在父元素中设置display:flex和justify-content: center,此方法适用于所有元素,但是存在IE不兼容的情况,PC页面慎用。

flex使用方法:

display:flex;    /*默认为块状元素*/

display:inline-flex; /*变成行内元素*/

居中实例:

.father{

  display: flex;
  display: -webkit-flex;
  justify-content: center;
  -webkit-justify-content: center;

}

三、浮动元素的居中方法

浮动元素:即使用float: left|right进行浮动操作后的元素。

1.浮动元素不确定宽度时,使用绝对定位,加入left: 50%和margin-left: -81px。

.children{
  text-align: center;
  float: left;
  height: 30px;
  position: absolute;
  left: 50%;
  margin-left: -81px;
  background: #ccc;
}

2.浮动元素固定宽度时,使用相对定位,加入margin-left: 50%和left: -width/2。     /*width/2即固定宽度的一半*/

.children{
  width:500px;
  height:300px;
  float:left;
  margin-left:50%;
  position:relative;
  left:-250px;
  background-color:#CCC;
}

内容持续更新中...

如有错误的地方或者更好用的方法,希望大家能在评论区留言指正,让我们共同进步!

css水平居中总结的更多相关文章

  1. css水平居中那点事

    昨晚深夜写了css垂直居中那点事,今晚该写他的兄弟篇:css水平居中那点事了..…^^ 其实本来这两个可以连在一起写,可是为了不要搞混,为了让思路更清晰,最后决定还是分开来些比较好...这样以后也有利 ...

  2. CSS水平居中

    三种情况:1.行内元素(文本.图片等) 给父元素设置text-align:center;来实现 2.定宽块状元素 <style> div{ border:1px solid blue; w ...

  3. css水平居中,竖直居中技巧(二)

    css水平居中,竖直居中技巧(二)===### 1.效果 ### 2.代码#### 2.1.index.html <!DOCTYPE html> <html lang="z ...

  4. css水平居中,竖直居中技巧(一)

    css水平居中,竖直居中技巧(一)===### 1.效果 ### 2.代码#### 2.1.index.html <!DOCTYPE html> <html lang="z ...

  5. css水平居中的各种方法

    说到水平居中,大家可能觉得很简单啊,text-align:center 就OK了. 但是,有时候会发现这样写了也没出效果.原因是什么呢?  请往下看. 水平居中:分为块级元素居中和行元素居中 行内元素 ...

  6. CSS水平居中/垂直居中的N个方法

    我看最近微博流行CSS居中技术,老外码农争相写相关的文章,一篇赛一篇的长啊,我把几篇归纳总结了一下,算是笔记. 孔乙己曾说:"茴香豆的回字有四种写法",万一哪天有个面试官问你:&q ...

  7. CSS水平居中和垂直居中解决方案

    一.CSS 居中 — 水平居中 DIV等标签本身没有定义自己居中的属性,网上很多的方法都是介绍用上级的text-align: center,然后嵌套一层DIV来解决问题. 可是这个方法有时候完全不起作 ...

  8. CSS 水平居中

    一.水平居中:行内元素解决方案 居中元素:文字.链接以及其它行内元素(inline或inline-*类型的元素,如inline-block,inline-table,inline-flex)解决方案: ...

  9. CSS 水平居中/布局 垂直居中 (月经问题)

    水平居中 如果它是一个行内元素 对其父元素使用 text-align:center 即可实现. <p style = " text-align:center; width:300px; ...

  10. CSS 水平居中与垂直居中

    前言 在CSS布局中,水平居中与垂直居中一直是用到比较多的,在本篇中将介绍水平居中.垂直居中的几种方式. 示例 HTML: <div class="parent"> & ...

随机推荐

  1. BZOJ 1036 [ZJOI2008]树的统计Count (树链剖分 - 点权剖分 - 单点权修改)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1036 树链剖分模版题,打的时候注意点就行.做这题的时候,真的傻了,单词拼错检查了一个多小时 ...

  2. CodeForces 705B Spider Man (水题)

    题意:给定 n 个数,表示不同的环,然后把环拆成全是1,每次只能拆成两个,问你有多少次. 析:也不难,反正都要变成1,所以把所有的数都减1,再求和即可. 代码如下: #pragma comment(l ...

  3. Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关

    资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载. 注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBu ...

  4. IE 、Firefox、Chrome 浏览器在 F12 控制台下切换至不同框架介绍

    有不少网页的页面,还在使用 iframe 标签,而此时,相当于页面有两个 window 对象,一个为当前页面 window ,另一个则为 iframe 页面下的 window .因为,有时候需要在 c ...

  5. 命令行创建maven模块工程

    上一边文章,借助外部eclipse来创建模块项目,本文直接使用maven命令来创建 mvn archetype:generate -DgroupId=com.mycompany.demo -Darti ...

  6. 关于php一句话免杀的分析<转载>

    一开始想这样:   <?php $_GET['ts7']($_POST['cmd']);?> 客户端用菜刀,密码cmd,url为test.php?ts7=assert   这个应该算没有什 ...

  7. 用c#读取并分析sql2005日志

    用过logExplorer的朋友都会被他强悍的功能吸引,我写过一篇详细的操作文档可以参考http://blog.csdn.net/jinjazz/archive/2008/05/19/2459692. ...

  8. 【转】DLX 精确覆盖 重复覆盖

    问题描述: 给定一个n*m的矩阵,有些位置为1,有些位置为0.如果G[i][j]==1则说明i行可以覆盖j列. Problem: 1)选定最少的行,使得每列有且仅有一个1. 2)选定最少的行,使得每列 ...

  9. IOS 日期选择

    传统方式 一般情况下弹出日期选择的场景是:用户点击UITextField弹出日期选择,关键代码如下: 点击UITextField弹出日期选择 1 2 3 UITextField *textField; ...

  10. WORD神操作!第一个技巧你就傻眼了!

    原文:http://mp.weixin.qq.com/s?__biz=MzA4NzkyMDIwNw==&mid=220128483&idx=4&sn=cfa87c941f36f ...