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 相关文章推荐
js 巧妙去除数组中的重复项
Jan 25 Javascript
javascript中match函数的用法小结
Feb 08 Javascript
javascript中的事件代理初探
Mar 08 Javascript
js库Modernizr的介绍和使用
May 07 Javascript
实例详解AngularJS实现无限级联动菜单
Jan 15 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
jquery判断input值不为空的方法
Jun 05 Javascript
Angular多选、全选、批量选择操作实例代码
Mar 10 Javascript
angularjs中使用ng-bind-html和ng-include的实例
Apr 28 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
20个最常见的jQuery面试问题及答案
May 23 jQuery
微信小程序自定义多列选择器使用详解
Jun 21 Javascript
基于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往windows中添加用户
2006/12/06 PHP
PHP与SQL注入攻击[一]
2007/04/17 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
使用python为mysql实现restful接口
2018/01/05 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
Python 使用office365邮箱的示例
2020/10/29 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
企业形象策划方案
2014/05/29 职场文书
文员求职信
2014/07/15 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
青年教师听课心得体会
2016/01/15 职场文书
交通安全学习心得体会
2016/01/18 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server