1.筋斗云一个很典型的案例分析,重要的是中间采用了一个变量,来存储点击时候的的li的位置,每次鼠标移动返回到原来点击的位置,而不是每次都回到0 的位置。
<!DOCTYPE html>
<html lang="CH-zn">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>精斗云案例 </title>
<style type="text/css">
* {
margin: 0;
padding: 0
}
ul {
list-style: none;
}
body {
background-color: black;
}
.c-nav {
width: 900px;
height: 42px;
background: #fff url(images/rss.png) no-repeat right center;
margin: 100px auto;
border-radius: 5px;
position: relative;
}
.c-nav ul {
position: absolute;
}
.c-nav li {
float: left;
width: 83px;
text-align: center;
line-height: 42px;
}
.c-nav li a {
color: #333;
text-decoration: none;
display: inline-block;
height: 42px;
}
.c-nav li a:hover {
color: white;
}
.cloud {
position: absolute;
left: 0;
top: 0;
width: 83px;
height: 42px;
background: url(cloud.gif) no-repeat;
}
</style>
<script src="animate.js"></script>
</head>
<script type="text/javascript">
// 写在上面需要加wind 事件
window.addEventListener('load',function(){
//1.获取元素
var cloud = document.querySelector('.cloud');
var c_nav = document.querySelector('.c-nav');
var lis =document.querySelectorAll('li');
//2.给所有的li 绑定事件
var current = 0 ; // 作为起始位置
for (let index = 0; index < lis.length; index++) {
lis[index].addEventListener('mouseenter',function(){
// 目标位置是 这li的左边距离
animate( cloud,this.offsetLeft )
})
// 鼠标离开的时候--回到起始位置
lis[index].addEventListener('mouseleave',function(){
// 目标位置是 这li的左边距离
animate( cloud,current )
})
// 鼠标点击
lis[index].addEventListener('click',function(){
// 点击的时候,起始胃就就是现在的点击的位置。
current = this.offsetLeft ; // 下一次就从起始位置开始计算
})
}
})
</script>
</head>
<body>
<div id="c_nav" class="c-nav">
<span class="cloud"></span>
<ul>
<li><a href="#">首页新闻</a></li>
<li><a href="#">师资力量</a></li>
<li><a href="#">活动策划</a></li>
<li><a href="#">企业文化</a></li>
<li><a href="#">招聘信息</a></li>
<li><a href="#">公司简介</a></li>
<li><a href="#">我是佩奇</a></li>
<li><a href="#">啥是佩奇</a></li>
</ul>
</div>
</body>
</html>