水平居中 3种方式!

参考 http://www.aiubug.com/?p=427

以及 http://www.tcreator.info/cnBootstrap/cnDocs/solutions/float-center.html

http://stackoverflow.com/questions/7756926/difference-between-span-and-div-with-text-aligncenter

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="zh-cn" lang="zh-cn" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>

<style>
ul,li{
    margin:0;
    padding:0;
    list-style:none;
}
#macji{
    width:100%;
    height:80px;
    background-color:#eee;
    text-align:center;
    overflow:hidden;
}
#macji .macji-skin{
    float:left;
    position:relative;
    left:50%;
}
#macji .macji-skin li{
    float:left;
    margin:10px;
    padding:0 10px;
    position:relative;
    right:50%;  /*这里的right不好理解的话看不固定居中方式2*/
    line-height:60px; /*li虽然是块级元素 同时又被成为内联元素 所以可以用line-height开撑高度*/
/*    所以使用height也是可以更改li的高度的 但是没有line-height好  因为使用line-height的同时 li中的字可以垂直居中(如果只有一行字的话)*/
    border:solid 1px #000;
}
</style>

    <style type="text/css">
.fixed_width{
    height: 30px;
    width: 60%;
    margin: 0 auto;
    background-color: green;

}

.nav{
    padding-bottom: 50px;
}

.nav_item{
    float: left;
    margin:10px;
    padding:0 10px;
    border:solid 1px #000;
}

.unknown_width_wrapper{
    float: left;
    position: relative;
    left: 50%;/*使用left必须是position不是static的情况下才有效  position默认值是static*/
    /*这里的left是使本元素从其父元素中间的位置才开始   虽然你现在觉得奇怪  那不就是中间偏后的位置嘛  不居中啊  看后面就知道了*/
    /*最外层的元素没有设定width  因为我们不知道它应该有多宽 因为内容宽度不固定
    它的宽度最终是由内部div的宽度决定的  在推算的时候 假设一个值就好*/

}

.unknown_width_inner{
    position: relative;
    left: -50%;
/*    这里又设定相对于刚才的父div的-50%的位置开始  本div也没有设置宽度  因为它的宽度是根据其内容决定的  而其父div的宽度又根据本div决定  所以本div宽度和父div宽度一致  从草图上看  又向左边移动了其父亲div的50% 就刚好在nav中居中了*/
    float: left;
}

.unknown_width_inner2{
    position: relative;
    right: 50%;/*首先其父元素 方才已经分析过 来到了相对于nav中间偏后的位置
    这里我只要设定好整个需要居中元素的末尾位置限就可以  也就是right要空出50%的位置*/
    float: left;  /*当然了这里float:right;也可以*/
}

.tablecell{
    display: table-cell;
    text-align: center;
}

.item{
    display: inline-block;
}

</style>
</head>

<body>
    <h1>跨浏览器实现float:center,No CSS hacks</h1>
    <div>浮动元素水平居中</div>
    <div id="macji">
        <ul class="macji-skin">
            <li>列表一,我是浮动的</li>
            <li>列表二</li>
            <li>列表三</li>
            <li>这里可能是N</li>
        </ul>

    </div>

    <div class=''>
        <div>固定宽度的块元素居中 margin:0 auto;</div>
        <div class='fixed_width'>
                
        </div>
    </div>

    <div class='nav'>
        <div class='unknown_width'>不定宽度元素居中 align center 可以对display:inline-block起作用</div>
        <div class='' style="text-align:center;">
            <div class='items'><!-- 对其中的item起作用 而不是items -->
                <div class='item'>list 1</div>
                <div class='item'>list 2</div>                    
                <div class='item'>list many</div>
            </div> 
        </div>                           
    </div>

    <div class='nav'>
        <div class='unknown_width'>不定宽度元素居中</div>
        <div class='unknown_width_wrapper'>
            <div class='unknown_width_inner'>
                <div class='items'>
                    <div class='item'>list 1</div>
                    <div class='item'>list 2</div>                    
                    <div class='item'>list many</div>
                </div>
            </div>
        </div>
    </div>

    <div class='nav'>
        <div class='unknown_width'>不定宽度元素居中 方式2</div>
        <div class='unknown_width_wrapper'>
            <div class='unknown_width_inner2'>
                <div class='items'>
                    <div class='item'>list 1</div>
                    <div class='item'>list 2</div>                    
                    <div class='item'>list many</div>
                </div>
            </div>
        </div>        
    </div>

</body>
</html>

 关于text-align

参考http://www.w3help.org/zh-cn/causes/RT8003
根据 CSS 2.1 规范中的描述,'text-align' 特性描述了一个块的行内内容的对齐方式。'text-align' 特性具备继承性,可以应用于块级元素、表格单元格及行内块级元素。
也就是说,'text-align' 可以应用到块级元素、表格单元格及行内块级元素上,但仅对它们的行内内容起作用。
但是对于IE6 IE7 IE8(Quirk mode)中 text-align可以应该该块中所有元素的排布 包括块元素

posted @ 2014-03-12 16:52  cart55free99  阅读(256)  评论(0编辑  收藏  举报