鼠标悬停时更改 css 类
你好,我试图让我的导航栏在鼠标悬停时执行 CSS 焦点效果,这样它就不会改变,直到另一个菜单项具有鼠标悬停。我正在尝试使用 Jquery 来做到这一点。
这是我的代码(顺便说一句,我导入了 jquery 脚本和我的 css 类):
<div id="topNav">
<a href="contact.html"class="topNavNormal"><div id="topNav4" class="topNavNormal">Contact Us</div></a>
<a href="about.html" class="topNavNormal"><div id="topNav3" class="topNavNormal">About Us</div></a>
<a href="services.html" class="topNavNormal"><div id="topNav2" class="topNavNormal">Services</div></a>
<a href="index.html" class="topNavActive"><div id="topNav1" class="topNavActive" style="border-left: 3px solid #c0c0c0;">Home</div></a>
<script type="text/javascript">
$(document).ready(function(){
$('#topNav1').mouseover(function(){
$('#topNav1').removeClass().addClass('topNavActive'),
$('#topNav2').removeClass().addClass('topNavNormal'),
$('#topNav3').removeClass().addClass('topNavNormal'),
$('#topNav4').removeClass().addClass('topNavNormal'),
});
}),
$('#topNav2').mouseover(function(){
$('#topNav2').removeClass().addClass('topNavActive'),
$('#topNav1').removeClass().addClass('topNavNormal'),
$('#topNav3').removeClass().addClass('topNavNormal'),
$('#topNav4').removeClass().addClass('topNavNormal'),
});
}),
$('#topNav3').mouseover(function(){
$('#topNav3').removeClass().addClass('topNavActive'),
$('#topNav1').removeClass().addClass('topNavNormal'),
$('#topNav2').removeClass().addClass('topNavNormal'),
$('#topNav4').removeClass().addClass('topNavNormal'),
});
}),
$('#topNav4').mouseover(function(){
$('#topNav4').removeClass().addClass('topNavActive'),
$('#topNav1').removeClass().addClass('topNavNormal'),
$('#topNav3').removeClass().addClass('topNavNormal'),
$('#topNav2').removeClass().addClass('topNavNormal'),
});
});
</script>
</div>
另外,这是我的 Css 类:
<style type="text/css">
#topNav1
{
text-align: center;
font-size: 18px;
float: right;
width: 50px;
height: 64px;
}
#topNav2
{
text-align: center;
font-size: 18px;
float: right;
width: 70px;
height: 64px;
}
#topNav3
{
text-align: center;
font-size: 18px;
float: right;
width: 90px;
height: 64px;
}
#topNav4
{
text-align: center;
font-size: 18px;
float: right;
width: 90px;
height: 64px;
}
#topNav1, #topNav2, #topNav3{
border-right: 1px solid #c0c0c0;
}
#topNav4{
border-right: 3px solid #c0c0c0;
}
a .topNavNormal{
line-height: 54px;
color: #42647F;
}
.topNavNormal{
background-color: #B0E0E6;
}
a .topNavActive{
line-height: 54px;
color: #00EEEE;
background-color: #5F9EA0;
}
</style>
Hi im trying to make my navigation bar do the css focus effect on mouseover so it will not change until another menu item has the mouseover. Im trying to do it using Jquery.
Here is my code(I did import the jquery script btw and my css class):
<div id="topNav">
<a href="contact.html"class="topNavNormal"><div id="topNav4" class="topNavNormal">Contact Us</div></a>
<a href="about.html" class="topNavNormal"><div id="topNav3" class="topNavNormal">About Us</div></a>
<a href="services.html" class="topNavNormal"><div id="topNav2" class="topNavNormal">Services</div></a>
<a href="index.html" class="topNavActive"><div id="topNav1" class="topNavActive" style="border-left: 3px solid #c0c0c0;">Home</div></a>
<script type="text/javascript">
$(document).ready(function(){
$('#topNav1').mouseover(function(){
$('#topNav1').removeClass().addClass('topNavActive'),
$('#topNav2').removeClass().addClass('topNavNormal'),
$('#topNav3').removeClass().addClass('topNavNormal'),
$('#topNav4').removeClass().addClass('topNavNormal'),
});
}),
$('#topNav2').mouseover(function(){
$('#topNav2').removeClass().addClass('topNavActive'),
$('#topNav1').removeClass().addClass('topNavNormal'),
$('#topNav3').removeClass().addClass('topNavNormal'),
$('#topNav4').removeClass().addClass('topNavNormal'),
});
}),
$('#topNav3').mouseover(function(){
$('#topNav3').removeClass().addClass('topNavActive'),
$('#topNav1').removeClass().addClass('topNavNormal'),
$('#topNav2').removeClass().addClass('topNavNormal'),
$('#topNav4').removeClass().addClass('topNavNormal'),
});
}),
$('#topNav4').mouseover(function(){
$('#topNav4').removeClass().addClass('topNavActive'),
$('#topNav1').removeClass().addClass('topNavNormal'),
$('#topNav3').removeClass().addClass('topNavNormal'),
$('#topNav2').removeClass().addClass('topNavNormal'),
});
});
</script>
</div>
Also Here is my Css Classes:
<style type="text/css">
#topNav1
{
text-align: center;
font-size: 18px;
float: right;
width: 50px;
height: 64px;
}
#topNav2
{
text-align: center;
font-size: 18px;
float: right;
width: 70px;
height: 64px;
}
#topNav3
{
text-align: center;
font-size: 18px;
float: right;
width: 90px;
height: 64px;
}
#topNav4
{
text-align: center;
font-size: 18px;
float: right;
width: 90px;
height: 64px;
}
#topNav1, #topNav2, #topNav3{
border-right: 1px solid #c0c0c0;
}
#topNav4{
border-right: 3px solid #c0c0c0;
}
a .topNavNormal{
line-height: 54px;
color: #42647F;
}
.topNavNormal{
background-color: #B0E0E6;
}
a .topNavActive{
line-height: 54px;
color: #00EEEE;
background-color: #5F9EA0;
}
</style>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果你不关心 IE6 - 只需使用 :hover 就像 James 建议的那样。否则简化你的代码:
如果你想模仿:焦点(但鼠标悬停):
这是你需要的吗?
If you don't care about IE6 - just use :hover like James suggeted. Otherwise simplify your code:
if you want to immitate :focus (but with mouseover):
is it what you need?
最佳实践是使用纯 CSS 来解决它(根本不使用任何 jQuery)。这是一个简单的例子:
The best practice is to solve it with pure CSS (without any jQuery at all). here's a quick example:
如果你没有在不同的地方使用它们,我会将它们合并,然后你可以使用
一个简单的 javascript,例如:
if you aren't using these in different places i'd merge them and then you can just
and a simple javascript like:
尝试这样的事情。
你必须更多地使用 $(this) 这样你就可以让你的 jQuery 更加干燥(不要重复自己)
try something like this.
You have to play with $(this) more so you can do your jQuery a little more DRY (Do not repeat yourself)
这对我有用
This Works for me
这对我有用。如果你想用 bootstrap 做一些令人兴奋的事情。试试这个:
This works for me. If you want to do something excited with bootstrap. Try this: