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


Posted in Javascript onSeptember 15, 2015

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

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

运行效果截图如下:

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

在线演示地址如下:

具体代码如下:

<!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程序设计有所帮助。

Javascript 相关文章推荐
jQuery prev ~ siblings选择器使用介绍
Aug 09 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
JS对象转换为Jquery对象示例
Jan 26 Javascript
JavaScript的arguments对象应用示例
Sep 15 Javascript
jquery结婚电子请柬特效源码分享
Aug 21 Javascript
Javascript 实现简单计算器实例代码
Oct 23 Javascript
IE8兼容Jquery.validate.js的问题
Dec 01 Javascript
jQuery.parseHTML() 函数详解
Jan 09 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
Aug 17 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
Javascript 编码约定(编码规范)
Mar 11 Javascript
jQuery实现移动端图片上传预览组件的方法分析
May 01 jQuery
基于jQuery倾斜打开侧边栏菜单特效代码
Sep 15 #Javascript
基于jQuery滑动杆实现购买日期选择效果
Sep 15 #Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 #Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 #Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
Sep 15 #Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
Sep 15 #Javascript
JS实现仿FLASH效果的竖排导航代码
Sep 15 #Javascript
You might like
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
Laravel下生成验证码的类
2017/11/15 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
js Date概念详细介绍
2013/11/22 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
详解Golang 与python中的字符串反转
2017/07/21 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
python之随机数函数的实现示例
2020/12/30 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
财务分析个人的自荐书范文
2013/11/24 职场文书
企业金融服务方案
2014/06/03 职场文书
农民工讨薪标语
2014/06/26 职场文书
圣诞节开幕词
2015/01/29 职场文书
七个Python必备的GUI库
2021/04/27 Python
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python