我的垂直文本对齐中间不起作用

时间:2013-08-26 14:44:16

标签: html css css3

我的代码有问题。我需要将文本垂直居中放在每个框的中间。

#navcontainer {
    padding: 0 5 20px 10px;
}
ul#navlist {
    font-family: sans-serif;
}
ul#navlist a {
    font-weight: bold;
    text-decoration: none;
    display: inline-block;
    line-height:20px vertical-align: middle;
}
ul#navlist, ul#navlist ul, ul#navlist li {
    margin: 0 8px;
    padding: 0px;
    list-style-type: none;
    box-shadow: 8px 8px 12px #aaa;
}
ul#navlist li {
    float: left;
}
ul#navlist li a {
    color: #ffffff;
    background-color: #EF634A;
    //padding:10px;
    padding: 10px 5px 10px 5px;
    border: 1px #ffffff outset;
    height: 40px;
}
ul#navlist li a:hover {
    color: #ffff00;
    background-color: #003366;
}
ul#navlist li a:active {
    color: #cccccc;
    background-color: #003366;
    border: 1px #ffffff inset;
}
ul#subnavlist {
    display: none;
}
ul#subnavlist li {
    float: none;
}
ul#subnavlist li a {
    padding: 0px;
    margin: 0px;
    height: 20px;
}
ul#navlist li:hover ul#subnavlist {
    display: block;
    //display: inline-block;
    //display: table-cell;
    position: absolute;
    font-size: 8pt;
    padding-top: 5px;
}
ul#navlist li:hover ul#subnavlist li a {
    display: block;
    width : 260;
    height : 100;
    border: none;
    padding: 2px;
}
ul#navlist li:hover ul#subnavlist li a:before {
    content:" >> ";
}

<div id="navcontainer">
    <ul id="navlist">
        <li><a href="obs-geostrategique-sport.php?cat=1">PROGRAMME EUROPÉEN DE LUTTE <br/>CONTRE LE TRUCAGE DE MATCHS</a>
        </li>
        <li><a href="obs-geostrategique-sport.php?cat=2">ACTUALITÉS SPORTIVES</a>
        </li>
        <li><a href="obs-geostrategique-sport.php?cat=3">COMMUNIQUÉS</a>
        </li>
        <li id="active"><a href="obs-geostrategique-sport.php?cat=4" id="current">THEMATIQUES</a> 
            <ul id="subnavlist">
                <li id="subactive"><a href="#" id="subcurrent">Lutte contre la corruption</a>
                </li>
                <li><a href="obs-geostrategique-sport.php?cat=4&id=1">Evènements sportifs </a>
                </li>
                <li><a href="obs-geostrategique-sport.php?cat=4&id=2">Bonne gouvernance du sport</a>
                </li>
                <li><a href="obs-geostrategique-sport.php?cat=4&id=3">Economie du sport</a>
                </li>
                <li><a href="obs-geostrategique-sport.php?cat=4&id=4">Lutte contre le dopage</a>
                </li>
                <li><a href="obs-geostrategique-sport.php?cat=4&id=5">Lutte pour l'intégrité dans le sport</a>
                </li>
            </ul>
        </li>
    </ul>
</div>

这里是小提琴http://jsfiddle.net/R8S7q/

2 个答案:

答案 0 :(得分:1)

确保所有链接均为display: block; width: 100%; height: 100%;,以便填充父元素。确保父元素也有width: 100%; height: 100%;,以便它们正确展开。

要使文字居中,请参阅此问题:CSS Center text (Horizontal and Vertical) inside a DIV block

答案 1 :(得分:1)

1)使用li上的行高来居中,然后在锚点上将其恢复为正常(以处理多行文字)

2)将填充/悬停类放在li元素上而不是锚点上。

<强> FIDDLE

   ul#navlist li
   {
    padding: 10px 5px 10px 5px;
    background-color: #EF634A;
   }
   ul#navlist > li
   {
    height:62px; /* <----  */
    line-height:62px; /* <----  */
   }
    ul#navlist li:hover
    {
        color: #ffff00;
        background-color: #003366;
    }
    ul#navlist a
    {
    font-weight: bold;
    text-decoration: none;
    display: inline-block;
    line-height:normal; /* <----  */
    vertical-align: middle; /* <----  */
    }