解读 CSS 布局之水平垂直居中

水平居中

align="center"

直接在标签对象内加align="center"即可让对象内图片横向水平居中显示

align="center"使用方法:

<div align="center">aaa</div>

text-align:center

<style>
    .divcss5{text-align:center}
</style>
<div class="divcss5">aaa</div>

text-align是针对父元素进行设置,只能对图片,按钮,文字等行内元素(display为inline或inline-block等)起作用,起作用的首要条件是子元素必须没有被float影响。但要说明的是在IE6、7这两个奇葩的浏览器中,它是能对任何元素进行水平居中的

把margin设为auto

具体来说就是把要居中的元素的margin-left和margin-right都设为auto,此方法只能进行水平的居中,且对浮动元素或绝对定位元素无效

<style>
    body{ text-align:center}
    .div{ margin:0 auto;}
</style>
<div class="div">aaa</div>

使用display:table-cell来居中

表格中只要用到 td(或 th)元素的 align="center"valign="middle" 这两个属性就可以完美处理,而且表格默认对它里面的内容进行垂直居中。在css中控制表格内容的居中可以使用 vertical-align:middle,至于水平居中,css中没有相对应的属性的,但在IE6、7中可以用text-align:center对表格里的元素设置,IE8+及谷歌、火狐等的text-align:center只对行内元素起作用,对块状元素无效

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

<div style="display:table-cell;width:200px;height:200px;border:1px solid #ccc;">
    <div>aaa</div>
</div>

使用绝对定位来进行居中

此法只适用于那些我们已经知道它们的宽度或高度的元素。

绝对定位进行居中的原理是通过把绝对定位元素的left属性设为50%,此时元素并不居中,而是比向右偏了这个元素宽度的一半,需要使用一个负的margin-left把它拉回到居中的位置,这个负的margin值就取元素宽度的一半

使用这个方法的好处在于无论你是什么形式的内容都可以马上居中,而缺点就是必须对元素有确定的宽高值,否则的话可能就需要通过javascript来进行一些小计算了

<style>
.child{width:100px;height:100px;position:absolute;left:50%;margin-left:-50px;}
</style>
<div class="parent">
    <div class="child">aaa</div>
</div>

利用盒模型实现水平居中--padding填充

margin

绝对居中

<style>
.Center {width:100px; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; }
</style>
<div class="Center">aaa</div>

优点:支持跨浏览器,包括IE8-IE10。无需其他特殊标记,CSS代码量少。支持百分比%属性值和min-/max-属性。只用这一个类可实现任何内容块居中。不论是否设置padding都可居中(在不使用box-sizing属性的前提下)。内容块可以被重绘。完美支持图片居中。

缺点:必须声明宽度。建议设置overflow:auto来防止内容越界溢出。在Windows Phone设备上不起作用。

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

<style>
    .parent{width:300px;height:200px;border:1px solid red;}
    .wraper{float:left;position:relative;left:50%;clear:both;}
    .child{border:1px solid blue;position:relative;left:-50%;white-spave:nowrap;}
</style>
<div class="parent">
    <div class="wraper">
        <div class="child">aaa</div>
    </div>
</div>

这个是浮动元素水平居中的解决方法,且我们不需要知道元素的宽度

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

优点是不用知道要居中的元素的宽度,即使这个宽度是不断变化的也行;缺点是需要一个多余的元素来包裹要居中的元素

使用button标签

<button>
  <div>
    居中居中居中居中居中居中<br>
    居中居中居中居中居中居中
  </div>
</button>
<style>
button{width: 400px;height: 200px;border:1px solid #f00;
  &:focus{outline:none;}
  div{display: inline-block;}
}
</style>

这种方法属于奇淫技巧,利用button标签天生外挂的这一技能对其里面的元素进行居中

flexbox

<div class="wrap">
    居中居中居中居中居中居中居中<br>
    居中居中居中居中居中居中居中
</div>
<style>
    .wrap{display: flex;align-items: center;justify-content: center;width: 400px;height: 200px;border:1px solid #f00;}
</style>

flexbox是个很强大的布局模块,三个属性就搞定居中,而且不论父容器还是居中元素都可以不定宽高

垂直居中

line-height

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

<div id="parent">
    <div id="child">Text here</div>
</div>
<style>
    #child { line-height: 200px; }
</style>

使用display:table-cell来居中

<div style="display:table-cell;vertical-align:middle;width:200px;height:200px;border:1px solid #ccc;">
    <div>aaa</div>
</div>

使用绝对定位来进行居中

此法只适用于那些我们已经知道它们的宽度或高度的元素。

绝对定位进行居中的原理是通过把绝对定位元素的top的属性设为50%,这个时候元素并不是居中的,而是比居中的位置向下偏了这个元素宽度或高度的一半的距离,所以需要使用一个负的margin-top的值来把它拉回到居中的位置,这个负的margin值就取元素宽度或高度的一半

<style>
.child{width:100px;height:100px;position:absolute;top:50%;margin-top:-50px;}
</style>
<div class="parent">
    <div class="child">aaa</div>
</div>

利用盒模型实现水平居中--padding填充

绝对居中

<style>
.Center { height:100px; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; }
</style>
<div class="Center">aaa</div>

优点:

支持跨浏览器,包括IE8-IE10。无需其他特殊标记,CSS代码量少。支持百分比%属性值和min-/max-属性。只用这一个类可实现任何内容块居中。不论是否设置padding都可居中(在不使用box-sizing属性的前提下)。内容块可以被重绘。完美支持图片居中。

缺点:

必须声明高度。建议设置overflow:auto来防止内容越界溢出。在Windows Phone设备上不起作用。

简而言之:绝对定位元素不在普通内容流中渲染,因此margin:auto可以使内容在通过top: 0; left: 0; bottom: 0;right: 0;设置的边界内垂直居中

使用button标签

<button>
  <div>
    居中居中居中居中居中居中<br>
    居中居中居中居中居中居中
  </div>
</button>
<style>
button{width: 400px;height: 200px;border:1px solid #f00;
  &:focus{outline:none;}
  div{display: inline-block;}
}
</style>

这种方法属于奇淫技巧,利用button标签天生外挂的这一技能对其里面的元素进行居中

flexbox

<div class="wrap">
    居中居中居中居中居中居中居中<br>
    居中居中居中居中居中居中居中
</div>
<style>
    .wrap{display: flex;align-items: center;justify-content: center;width: 400px;height: 200px;border:1px solid #f00;}
</style>

flexbox是个很强大的布局模块,三个属性就搞定居中,而且不论父容器还是居中元素都可以不定宽高

时间: 2024-08-05 23:01:06

解读 CSS 布局之水平垂直居中的相关文章

css中元素水平垂直居中4种方法介绍

  table-cell轻松设置文本图片水平垂直居中 让一个元素垂直居中的思路:把这个元素的容器设置为table-cell,也就是具有表格单元格的特性,再使用vertical-align(这个属性对block元素不起作用,但对table-cell元素是有效的)设置元素垂直居中,即可达到我们想要的效果. IE7及以下版本不支持此方法,IE8及以上版本及大部分的主流浏览器都很好的支持. HTML代码  代码如下   <div class="img">     <img s

CSS实现DIV水平 垂直居中-1

水平大家都知道,一般固定宽度给个margin:0 auto:就可以了.下面实现水平垂直都居中 HTML <div class="parent"> </div> css html,body{ width: 100%; height: 100%; } .parent{ width: 750px; height: 400px; background: orange; /*水平居中*/ margin: 0 auto; position: relative; top: 5

CSS让DIV水平垂直居中(兼容IE/FF/google浏览器)

实例  代码如下 复制代码 <style type="text/css"> body { margin: 0; padding: 0; background: #1d1d1d; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; } h1 { font: 4em Georgia, "Times New Roman", Times, serif; color: #fff;

div css控制DIV水平垂直居中

 代码如下 复制代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="te

css中水平垂直居中对齐布局实例总结

 水平居中,如果知道元素的宽度,则可以使用 代码如下 .cell{width:300px; margin:0 auto; text-align:center;}   如果是内联元素居中,那么直接用text-align:center则行 如果未知元素宽度,并且非内联元素,那么下面给出的几种方案也适合你. 用CSS来实现元素的垂直居中效果是件苦差事,虽然说实现方法有多种,但有很多方式在某些浏览器下可能无法正常的工作.接下来我们就一起来看看这些不同方法实现垂直居中的各自优点和其不足之处. 方法一: 这

css中水平垂直居中对齐布局一些实例总结

水平居中,如果知道元素的宽度,则可以使用  代码如下 复制代码 .cell{width:300px; margin:0 auto; text-align:center;} 如果是内联元素居中,那么直接用text-align:center则行 如果未知元素宽度,并且非内联元素,那么下面给出的几种方案也适合你. 用CSS来实现元素的垂直居中效果是件苦差事,虽然说实现方法有多种,但有很多方式在某些浏览器下可能无法正常的工作.接下来我们就一起来看看这些不同方法实现垂直居中的各自优点和其不足之处. 方法一

CSS制作水平垂直居中对齐 多种方式各有千秋

在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,平时工作收集了几种不同的方式制作垂直居中方法,但每种方法各有千秋在此与大家分享或许对初学者有所帮助   作为前端攻城师,在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,特别的其中的垂直居中,更是让人烦恼.这段时间,我收 集了几种不同的方式制作垂直居中方法,但每种方法各有千秋呀,要正确的选择也是一件不容易的事情.我会将这几种方法一一介绍给大家,以供大家参考.或许对 于我这样的初学者有一定的帮

CSS布局:图片在DIV中上下左右居中(水平和垂直都居中)

  CSS布局实例,这个例子相信很实用,让一个图片在Div容器中上下.左右都居中,也就是水平和垂直都居中,有用吧,平时遇到的机率挺高的,下面结合CSS和HTML来实现这个演示,请参见代码: 测试效果如下:可看到图片在Div class内水平和垂直居中:

css实现未知尺寸元素水平垂直居中的方法

1.table表格 <table><tbody> <tr> <td>水平垂直居中的随意内容</td> <td>水平垂直居中的随意内容</td>-类似这样的, 垂直居中对其来说,也是非常简单的事.table cells 的 vertical-align:middle 就可以直接解决.所以实现起也来只要这样一行代码: td{ vertical-align:middle; } 2.display:table-cell实现  代码