jquery css 主菜单样式的跳转

想要实现的效果其实是挺常见的那种:网页的主菜单一开始有一种默认的样式(如A样式),当鼠标经过某一菜单项时,此菜单项会套用一种样式(如B样式),当鼠标点击某一菜单项时,当前菜单项会套用B样式,其余菜单项会去掉B样式而套用默认的A样式。经过尝试,写出了比较简单的代码,存下来,以备后用。

html代码:

 <div id="menuBar">
    	<ul>
            <li>Home</li>
            <li>Download</li>
            <li>Documentation</li>
            <li>Community</li>
            <li>Success Stories</li>
            <li>News</li> 
            <li>Events</li>
            <li>About</li>       
        </ul>
    </div>

css代码:

#menuBar
{
	clear:both;
	width:1200px;
	margin:0 auto;
	color:#efefef;
	font-family:Arial;
	font-size:18px;
}
#menuBar ul
{
	list-style:none;
	height:55px;
	margin:0px;
	padding:0px;
}

.beforeClick
{
	float:left;
	width:150px;
	text-align:center;
	line-height:55px;
	height:55px;
	background-image:url(Welcome%20to%20Python.org_files/20141021190636.png);
	background-repeat:repeat-x;
	margin-top:10px;
}
.beforeClick:hover
{	
	background-color:3776ab;
	border:1px solid #aaa;
	height:53px;
	line-height:53px;
	width:148px;
	background-image:none;
	cursor:pointer;
}

.clickedMenu
{
	background-color:3776ab;
	border:1px solid #aaa;
	height:53px;
	line-height:53px;
	width:148px;
	background-image:none;
	cursor:pointer;
	}

js代码:

<script>
$(function(){
	$("#menuBar ul li").each(function() {
        $(this).addClass("beforeClick"); // 最开始,让所有节点都加上beforeClick样式
    });
	});
	
$(function(){
	$("#menuBar ul li").each(function(i) {
		$(this).click(function(){
			$(this).siblings("li").removeClass("clickedMenu"); //让其余兄弟节点去掉clickedMenu样式,即点击后的菜单样式
			$(this).siblings("li").addClass("beforeClick"); // 再让其余兄弟节点添加上点击前的样式beforeClick
			$(this).addClass("clickedMenu");// 给当前节点添加上clickedMenu样式。
			})
		});
	})
</script>

效果图:

1、初始状态:

2、鼠标经过某一菜单项时的状态:

3、鼠标点击某一菜单后,并且鼠标经过其它菜单项时的状态:

3、当再次点击其它菜单时,样式继续发生变化:


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。