• [转载]CSS实现垂直居中的几种方法


    最近上网上找了些关于CSS实现垂直居中的方法,方法挺多,下面就我看到的几种好方法在这里说明一下,使用 CSS 实现垂直居中并不容易。有些方法在一些浏览器中无效,因此,到底选择哪种方法好,还要看具体情况。

    方法一:

    这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性。

    1 <div id="wrapper">
    2 <div id="cell">
    3 <div class="content">
    4   Content goes here</div>
    5 </div>
    6 </div>
    7   
    8 #wrapper {display:table;}
    9 #cell {display:table-cell; vertical-align:middle;}

    优点:content 可以动态改变高度(不需在 CSS 中定义)。当 wrapper 里没有足够空间时, content 不会被截断;

    缺点:Internet Explorer(甚至 IE8 beta)中无效,许多嵌套标签。

    方法二:

    这个方法使用绝对定位的 div,把它的 top 设置为 50%top margin 设置为负的 content 高度。这意味着对象必须在 CSS 中指定固定的高度。

    因为有固定高度,或许你想给 content 指定 overflow:auto,这样如果 content 太多的话,就会出现滚动条,以免content 溢出。

    <div class="content">
      
     Content goes here
      
    </div>
      
    #content {
       position:absolute;
       top:50%;
       height:240px;
       margin-top:-120px; /* negative half of the height */
    }

    优点:适用于所有浏览器,不需要嵌套标签

    缺点:没有足够空间时,content 会消失(类似div 在 body 内,当用户缩小浏览器窗口,滚动条不出现的情况)

    方法三:

    这种方法,在 content 元素外插入一个 div。设置此 div height:50%; margin-bottom:-contentheight;。

    content 清除浮动,并显示在中间。

    <div id="floater">
      <div id="content">
          Content here
      </div>
    </div>
      
    #floater {float:left; height:50%; margin-bottom:-120px;}
    #content {clear:both; height:240px; position:relative;}

    优点:适用于所有浏览器,没有足够空间时(例如:窗口缩小) content 不会被截断,滚动条出现

    缺点:唯一我能想到的就是需要额外的空元素了

    方法四:

    这个方法使用了一个 position:absolute,有固定宽度和高度的 div。这个 div 被设置为 top:0; bottom:0;。但是因为它有固定高度,其实并不能和上下都间距为 0,因此 margin:auto; 会使它居中。使用 margin:auto;使块级元素垂直居中是很简单的。

    <div id="content">
       Content here
    </div>
      
    #content {
       position:absolute;
       top:0;
       bottom:0;
       left:0;
       right:0;
       margin:auto;
       height:240px;
       70%;
    }

    优点:简单;

    缺点:IE(IE8 beta)中无效,无足够空间时,content 被截断,但是不会有滚动条出现;

    方法五:

    这个方法只能将单行文本置中。只需要简单地把 line-height 设置为那个对象的 height 值就可以使文本居中了。

    <div id="content"> Content here</div>
    #content {height:100px; line-height:100px;}

    优点:适用于所有浏览器,无足够空间时不会被截断

    缺点:只对文本有效(块级元素无效),多行时,断词比较糟糕

    这个方法在小元素上非常有用,例如使按钮文本或者单行文本居中。

  • 相关阅读:
    [svc]frp内网穿透
    [svc]caffe安装笔记
    [na]icmp重定向
    [tools]python的mkdocs模块分分钟将md搞成一个网站
    [svc]samba服务搭建
    [ci] jenkins的Timestamper插件-让日志显示时间
    [k8s]subpath解决cm覆盖目录问题
    struts2+jquery+ajax实现上传&&校验实例
    java String.split方法是用注意点(转)
    loadrunner java协议脚本要点
  • 原文地址:https://www.cnblogs.com/fx2008/p/2262112.html
Copyright © 2020-2023  润新知