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 相关文章推荐
javascript中in运算符用法分析
Apr 28 Javascript
javascript检测两个数组是否相似
May 19 Javascript
jQuery实现固定在网页顶部的菜单效果代码
Sep 02 Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 Javascript
jQuery常见的选择器及用法介绍
Dec 20 Javascript
Javascript实现登录记住用户名和密码功能
Mar 22 Javascript
Angular利用trackBy提升性能的方法
Jan 26 Javascript
微信小程序实现自定义modal弹窗封装的方法
Jun 15 Javascript
vue中实现Monaco Editor自定义提示功能
Jul 05 Javascript
js实现简单掷骰子小游戏
Oct 24 Javascript
OpenLayer3自定义测量控件MeasureTool
Sep 28 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
一个ftp类(ini.php)
2006/10/09 PHP
PHP网站基础优化方法小结
2008/09/29 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
2016/10/13 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python中的pack和unpack的使用
2018/03/12 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python类中super() 的使用解析
2019/12/19 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
MySQL面试题
2014/01/12 面试题
企业授权委托书范本
2014/09/22 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
JavaScript实现栈结构详细过程
2021/12/06 Javascript
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers
Python sklearn分类决策树方法详解
2022/09/23 Python