1、把margin设置为auto,此方法只能进行水平的居中,且对浮动元素或绝对定位元素无效。

代码:

<style type="text/css">
body{
margin: 0;
padding: 0;
}
#div1{
background-color: red;
width: 150px;
height: 150px;
}
#div2{
background-color: black;
width: 70px;
height: 70px;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<div id="div1" class="classname">
<div id="div2" class="classname">
</div>
</div>
</body>

2、效果图同上

这个没什么好说的,只能对图片,按钮,文字等行内元素(display为inline或inline-block等)进行水平居中。但要说明的是在IE6、7这两个奇葩的浏览器中,它是能对任何元素进行水平居中的。

代码:

<style type="text/css">
body{
margin: 0;
padding: 0;
}
#div1{
background-color: red;
width: 150px;
height: 150px;
text-align: center;
}
#div2{
background-color: black;
width: 70px;
height: 70px;
display: inline-block;
}
</style>
</head>
<body>
<div id="div1" class="classname">
<div id="div2" class="classname">
</div>
</div>
</body>

3、使用line-height让单行的文字垂直居中

把文字的line-height设为文字父容器的高度,适用于只有一行文字的情况。

4、使用表格:table

如果你使用的是表格的话,那完全不用为各种居中问题而烦恼了,只要用到 td(也可能会用到 th)元素的 align="center" 以及 valign="middle" 这两个属性就可以完美的处理它里面内容的水平和垂直居中问题了,而且表格默认的就会对它里面的内容进行垂直居中。如果想在css中控制表格内容的居中,垂直居中可以使用 vertical-align:middle,至于水平居中,貌似css中是没有相对应的属性的,但是在IE6、7中我们可以使用text-align:center来对表格里的元素进行水平居中,IE8+以及谷歌、火狐等浏览器的text-align:center只对行内元素起作用,对块状元素无效。

5、使用display:table-cell来居中

对于那些不是表格的元素,我们可以通过display:table-cell 来把它模拟成一个表格单元格,这样就可以利用表格那很方便的居中特性了。例如:

但是,这种方法只能在IE8+、谷歌、火狐等浏览器上使用,IE6、IE7都无效。

代码:

<style type="text/css">
body{
margin: 0;
padding: 0;
}
#div1{
border: 1px dashed red;
width: 150px;
height: 150px;
display: table-cell;
/*控制水平居中*/
text-align: center;
/*控制垂直居中*/
vertical-align: middle;
}
#div2{
background-color: black;
width: 70px;
height: 70px;
display: inline-block;
}
</style>
</head>
<body>
<div id="div1" class="classname">
<div id="div2" class="classname"> </div>
</div>
</body>

那面所说的都是很基础的方法,自然不能称之为奇淫巧计,下面就来说一些需要使用一些技巧的居中方法。

6、使用绝对定位来进行居中

效果图1:

代码1:

<style type="text/css">
body{
margin: 0;
padding: 0;
}
#div1{
border: 2px dashed red;
width: 150px;
height: 150px;
position: relative;
}
#div2{
background-color: black;
width: 70px;
height: 70px;
position: absolute;
/**
* top、和left的计算问题
* (152-70)/2=35
*/
top: 41px;
left: 41px;
}
</style>
</head>
<body>
<div id="div1" class="classname">
<div id="div2" class="classname"> </div>
</div>
</body>

效果图2:

代码2:

<style type="text/css">
body{
margin: 0;
padding: 0;
}
#div1{
border: 2px dashed red;
width: 110px;
height: 110px;
position: relative;
}
#div2{
background-color: black;
width: 70px;
height: 70px;
position: absolute;
/**
* margin-top、和margin-left的计算问题
* -70/2=-35
*/
left: 50%;
top: 50%;
margin-left: -35px;  //子元素宽度负的一半
margin-top: -35px;   //子元素高度负的一半
}
</style>
</head>
<body>
<div id="div1" class="classname">
<div id="div2" class="classname"> </div>
</div>
</body>

如果只想实现一个方向的居中,则可以只使用left , margin-left 来实现水平居中,使用top , margin-top来实现垂直居中。

7、另一种使用绝对定位来居中的方法

此法同样只适用于那些我们已经知道它们的宽度或高度的元素,并且遗憾的是它只支持IE9+,谷歌,火狐等符合w3c标准的现代浏览器。
下面用一段代码来了解这种方法:

效果图

代码:

<style type="text/css">
body{
margin: 0;
padding: 0;
}
#div1{
border: 2px dashed red;
width: 110px;
height: 110px;
position: relative;
}
#div2{
background-color: black;
width: 70px;
height: 70px;
position: absolute;
/**
* 此方法只适用高度宽度固定的
*/
/*left、right必须配对出现控制水平方向*/
left: 0;
right: 0;
/*top、bottom必须配对出现控制垂直方向*/
top: 0;
bottom: 0;
/*下面这句也是必不可少的*/
margin: auto;
}
</style>
</head>
<body>
<div id="div1" class="classname">
<div id="div2" class="classname"> </div>
</div>
</body>

这里如果不定义元素的宽和高的话,那么他的宽就会由left,right的值来决定,高会由top,bottom的值来决定,所以必须要设置元素的高和宽。同时如果改变left,right , top , bottom的值还能让元素向某个方向偏移,大家可以自己去尝试。

8、使用浮动配合相对定位来进行水平居中

此方法也是关于浮动元素怎么水平居中的解决方法,并且我们不需要知道需要居中的元素的宽度。

浮动居中的原理是:把浮动元素相对定位到父元素宽度50%的地方,但这个时候元素还不是居中的,而是比居中的那个位置多出了自身一半的宽度,这时就需要他里面的子元素再用一个相对定位,把那多出的自身一半的宽度拉回来,而因为相对定位正是相对于自身来定位的,所以自身一半的宽度只要把left 或 right 设为50%就可以得到了,因而不用知道自身的实际宽度是多少。

这种使用浮动配合相对定位来居中的方法,优点是不用知道要居中的元素的宽度,即使这个宽度是不断变化的也行;缺点是需要一个多余的元素来包裹要居中的元素。

看下代码:

http://www.cnblogs.com/2050/p/3392803.html

CSS布局居中的更多相关文章

  1. CSS布局——居中

    参考文章1.CSS布局奇淫技巧之--各种居中 2.http://www.imooc.com/article/2235 1.行内元素水平居中text-align:center对图片,按钮,文字等行内元素 ...

  2. CSS布局---居中方法

    在web页面布局中居中是我们常遇到的情况,而居中分为水平居中与垂直居中 文本的居中 CSS中对文本的居中做的非常友好,我们是需要text-align, line-height 两个属性就可以控制文本的 ...

  3. 【转】css布局居中和CSS内容居中区别和对应DIV CSS代码

    原文地址:http://www.divcss5.com/jiqiao/j771.shtml css布局居中和CSS内容居中区别和对应DIV CSS代码教程与图文代码案例篇 对于新手来说DIV CSS布 ...

  4. CSS 布局实例系列(一)总结CSS居中的多种方法

    使用 CSS 让页面元素居中可能是我们页面开发中最常见的拦路虎啦,接下来总结一下常见的几种居中方法吧. 1. 首先来聊聊水平居中: text-align 与 inline-block 的配合 就像这样 ...

  5. css布局之居中

    CSS布局之居中 本文主要是介绍水平居中,垂直居中,还有水平垂直居中的方法 水平居中 1.行内元素水平居中 使用text-align:center;就可以实现行内元素的水平居中,但是记得要在父元素中设 ...

  6. 主流 CSS 布局(水平居中、垂直居中、居中 )

    什么是布局 html 页面的整体结构或骨架 布局不是某个技术内容 而是一种设计思想 [ 布局方式 ] 水平居中布局 垂直居中布局 居中布局( 水平 + 垂直 ) 什么是水平居中布局 水平居中布局 元素 ...

  7. 界面设计技法之css布局

    css布局之于页面就如同ECMAScript之于JS一般,细想一番,html就如同语文,css就如同数学,js呢,就是物理,有些扯远,这里就先不展开了. 回到主题,从最开始的css到如今的sass(l ...

  8. CSS 布局

    近日开发中,总感觉页面布局方面力不从心.以前也曾学过这方面的内容,但是不够系统,因此我打算整理一下. 在web 页面中一般有 table 和 css+div 两种布局方式. 其中css+div 又分为 ...

  9. CSS布局(上)

    CSS布局(上) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !import ...

随机推荐

  1. Mysql 设计超市经营管理系统,包括商品信息表(goods) 和 商品类型表(goodstype)

    互联网技术学院周测机试题(一) 一  需求分析 为进一步完善连锁超市经营管理,提高管理效率,减少管理成本,决定开发一套商品管理系统,用于日常的管理.本系统分为商品管理.员工管理.店铺管理,库存管理等功 ...

  2. Hbase单点安装Version1.1.5

    Hbase单点安装,基于版本1.1.5, 使用hbase-1.1.5.tar.gz安装包. 1.安装说明 使用Hbase自带zookeeper和本地文件目录存储数据 2.安装规划 角色规划 IP/机器 ...

  3. JZOJ5405 & AtCoder Grand Contest 001 F. Permutation

    题目大意 给出一个长度为\(n\)的排列\(P\)与一个正整数\(k\). 你需要进行如下操作任意次, 使得排列\(P\)的字典序尽量小. 对于两个满足\(|i-j|>=k\) 且\(|P_i- ...

  4. SpringBootAdmin-使用踩坑

    一.版本选择 目前项目中使用的springcloud版本为 Hoxton.SR3,使用的spring-cloud-alibaba版本为2.2.1.RELEASE, 使用的springboot版本为2. ...

  5. [Blue Prism] Data item 的使用

      1.用于存储各种数据类型的变量,支持的数据类型如下: Binary - 用于存储二进制 blob,例如文本文件. Date - 用于存储日期. 此数据类型与 DateTime 类似,只是 Date ...

  6. C# string.Format 和 String.Format 的区别

    string.Format 和 String.Format  ,不论是用法还是意思,都是一样的 怎么使用? 通过 占位符来替换 ,类似于 Replace 的操作 string s = string.F ...

  7. MapReduce和Hive学习文档链接学习顺序

    1.<CentOS6.5下安装Hadoop-2.7.3(图解教程)> https://www.toutiao.com/i6627365258090512909/ 2.<CentOS6 ...

  8. JSP页面隐藏了哪些对象

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513312446378148356/ 1.<JSP页面实际上就是Servlet> 2.<JSP页 ...

  9. vue中form 表单常用校验封装(async-validator)

    新建一个js校验文件validate.js export const regular = { // 验证自然数 naturalNumber: /^(([0-9]*[1-9][0-9]*)|(0+))$ ...

  10. vue使用npm安装sass

    npm install --save-dev sass-loader style-loader css-loader npm install --save-dev extract-text-webpa ...