我在标题中有一个导航,标题从左到右有一个渐变。导航栏有另一个背景。导航按钮需要与该位置的标题背景相同。
<header>
<nav>
<ul>
<li>button1</li>
<li>button2</li>
<li>button3</li>
</ul>
</nav>
</header>
- 标题有渐变。
- 导航有一种颜色。
- li需要和header背景在同一个地方。
您可以使整个导航透明并在列表元素上使用实心边框。
您可以将其与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
,你就完成了。然后您可以调整它(参见演示)。我在想你也许可以使用与 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
希望这可以帮助
仅在代码中无法“穿透”到标题背景渐变。您将不得不通过以下任一方式伪造它:
a) 煞费苦心地重新创建 's 中的渐变<li>
,使其与标题的背景对齐。<li>
如果你走这条路,你应该有固定的宽度。
<nav>
b)为纯色创建一个背景图像,但打了孔,以便您可以看到它后面的渐变。