使用缓动动画函数实现导航栏效果
2017-02-22 16:02
567 查看
需求:
1.鼠标在那个li上面,span对应移动到该li上,移开后,回到原位置
2.鼠标点击那个li就记录该li标签,移开的时候span回到该记录的li标签上
要点:
1.封装匀速函数
2.计数器思想
代码实现:
效果图:
1.鼠标在那个li上面,span对应移动到该li上,移开后,回到原位置
2.鼠标点击那个li就记录该li标签,移开的时候span回到该记录的li标签上
要点:
1.封装匀速函数
2.计数器思想
代码实现:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { padding:0; margin:0; } body { background-color: rgba(0,0,0,0.8); } div { width: 800px; height: 42px; background: #fff; margin:200px auto; position: relative; } ul { list-style: none; position: relative; } li{ width: 83px; height: 42px; font:500 16px/42px "simsun"; float: left; text-align: center; cursor: pointer; } span { left:0; top:0; width: 83px; height: 42px; position: absolute; border-bottom: 3px solid red; } </style> </head> <body> <div> <span></span> <ul> <li>测试文字1</li> <li>测试文字2</li> <li>测试文字3</li> <li>测试文字4</li> <li>测试文字5</li> <li>测试文字6</li> <li>测试文字7</li> </ul> </div> </body> <script> var span = document.getElementsByTagName("span")[0]; var liArr = document.getElementsByTagName("li"); var liWidth = liArr[0].offsetWidth; var count = 0 ; for(var i=0;i<liArr.length;i++){ liArr[i].index = i ; liArr[i].onmouseover = function(){ animate(span,this.index * liWidth); console.log(1); }; liArr[i].onmouseout = function(){ animate(span,count * liWidth); } liArr[i].onclick = function(){ count = this.index ; animate(span,count * liWidth); } } function animate(ele,target){ clearInterval(ele.timer); ele.timer = setInterval(function(){ var step = (target - ele.offsetLeft)/10; step = step > 0 ? Math.ceil(step):Math.floor(step); ele.style.left = ele.offsetLeft + step + "px"; if(Math.abs(target-ele.offsetLeft) <= Math.abs(step)){ ele.style.left = target + "px"; clearInterval(ele.timer); } },10) } </script> </html>
效果图:
相关文章推荐
- window.requestAnimationFrame与Tween.js配合使用实现动画缓动效果
- js实现带缓动动画的导航栏效果
- 不使用JS,使用CSS3 target 以及 动画效果实现,点击一下弹出,并且保持弹出状态,然后再点击一下弹回的导航栏(或者可以叫做按钮)
- IOS 动画设计(5)——用缓动函数实现物理动画效果
- iOS基本动画/关键帧动画/利用缓动函数实现物理动画效果
- iOS 基本动画、关键帧动画、利用缓动函数实现物理动画效果
- 使用silverlight中的Storyboard实现动画效果
- android Tween Animations(动画效果-XML文件实现)的使用
- 使用C#实现WinForm窗体的动画效果
- 使用HTML5和jQuery插件Reel实现一个超酷的星际争霸2兵种动画360度预览效果
- 使用Layer类和Sprite类实现手机游戏的动画效果
- android Tween Animations(动画效果-代码实现)的使用
- 用AnimateWindow函数实现窗口动画效果
- 使用C#实现WinForm窗体的动画效果
- cocos2d-x 使用action实现各种动画效果
- VC:用AnimateWindow函数实现窗口动画效果
- 使用jQuery来实现菜单文字和图标动画效果
- 用AnimateWindow函数实现窗口动画效果
- 使用silverlight中的Storyboard实现动画效果
- AnimateWindow函数实现窗口动画效果