我认为您要实现的目标必须使用 Javascript 来完成……只是为了确保我知道您在问什么:
- 您有一个栏,当您将鼠标悬停在导航中的链接上时,它会动画到活动锚点,并且与锚点大小相同。
这是我创建的小提琴,以展示我认为您要问的内容:
http://jsfiddle.net/Dm9Eu/2/
如果您在访问Fully Illustrated 时查看浏览器的Web 检查器,您会看到导航有一个gutter 元素,其中包含一个span#highlight,它是包含锚点的导航ul 的整个宽度。
当您将鼠标悬停在锚点上时,span#highlight 的左侧位置会发生变化。
您可以使用 javascript 设置一个函数,在悬停时获取锚点的左侧位置,在 span#highlight 上设置该位置并使用 css3 您可以将转换设置为“左”,它应该模拟您想要的效果。
HTML:
<div id="header">
<ul id="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Portfolio</a></li>
</ul>
<div id="gutter">
<span id="highlight"></span>
</div>
</div>
CSS:
#header {
position: relative;
}
#menu {
width: 100%;
height: 120px;
background: #181818;
list-style: none;
margin: 0;
padding: 0;
}
#menu li {
margin: 0;
padding: 0;
float: left;
}
#menu li a {
color: #FFF;
margin: 0;
padding: 50px;
display: block;
}
#highlight {
position: absolute;
top: 0;
left: 0;
height: 5px;
background: #f00;
transition: all .5s;
}
JS:
var doc = 文档;
var anchors = doc.getElementById('menu').getElementsByTagName('a');
var highlight = doc.getElementById('highlight');
for(var i = 0, len = anchors.length; i < len; i++) {
anchors[i].addEventListener('mouseover', function(e) {
var target = e.target;
highlight.style.width = target.offsetWidth + 'px';
highlight.style.left = target.offsetLeft + 'px';
});
anchors[i].addEventListener('mouseout', function(e) {
var target = e.target;
var storeNeg = '-' + highlight.style.width;
console.log(storeNeg);
highlight.style.left = storeNeg;
});
}
只是一些注意事项:
希望能帮助/回答您的问题!