CSS水平居中

这里指的水平居中当然是说通过CSS来自动控制的,而不是说计算之后,设置一个位置来指定居中的。

一般情况下有三种实现方式:

在实现方式中,我们定义两个名词来方便后面的解说:out--包含需要被居中元素的那个容器,in--需要居中的元素。

1. text-align: center

  • 设置out的text-align: center

  • 保证in的display为inline

2. margin-left : auto; margin-right: auto

  • 设置in的margin-left : auto; margin-right: auto

  • 保证in的display为block

3. 负外边距方式

  • 设置in的position:absolute

  • 设置in的left:50%

  • 设置in的margin-left: 负的in的宽度的一半(例如in的宽度是100px,那么设置这里为-50px)

  • 设置out的position:absolute/relative

  • 需要明确知道in的宽度

三种方式用起来都比较简单,但是都有自己的适用范围,上面给出的是达到居中目标而需要的条件,其中标明红色的地方即是条件,也是方法的局限所在。

前两种的原理都比较好理解,第三种的原理稍微讲一下,也很好理解:

实际上主要是两步,第一把in通过left:50%移动到out的中间,如果in只是一条线,那么到这里其实工作已经完成了。但是如果in有宽度的话,那么就会发现它的做边框正好位于out的中间位置。ok,

很显然的,第二步我们要把in再往左移动in宽度的一半,即可让in的中间位于out的中间,即in居于out的中间。

下面以in和out都是div来举例,给出代码,代码中包含全部三种方式也可以直接点击下面的demo地址 http://demo.zhengjiachao.com/css/hori-center.html


<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="../resource/js/jquery-1.7.2.js"></script>
<style type="text/css">
.out{
height:200px;
background-color: orange;
margin : 10px;
}

.in{
width:100px;
height:100px;
background-color: gray;
}
.out.type-1{
text-align: center;
}
.in.type-1{
display: inline;
}
.in.type-2{
margin : 0 auto;
}
.out.type-3{
position: relative;
}
.in.type-3{
position: absolute;
left: 50%;
margin-left: -50px;
}

</style>
</head>

<body>
<div class="out type-1">
<div class="in type-1">
1 text-align: center
</div>
</div>
<div class="out type-2">
<div class="in type-2">
2 margin: 0 auto;
</div>
</div>
<div class="out type-3">
<div class="in type-3">
3 负外边距
</div>
</div>
<script type="text/javascript">
</script>
</body>
</html>

CSS水平居中,布布扣,bubuko.com

时间: 2024-08-11 05:40:38

CSS水平居中的相关文章

css水平居中那点事

昨晚深夜写了css垂直居中那点事,今晚该写他的兄弟篇:css水平居中那点事了..…^^ 其实本来这两个可以连在一起写,可是为了不要搞混,为了让思路更清晰,最后决定还是分开来些比较好...这样以后也有利于自己重温~~ 一,text-align 为什么要第一个写text-align呢? 其实也没有为什么.....(别打我) 但text-align是一个很神奇的东西,在ie6中使用text-align会有惊喜 text-align是文本居中的意思,是使一个块级元素的行内内容对齐,所以正常来说,text

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

css水平居中,竖直居中技巧(二)===### 1.效果 ### 2.代码#### 2.1.index.html <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-C

css水平居中的各种方法

说到水平居中,大家可能觉得很简单啊,text-align:center 就OK了. 但是,有时候会发现这样写了也没出效果.原因是什么呢?  请往下看. 水平居中:分为块级元素居中和行元素居中 行内元素: 行内元素就是内联元素.例如<span>.<a>.<label>.<em>.<img>等.. 直接构建一个具有 ”text-align:center“样式的容器,那么里面包含的行内元素就会都居中了. <div style="text

CSS 水平居中和垂直居中

转自:http://www.cnblogs.com/fu277/archive/2012/09/13/2400118.html 1.水平居中 (1) 文本.图片等行内元素的水平居中 给父元素设置text-align:center可以实现文本.图片等行内元素的水平居中. (2) 确定宽度的块级元素的水平居中 通过设置margin-left:auto;和margin-right:auto;来实现的. (3) 不确定宽度的块级元素的水平居中 方法一: 使用table标签,table本身并不是块级元素,

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

一.CSS 居中 — 水平居中 DIV等标签本身没有定义自己居中的属性,网上很多的方法都是介绍用上级的text-align: center,然后嵌套一层DIV来解决问题.可是这个方法有时候完全不起作用,而且对于布局是非常不科学的方法.正确的的设置写法如下(对页面构造没有影响):div {margin-left: auto; margin-right: auto; }这句CSS居中的意思就是让div自己调整左右margin间隔的距离以达到水平居中的效果.有时候我们还可以简写为 div { marg

CSS 水平居中总结

水平居中设置-行内元素 我们在实际工作中常会遇到需要设置水平居中场景,今天我们就来看看怎么设置水平居中的. 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的.如下代码: html代码: <body> <div class="txtCenter">我是文本,哈哈,我想要在父容器中水平居中显示.</div> </body> css代码: <style> div.txt

CSS 水平居中

水平居中:行内元素解决方案 居中元素:文字.链接以及其它行内元素(inline或inline-*类型的元素,如inline-block,inline-table,inline-flex)解决方案:将inline元素包裹在一个display属性为block的父级元素中,如div.nav,设置父级元素属性text-align:center属性即可. HTML <div>文字元素</div> <nav>  <a href="">链接元素01&l

CSS——水平居中设置

一.行内元素 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的. 二.块状元素 当被设置元素为块状元素时用 text-align:center 就不起作用了,这时也分两种情况:定宽块状元素和不定宽块状元素. 满足定宽和块状两个条件的元素是可以通过设置“左右margin”值为“auto”来实现居中的. 不定宽度的块状元素有三种方法居中(这三种方法目前使用的都比较多): 1.加入 table 标签 第一步:为需要设置的居中的元素外面加入

css水平居中总结

前言 看了好多篇帖子,发现没有一个能够直接让新手很快上手使用的居中布局.所以在此进行一番总结,也算是我对居中布局的一点点积累沉淀,同时也方便初学者们拿来即用. 一.元素分类 1.行内元素 行内元素,也就是内联元素,可以在一行内显示多个.注:元素的高度.宽度.顶部底部边距均不可设置,元素的高度和宽度就是它包含的文字或图片的高度和宽度. 行内元素有这些: <a>.<span>.<br>.<i>.<em>.<strong>.<labe