我正在尝试为 HTML 模板构建导航栏。
导航栏在具有“drop”类的链接的右侧有一个箭头。jQuery 有一行代码,如果它有“drop”类,那么它addClass
用来添加一个背景箭头,当链接没有悬停时,它会停留在那里。现在看代码:
HTML:
<nav>
<a href="index.html" class="first">Home</a>
<a href="about.html" class="drop">About Us</a>
<a href="javascript:void(0);" class="drop">Other</a>
<a href="portfolio.html">Portfolio</a>
<a href="http://forcefire.us/">Web Hosting</a>
<a href="contact.html">Contact Us</a>
<a href="javascript:void(0);" class="last"> </a>
</nav>
CSS:
nav {
background: #333;
border-radius: 6px;
border-top: 1px solid #222;
border-bottom: 1px solid #444;
}
nav a {
padding: 15px 15px;
display: inline-block;
color: #888;
font: bold 14px Sansation;
font-weight: bold;
text-decoration: none;
margin: 0 -4px 0 0;
border-left: 1px solid #444;
border-right: 1px solid #222;
}
nav a:hover {
background: #444;
background-image: linear-gradient(bottom, rgb(68,68,68) 0%, rgb(85,85,85) 100%);
background-image: -o-linear-gradient(bottom, rgb(68,68,68) 0%, rgb(85,85,85) 100%);
background-image: -moz-linear-gradient(bottom, rgb(68,68,68) 0%, rgb(85,85,85) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(68,68,68) 0%, rgb(85,85,85) 100%);
background-image: -ms-linear-gradient(bottom, rgb(68,68,68) 0%, rgb(85,85,85) 100%);
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, rgb(68,68,68)), color-stop(1, rgb(85,85,85)));
}
nav .drop {
padding-right: 20px;
}
nav .drop-d {
background: url(../images/nad.png) no-repeat;
background-position: 94% 50%;
}
nav .drop-u {
background: url(../images/nau.png) no-repeat;
background-position: 94% 50%;
}
jQuery:
$(document).ready(function() {
// Navigation Script
$('nav .drop').addClass('drop-d');
$('nav .drop').hover(
function() {
$(this).removeClass('drop-d').addClass('drop-u');
}, function () {
$(this).removeClass('drop-u').addClass('drop-d');
}
);
});
现在,仅添加类 'drop-d' 的第一行显示了箭头。但这不是问题。
该.hover()
函数删除类'drop-d',但它不会在悬停时添加类'drop-u'。关闭悬停(它是否删除了“drop-u”类,我不知道),但它再次添加了“drop-d”类。
如果很明显,我很抱歉,但已经晚了。无论如何,除了在 CSS 中永久添加类然后在悬停时删除它等等之外,有什么问题以及更好的编写方法是什么?