JS+CSS实现带有碰撞缓冲效果的竖向导航条代码

 更新时间:2015年09月15日 14:59:01   作者:企鹅  
这篇文章主要介绍了JS+CSS实现带有碰撞缓冲效果的竖向导航条代码,可实现滑块弹性振动效果的导航效果,涉及jQuery数学运算及页面元素样式的动态操作技巧,需要的朋友可以参考下

本文实例讲述了JS+CSS实现带有碰撞缓冲效果的竖向导航条代码。分享给大家供大家参考。具体如下:

这是一款碰撞缓冲效果的导航条,JavaScript妙味课堂奉献给大家的作品,很不错的竖向菜单,希望大家喜欢。所用技术是JS和CSS。

运行效果截图如下:

在线演示地址如下:

http://demo.jb51.net/js/2015/js-css-pzxg-r-nav-style-codes/

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<title>碰撞缓冲效果的导航条</title>
<style type="text/css">
* { padding: 0; margin: 0; }
li { list-style: none; }
body { background: #fff; }
ul { width: 202px; margin: 40px auto 0; position: relative; }
li { width: 200px; height: 30px; line-height: 30px; padding-left: 10px; border: 1px solid #ccc; border-left: 3px solid #666; font-size: 14px; color: #333; margin-bottom: 5px; position: relative; z-index: 2; }
a { color: #333; text-decoration: none; }
.active { font-weight: bold; background: #fff0f0; }
#bar { width: 10px; padding-left: 0; background: #cc6699; border: 1px solid #cc6699; position: absolute; top: 0; left: -14px; z-index: 3; }
</style>
<script>
var obj = null;
var aLis = null;
var oBar = null;
var iTime = null;
var iSpeed = 0;
var iAcc = 3;
var onOff = 0;
var iPrev = 0;
var iNext = 0;
function goTime()
{
 for(var i = 0; i < aLis.length; i+=1)
 {
  if(aLis[i] === this)
  {
   var iTarget = (aLis[0].offsetHeight + 5) * i;
   iNext = i;
   onOff = iNext - iPrev;
   if(iTime)
   {
    clearInterval(iTime);
   }
   if(onOff>=0)
   {
    iTime = setInterval("elasticity("+ iTarget +")",35);
   }
   else
   {
    iTime = setInterval("postpone("+ iTarget +")",35);
   }
   iPrev = iNext;
  }
  aLis[i].className="";
  this.className="active";
 }
}
function elasticity(target)
{
 var top = oBar.offsetTop;
 iSpeed+=iAcc;
 top += iSpeed;
 if(top >= target)
 {
  iSpeed*=-0.7;
  if(Math.abs(iSpeed)<=iAcc)
  {
   clearInterval(iTime);
   iTime=null;
  }
  top=target;
 }
 oBar.style.top = top + "px";
}
function postpone(target)
{
 if(oBar.offsetTop===target)
 {
  clearInterval(iTime);
  iTime=null;
 }
 else
 {
  iSpeed = (target - oBar.offsetTop)/4;
  oBar.style.top = oBar.offsetTop + iSpeed + "px";
 }
}
window.onload = function(){
 obj = document.getElementById("nav");
 aLis = obj.getElementsByTagName("li");
 oBar = document.getElementById("bar");
 for(var i = 0; i < aLis.length; i+=1)
 {
  if(aLis[i].id!="bar")
  {
   aLis[i].onmouseover = goTime;
  }
 }
};
</script>
</head>
<body>
<ul id="nav">
 <li class="active"><a href="#">首页</a></li>
 <li><a href="#">脚本之家</a></li>
 <li><a href="#">妙味课程</a></li>
 <li><a href="#">联系方式</a></li>
 <li id="bar">
</ul>
</body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

相关文章

  • 基于canvasJS在PHP中制作动态图表

    基于canvasJS在PHP中制作动态图表

    这篇文章主要介绍了基于canvasJS在PHP中制作动态图表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • js控制滚动条缓慢滚动到顶部实现代码

    js控制滚动条缓慢滚动到顶部实现代码

    滚动条缓慢滚动到顶部这样的效果想必大家在浏览网页的时候都有见过吧,本文使用js实现下,感兴趣的你可不要错过了哈,希望可以帮助到你
    2013-03-03
  • jQuery javascript获得网页的高度与宽度的实现代码

    jQuery javascript获得网页的高度与宽度的实现代码

    下面小编就为大家带来一篇jQuery javascript获得网页的高度与宽度的实现代码。小编觉得挺不错的,现在分享给大家,也给大家做个参考
    2016-04-04
  • JavaScript 函数replace深入了解

    JavaScript 函数replace深入了解

    在JavaScript中replace函数作为字符串替换函数,这是一个威力强大的字符串操作函数,对于常见字符串操作的推荐用法。这篇随笔就来更加深入的理解它。
    2013-03-03
  • javascript同步服务器时间和同步倒计时小技巧

    javascript同步服务器时间和同步倒计时小技巧

    本文给出如何在页面上同步显示服务器时间的解决方案,能够实现同步服务器时间、同步倒计时,却不占用服务器太多资源,下面我给写出实现的思路
    2015-09-09
  • 详解JavaScript调用栈、尾递归和手动优化

    详解JavaScript调用栈、尾递归和手动优化

    本篇文章主要介绍了详解JavaScript调用栈、尾递归和手动优化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • uni-app实现web-view图片长按下载解决方案

    uni-app实现web-view图片长按下载解决方案

    uniapp的web-view中图片无法长按保存,IOS下是正常的,但是Android下长按无反应,这篇文章主要介绍了uni-app实现web-view图片长按下载解决方案,需要的朋友可以参考下
    2023-09-09
  • 不使用浏览器运行javascript代码的方法

    不使用浏览器运行javascript代码的方法

    用js写一段小程序,但是又觉得使用浏览器去运行挺麻烦的,下面为大家介绍下如何使用java程序调用javascript程序,有类似需求的朋友可以参考下哈,希望对大家有所帮助
    2013-07-07
  • H5上传本地图片并预览功能

    H5上传本地图片并预览功能

    这篇文章主要为大家详细介绍了H5上传本地图片并预览的实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • JS操作xml对象转换为Json对象示例

    JS操作xml对象转换为Json对象示例

    本篇文章主要介绍了JS操作xml对象转换为Json对象示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03

最新评论