刚写了一个导航栏的效果。为达到的效果是这样的:
当鼠标放在jQuery上面时,Python上方的棕色滑块会滑动到jQuery上方,当鼠标离开导航栏时,滑块重新回到Python上方。
HTML :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>导航栏滑块随鼠标移动</title>
<link rel="stylesheet" href="css/jQuery2.css">
<script src="js/jquery-2.1.3.min.js"></script>
<script src="js/jQuery2.js"></script>
</head>
<body>
<br><br>
<span>_____________________________________________</span>
<!--设置一个滑块-->
<div class="line"></div>
<!--导航栏-->
<div class="header">
<!--4个li-->
<ul>
<li><a href="#">Bootstarp</a></li>
<li id="mark"><a href="#">Python</a></li>
<li><a href="#">jQuery</a></li>
<li><a href="#">Angular</a></li>
</ul>
</div>
</body>
</html>
CSS:
.header{
width: 100%;
height: 40px;
margin: 0 auto;
padding: 0 auto;
}
.line{
margin: 0;
padding: 0;
width: 100px;
height: 5px;
background-color: brown;
display: block;
position:relative;
}
body{
margin: 0 auto;
}
ul,li{
font-feature-settings: normal;
margin: 0;
padding: 0;
list-style: none;
line-height: 40px;
float: left;
}
li{
width:100px;
text-align: center;
background-color: white;
}
a{
font-family: tahoma,Arial;
text-decoration: none;
color: black;
}
jQuery :
/**
* Created by ASUS-PC on 2015/9/22.
*/
$(document).ready(function() {
//把id="mark"的<li>赋值给常量
var line_reset = $("#mark");
//将滑块的初始位置定在id="mark"的上方
$(".line").css("left",line_reset.position().left);
//当鼠标放在<li>上时
$("li").mouseenter(function () {
//鼠标样式变为pointer
$(this).css("cursor", "pointer");
//滑块 正在做的所有事情停止(这个是为了保证滑块移动的连贯效果,删去后试下就知道为什么要加了)
$(".line").stop();
//滑块 正在做的所有事情停止之后,向鼠标所指的<li>上方移动
$(".line").animate({left: $(this).position().left +'px'},350);
});
//当鼠标离开<li>时
$("li").mouseleave(function(){
////滑块 正在做的所有事情停止
$(".line").stop();
//滑块 回到id="mark"的标签上
$(".line").animate({left: line_reset.position().left + 'px' },250);
});
}
);
主要是stop()函数和animate()自定义动画函数。。