样式需求:
- 标记会随着鼠标的悬停快速移动到相应的导航
- 鼠标离开时会弹回到当前选中的导航
学习知识点:
- 缓动动画的应用
- offset的应用(注意点:必须在定位中才可以使用)
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上天猫</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
body {
background-color: pink;
}
#nav_box {
width: 900px;
height: 63px;
border-radius: 5px;
background: white url("images/doubleOne.png") no-repeat right center;
position: relative;
margin: 100px auto;
}
#nav_box ul {
position: relative;
}
#nav_box ul li {
float: left;
width: 88px;
height: 63px;
text-align: center;
line-height: 70px;
}
#t_mall {
width: 88px;
height: 63px;
background: url("images/tMall.png") no-repeat;
position: absolute;
}
</style>
</head>
<body>
<nav id="nav_box">
<span id="t_mall"></span>
<ul>
<li>双11狂欢</li>
<li>服装会场</li>
<li>数码家电</li>
<li>家居建材</li>
<li>母婴童装</li>
<li>手机会场</li>
<li>美妆会场</li>
<li>进口会场</li>
<li>飞猪旅行</li>
</ul>
</nav>
<script>
window.onload = function () {
function $(id) {
return typeof id === "string" ? document.getElementById(id) : null;
}
//拿到标签
var nav_box = $("nav_box");
var t_mall = $("t_mall");
var ul = nav_box.children[1];
var liList = ul.children;
//记录鼠标点击的位置
var beginX = 0;
//遍历li
for (i = 0; i < liList.length; i++) {
var li = liList[i];
//监听
li.onmouseover = function () {
end = this.offsetLeft;
};
li.onmousedown = function () {
beginX = this.offsetLeft;
};
li.onmouseout = function () {
end = beginX;
}
}
//缓动动画效果
//声明缓动起终变量
var begin = 0, end = 0;
setInterval(function () {
//缓动公式(固定公式)
begin = begin + (end - begin) * 0.1;
//设置动画对象
t_mall.style.left = begin + "px";
}, 10);
}
</script>
</body>
</html>
网友评论