我在标题中有一个导航,标题从左到右有一个渐变。 导航栏有另一个背景。 导航按钮需要与该位置的标题背景相同。
<header>
<nav>
<ul>
<li>button1</li>
<li>button2</li>
<li>button3</li>
</ul>
</nav>
</header>
答案 0 :(得分:3)
您可以使整个导航透明,并在列表元素上使用实线边框。
您可以在按钮上使用此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>
nav
,ul
和li
的填充和边距设置为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
希望这有帮助