匹配导航按钮与标题背景

时间:2012-10-17 12:50:04

标签: html css html5

我在标题中有一个导航,标题从左到右有一个渐变。 导航栏有另一个背景。 导航按钮需要与该位置的标题背景相同。

<header>
    <nav>
        <ul>
            <li>button1</li>
            <li>button2</li>
            <li>button3</li>
        </ul>
    </nav>
</header>
  1. 标题得到了渐变。
  2. Nav有一种颜色。
  3. Li需要与同一个地方的标题背景相同。

3 个答案:

答案 0 :(得分:3)

您可以使整个导航透明,并在列表元素上使用实线边框。

demo

您可以在按钮上使用此border-radius或使用标题的动画背景。

基本理念

假设您有一个标头结构,如:

<header>
    <nav>
        <ul>
            <li><a href=''>Products</a></li>
            <li><a href=''>Services</a></li>
            <li><a href=''>Technologies</a></li>
            <li><a href=''>Contact</a></li>
        </ul>
    </nav>
</header>
  • 你给标题一个特定的背景(CSS渐变,图像, 无论如何)并确保其子女都没有背景。
  • 您可以将navulli的填充和边距设置为0
  • 您在li元素上设置了宽大的实线边框,您就完成了。您 然后可以调整一下(参见演示)。

答案 1 :(得分:0)

单独在代码中无法“穿透”标题背景渐变。你必须通过以下任何一种方式伪造它:

a)在<li>中精心重建渐变,使其与标题的背景对齐。如果你走这条路,你应该有<li>的固定宽度。

b)为<nav>创建一个纯色的背景图像,但是打出了孔,这样你就可以看到它背后的渐变。

答案 2 :(得分:0)

我想你可以使用与li上的标题相同的图像,但是将其偏移以匹配每个li相对于标题的位置。

当然这需要一些客户端脚本,并且不会是纯粹的css,你还没有说明这是否是一个可接受的解决方案,所以我投入了2美分。

干杯

编辑:

这是一个小概念证明:

HTML:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="style.css">
        <script src="jquery-1.8.2.min.js"></script>
        <script type="text/javascript" src="offset.js"></script>
    </head>

    <body>
        <header>
            <nav>
                <ul>
                    <li>ALLO</li>
                    <li>ALLO</li>
                    <li>ALLO</li>
                    <li>ALLO</li>
                </ul>
            </nav>
        </header>   
    </body>

</html>

CSS:

header {
    background-image: url("gradient.png");
    height: 80px;
    position: relative;
    padding-top: 20px;
}

nav {
    position: relative;
    padding-top: 10px;
    background-image: url("navbg.jpg");
    background-position: 0px 10px;
    background-repeat: repeat-x;
    height: 100px;
}

li {
    width: 100px;
    height: 40px;
    float: left;
    list-style: none;
    background-image: url("gradient.png");
    background-repeat: no-repeat;
    background-position: 0px 0px; 
    background-origin: content-box;
}

Javascript(在文件offset.js中):

$(document).ready(function(){
    var elems = $("li");
    $.each(elems, function(index, elem){
        var li = $(elem);
        var pos = li.position();
        var posString = -pos.left.toString() + "px " + -pos.top.toString() + "px"
        li.css("backgroundPosition", posString);

    });

});

适用于Chrome,FF和IE9

希望这有帮助