• CSS水平垂直居中的方法


    原文链接:http://caibaojian.com/370.html

    水平垂直居中,特别是使用在列表的时候经常会用到的,以前有需求的时候我也做过类似的代码,是使用display:table-cell,mg12的博客那个相关文章的列表好像就是使用这个代码来的,之前我也是参考他来的。今天重新整理一下,并结合前人的辛劳,总结一下以作备份。

    水平居中,如果知道元素的宽度,则可以使用

    .cell{width:300px; margin:0 auto; text-align:center;}

    如果是内联元素居中,那么直接用text-align:center

    如果未知元素宽度,并且非内联元素,那么下面给出的几种方案也适合你。

    第一种:相对定位法

    原理是父类浮动的同时向左left:50%,而子类则向左浮动的同时left:50%;

    <style type="text/css">
    .centerlist {position:relative;left:50%;float:left;}
    .centerlist li {position:relative;right:50%; z-index:2;float:left}
    </style>
    <ul class="centerlist">
        <li><a href="#">Lorem ipsum dolor.</a></li>
        <li><a href="#">Lorem ipsum dolor.</a></li>
        <li><a href="#">Lorem ipsum dolor.</a></li>
        <li><a href="#">Lorem ipsum dolor.</a></li>
        <li><a href="#">Lorem ipsum dolor.</a></li>
        <li><a href="#">Lorem ipsum dolor.</a></li>
        <li><a href="#">Lorem ipsum dolor.</a></li>
        <li><a href="#">Lorem ipsum dolor.</a></li>
        <li><a href="#">Lorem ipsum dolor.</a></li>
    </ul>

    第二种:强制内联

    <style type="text/css">
    .centerlist_inline{text-align: center;}
    .centerlist_inline li{display: inline;}
    </style>
    <ul class="centerlist_inline">
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    </ul>

    局限:块级元素改为内联元素,那么高度、宽度、margin-top,margin-bottom, padding-top,padding-bottom,等都不能用。

    第三种: 使用inline-block

    如果看过博主之前写的inline-block替换float可能会更清楚这个属性的好处。

    <style type="text/css">
    .centerlist_inline-block{text-align: center; font-size:0; -letter-spacing:-1px;}
    .centerlist_inline-block li{display: inline-block; *display: inline; *zoom:1; font-size:12px; letter-spacing:normal; word-spacing:normal;}
    </style>
    <ul>
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    </ul>

    第四种:table-cell

    <style type="text/css">
    .centerlist_table-cell{display:table; margin:0 auto;}
    .centerlist_table-cell{display:table-cell;}
    </style>
    <ul class="centerlist_table-cell">
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    <li><a href="">lorem1</a></li>
    </ul>

    缺点是不兼容ie6,ie7

    推荐使用inline-block这种水平居中的方法,既保留了块级元素特性,而且完美兼容。就是代码有点多。另外你还可以使用表格的方式来水平居中。

    说完了水平居中,下面说垂直居中。

    如果元素是内联元素,并且只有一行,则我们可以通过line-height来设置与其高度同样大小,则实现了垂直居中了。

    如果未知元素高度,那就要用下面方法了!

    原文链接:http://caibaojian.com/css-vertical-middle.html

    html代码:

    <div class="middle-box">
        <div class="middle-inner">
            <p><span class="suc-tip">前端开发博客,专注前端开发和web教程</span><br/><span class="suc-link">快捷入口:<a href="http://caibaojian.com">http://caibaojian.com</a></span></p>
            <p style="display:none;"><span class="suc-tip">5年的老博客,一直致力于WEB开发</span></p>
        </div>
    </div>

    第一种:display:table的方法

    .middle-box{display: table; height: 300px;}
    .middle-inner{display: table-cell; vertical-align:middle; text-align:center;}
    /*
    缺点:不兼容ie6、ie7.
    */

    怎么兼容呢?当然是用另外一种相对定位和绝对定位的方式。

    <!--[if lt IE 8]>
    <style>
    .middle-inner { position: absolute; top:50%;}
    .middle-inner p {position: relative; top: -50%}
    </style>
    <![endif]-->

    可以使用IE的特有的条件语法,不过我习惯用ie hack来写。下面这个的代码实现了水平垂直多行代码(支持一行)居中对齐。目前测试IE、chrome和Firefox均兼容。代码如下:

    .middle-box{display: table; height: 300px; border:1px solid #ff0000; width:400px; margin:0 auto; position:relative;}
    .middle-inner{display: table-cell; vertical-align:middle; *position:absolute; *top:50%; *left:50%; width:100%; text-align:center;}
    .middle-inner p{position:relative; *top:-50%; *left:-50%;}

    遇到居中问题,这三句CSS就够用了。

    第二种方法:增加一个空白标签

    HTML代码:

    <div class="middle-box">
    <p><span class="suc-tip">前端开发博客,专注前端开发和web教程</span><br/><span class="suc-link">快捷入口:<a href="http://caibaojian.com">http://caibaojian.com</a></span></p>
    <i class="visible"></i>
    <p style="display:none;"><span class="suc-tip">5年的老博客,一直致力于WEB开发</span></p>
    </div>

    CSS代码:

    .middle-box{height:300px; border: 1px solid #f00; width: 400px; margin: 0 auto; text-align: center; }
    .middle-box p{vertical-align: middle; display: inline-block; *display: inline; *zoom: 1;}
    .visible{height: 100%; vertical-align: middle; width: 0; display: inline-block;}
  • 相关阅读:
    Lightoj---1030
    hdu---2091---空心三角形
    hdu---2037---今年暑假不AC
    将ant Design本地化,可通过link以及script直接引入html中使用
    js 解析json
    解决ant Design dva ajax跨越请求 (status=0)
    ubantu 14.04中安装npm+node.js+react antd
    ubantu中搭建virtualenv+python3.4+flask
    Linux ubantu中安装虚拟/使用环境virtualenv以及python flask框架
    页面中去除浮动 clear:both
  • 原文地址:https://www.cnblogs.com/yiven/p/6072920.html
Copyright © 2020-2023  润新知