码迷,mamicode.com
首页 > Web开发 > 详细

css布局 : 居中问题

时间:2015-11-09 22:13:02      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

1.水平居中

       1.1   margin:auto

              把要居中的元素的margin-left和margin-right都设为auto,对浮动元素或绝对定位元素无效

       1.2   text-align:center

              只能对图片,按钮,文字等行内元素(display为inline或inline-block等)进行水平居中(对ie6.7对任何元素居中)

2.垂直居中

       2.1   line-height:

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

3.使用表格

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

     3.2    display:table-cell 来居中

             通过display:table-cell 来把它模拟成一个表格单元格,就可以利用表格那很方便的居中特性了

             

     <div style="display:table-cell;vertical:middle;text-align:center;width:200px;height:200px; border:1px solid red;">
         <div style="width:50px;height:50px;background:blue;display:inline-block;"></div>
     </div>

4.使用绝对定位和margin负值实现居中

       4.1  在已知高度和宽度的元素

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

<head>
   <style>
        body{margin:0;pdding:0;}
       .parent{width:200px;height:200px;border:1px solid red;position:relative}
       .child{width:100px;height:100px;background:blue;position:absolute;
         top:50%;
         left:50%;
         margin-left:-50px;   //元素宽度一半
         margin-top:-50px;   //元素宽度一半 
}
</style>
</head>
<body>
<div class=parent>
<div class=child></div>
</div>
</body>

   4.2也是在知道宽度和高度的元素中  

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

<head>
  <style>
      body{margin:0;padding:0}
     .parent{width:200px;height:200px;border:1px solid red;position:relative}  
.child
{width:100px;height:100px;background:blue;position:absolute; top:0; right:0; bottom:0; left:0; margin:auto; } </style> </head> <body> <div class="parent"> <div class="child"></div> </div> </body>

 

5.使用浮动配合相对定位来实现居中

     关于浮动元素如何设置居中,,不需要知道需要居中的元素的宽度

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

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

<head>
     <style>
         body{margin:0;pdding:0}
         .parent{border:1px solid red;height:200px;width:200px;}
.wraper{float:left;position:relative;left:50%;clear:both;} .child{border:1px solid blue;position:relative;left:-50%;white-space:nowrap;} //left:-50%;或者 right:50% </style> </head> <body> <div class="parent"> <div class="wraper"> <div class="child">水平居中了</div> </div> <div class="wraper" style="margin-top:20px"> <div class="child">宽度不同的</div> </div> <div class="wraper"style="margin-top:20px"> <div class="child">是的哈</div> </div>  </div> </body>

 

css布局 : 居中问题

标签:

原文地址:http://www.cnblogs.com/lulu-front/p/4951164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!