zoukankan      html  css  js  c++  java
  • div水平居中与垂直居中的方法【摘自美浩工作室官方博客 】

    大家往往在写页面中会遇到不固定宽和高的div如果水平和垂直都居中呢?在写css的时候经常遇到的一个问题,当div没有固定的宽度或者高度的时候,如何才能让div水平或者垂直居中显示。
    如果div有固定宽度的话,用padding,margin都很容易实现。方法有很多种。不过经常遇到这种div没有固定的宽度高度的情况,我们就不能用margin,padding设置固定的距离了。这个问题让很多人头疼。而怎么样才能让这个div居中显示呢?其实这种情况解决的办法也是有很多种,js,css都可以实现。

    1.先来看看宽度不固定的div如何设置水平居中:

     
    <style type=“text/css”>   
    .container{width:500px;height:80px;background:#C2300B;margin-left:50px;padding-top:10px;text-align:center;}   
    .center{display:inline-block;border:2px solid #fff;}   
    .center{_display:inline;} /*针对ie6 hack*/  
    .center a{float:left;border:1px solid #fff;padding:5px 10px;margin:10px;color:#fff;text-decoration:none;}   
    </style>   
    <div class=“container”>   
    <div class=“center”><a href=“#”>1</a><a href=“#”>2</a><a href=“#”>3</a>   
    <div style=“clear:both”></div></div>  

    无固定宽度的div水平居中代码要点:

    这种div宽度不固定的情况,常见于分页处,由于分页不确定有多少页,所以用于分页的元素所在的容器宽度通常不是固定的。
    父容器container加css属性 text-align:center;子容器center加css属性display:inline-block;
    .center{_display:inline;} 为针对ie6的hack,针对ie6前面的display:inline-block;的作用是在ie下触发元素的layout,使其haslayout。

    2.再看看高度不固定的div如何设置垂直居中:

     
    <div id=“vc”><div id=“vci”><div id=“content”>   
    我们垂直居中了,我们水平居中了   
    </div></div></div>   
    <style type=“text/css”>   
    #vc { display:table; background-color:#C2300B; width:500px; height:200px; overflow:hidden; margin-left:50px; _position:relative; }   
    #vci { vertical-align:middle; display:table-cell;  _position:absolute; _top:50%; }   
    #content { color:#fff; border:1px solid #fff;  _position:relative; _top:-50%;  }   
    </style>  

    无固定高度的div垂直居中代码要点:
    父容器vc的css属性 display:table;overflow:hidden;
    子容器vci的css属性 vertical-align:middle;display:table-cell;
    针对ie6的hack,vci容器的 _position:absolute;_top:50%; 和content容器的 _position:relative; _top:-50%;


    我们看看宽度高度不固定的div垂直居中和水平居中的实例:

    360截图20140614114201098

     
    <!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>   
    <meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />   
    <title>无标题文档</title>   
    <style type=“text/css”>   
    #vc { display:table; background-color:#000; width:1200px; height:1000px; overflow:hidden; margin-left:50px; _position:relative; }   
    #vci { vertical-align:middle; display:table-cell; text-align:center; _position:absolute; _top:50%; _left:50%; }   
    #content { color:#fff; border:1px solid #fff; display:inline-block; _position:relative; _top:-50%; _left:-50%; }   
    </style>   
    <body>   
    <div id=“vc”><div id=“vci”><div id=“content”>   
    我们垂直居中了,我们水平居中了,真的是可以居中的吗,<br />   
    你信不信我反正是新了<br />   
    <br />   
    美浩工作室是一个90后团队,网站建设设计为一体的一个<br />   
    年轻化互联网团队!   
    </div></div></div>   
    </body>   
    </html> 
     

    代码要点:
    父容器vc的css属性 display:table;overflow:hidden;
    子容器vci的css属性 vertical-align:middle;display:table-cell;
    针对ie6的hack,vci容器的 _position:absolute;_top:50%; 和content容器的 _position:relative; _top:-50%;
    如果不需要水平居中的话,需要注释掉vci容器的text-align:center;_left:50%;以及content的display:inline-block;_left:-50%;

    那如果宽和高都固定了怎么水平垂直居中呢?且看下面代码:

    宽度高度固定的div垂直居中和水平居中实例:

    360截图20140614114800176

     
    <!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>   
    <meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />   
    <title>无标题文档</title>   
    <style type=“text/css”>   
    .guding{width:500px;height:400px;background:#000;margin-left:50px;position:relative;}   
    .gd{width:150px;height:100px;background:#fff;position:absolute;top:50%;left:50%;margin-top:-50px;margin-left:-75px;}   
    </style>   
    <body>   
    <div class=“guding”><div class=“gd”>美浩工作室测试固定高宽div<br />   
    居中了</div></div>   
    </body>   
    </html>  

    代码要点
    父容器要用相对定位position:relative;否则的话子元素会相对于浏览器窗口进行绝对定位。
    子容器绝对定位,top:50%;left:50%;margin-top,margin-left的值取该容器高度,宽度的一半的负值。

    欢迎大家来浏览我的博客,如发现我有写错的地方,欢迎交流指正。
  • 相关阅读:
    jstl插件使用
    IDEA配置tomcat
    Spring框架
    2020/7/17 JAVA模拟斗地主发牌洗牌
    2020/7/15 JAVA之Map接口
    2020/7/14 Java之增强for循环、泛型、List接口、Set接口
    2020/7/13 集合之ArrayList集合、Collection接口、Iterator迭代器
    2020/7/13 常用API之基本类型包装类、System类、Math类、Arrays类、大数据运算
    2020/7/11 日期相关类
    2020/7/8 JAVA总结之:匿名对象/内部类/包的声明与访问/访问修饰符/代码块
  • 原文地址:https://www.cnblogs.com/lulu-beibei/p/4519947.html
Copyright © 2011-2022 走看看