最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript实现精美个性导航栏筋斗云效果

来源:动视网 责编:小采 时间:2020-11-27 22:26:37
文档

JavaScript实现精美个性导航栏筋斗云效果

JavaScript实现精美个性导航栏筋斗云效果:实现效果: 实现效果如下图所示 实现原理: 什么是筋斗云效果: •这个效果很简单,就是鼠标移到其他导航目录时会有背景图片跟着鼠标滑动到当前的目录。 实现思路: •鼠标经过的时候,利用offsetLeft获得当前盒子距离左侧的距离,把这个值赋给缓
推荐度:
导读JavaScript实现精美个性导航栏筋斗云效果:实现效果: 实现效果如下图所示 实现原理: 什么是筋斗云效果: •这个效果很简单,就是鼠标移到其他导航目录时会有背景图片跟着鼠标滑动到当前的目录。 实现思路: •鼠标经过的时候,利用offsetLeft获得当前盒子距离左侧的距离,把这个值赋给缓


实现效果:

  实现效果如下图所示

实现原理:

什么是筋斗云效果:

•这个效果很简单,就是鼠标移到其他导航目录时会有背景图片跟着鼠标滑动到当前的目录。

实现思路:

•鼠标经过的时候,利用offsetLeft获得当前盒子距离左侧的距离,把这个值赋给缓动动画的end值。
•当点击的时候记住当前的offsetLeft值,当鼠标经过的时候把之前点击的offsetLeft给现在经过时候的值。

实现代码:

  下面是实现代码以及详细注释,核心设置一个position为absolute的span标签,通过绑定鼠标事件,用封装好的animate动画实现span的“筋斗云”效果。

<!DOCTYPE html>
<html>
<head>
 <title>导航栏筋斗云效果</title>
 <meta charset="utf-8">
 <style type="text/css">
 *{
 padding: 0;
 margin: 0;
 }
 body{
 background-color: rgba(0, 0, 0, 0.6);
 }
 .box{
 width: 415px;
 height: 42px;
 margin: 200px auto;
 background-color: #fff;
 position: relative;
 }
 ul{
 list-style: none;
 position: relative;
 }
 li{
 float: left;
 width: 83px;
 height: 42px;
 text-align: center;
 font: 500 15px/42px "微软雅黑";
 cursor: pointer;
 }
 span{
 position: absolute;
 left: 0;
 top: 0;
 width: 83px;
 height: 42px;
 background-image: linear-gradient(to right,#03c03c 50% ,#51ee5d 100%);
 }
 </style>
</head>
<body>
<div class="box">
 <span></span>
 <ul>
 <li>菜单栏1</li>
 <li>菜单栏2</li>
 <li>菜单栏3</li>
 <li>菜单栏4</li>
 <li>菜单栏5</li>
 </ul>
</div>
<script type="text/javascript">
 window.onload = function(){
 // 鼠标放在哪个li上面,span对应一道到哪里,移开后回到原位置
 var liArr = document.getElementsByTagName("li");
 var liWidth = liArr[0].offsetWidth;
 var span = document.getElementsByTagName("span")[0];
 // 计数器
 var cnt = 0;
 // for循环绑定事件
 for(var i=0; i<liArr.length; i++){
 // 自定义属性,然后绑定index属性为索引值
 liArr[i].index = i;
 // 鼠标进入事件
 liArr[i].onmouseover = function(){
 // 然span运动到该li的索引值位置
 animate(span, this.index*liWidth);
 }
 // 鼠标移开
 liArr[i].onmouseout = function(){
 // span运动到原位置
 animate(span, cnt*liWidth);
 }
 // 点击事件
 liArr[i].onclick = function(){
 // 计数器记录当前标签索引值
 cnt = this.index;
 animate(span, cnt*liWidth);
 }
 }
 // 缓动动画封装
 function animate(element, target){
 // 清除间歇调用
 clearInterval(element.timer);
 // 设置超时调用
 element.timer = setInterval(function(){
 // 设置步数
 var step = (target - element.offsetLeft)/10;
 // 调整步数
 step = step > 0 ? Math.ceil(step) : Math.floor(step);
 // 设置样式
 element.style.left = element.offsetLeft + step + "px";
 // console.log(1);
 if(Math.abs(target - element.offsetLeft) < Math.abs(step)){
 element.style.left = target + "px";
 clearInterval(element.timer);
 }
 }, 20);
 }
 }
</script>
</body>
</html> 

总结

以上所述是小编给大家介绍的JavaScript实现精美个性导航栏筋斗云效果,希望对大家有所帮助!

文档

JavaScript实现精美个性导航栏筋斗云效果

JavaScript实现精美个性导航栏筋斗云效果:实现效果: 实现效果如下图所示 实现原理: 什么是筋斗云效果: •这个效果很简单,就是鼠标移到其他导航目录时会有背景图片跟着鼠标滑动到当前的目录。 实现思路: •鼠标经过的时候,利用offsetLeft获得当前盒子距离左侧的距离,把这个值赋给缓
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top