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+CSS 半开折叠效果原理及代码(自写)
Mar 04 Javascript
jquery获得option的值和对option进行操作
Dec 13 Javascript
jQuery动态创建html元素的常用方法汇总
Sep 05 Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
Aug 26 Javascript
Bootstrap导航条的使用和理解3
Dec 14 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
vue+element的表格实现批量删除功能示例代码
Aug 17 Javascript
js字符串倒序的实例代码
Nov 30 Javascript
vue+element tabs选项卡分页效果
Jun 29 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
基于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封装的多文件上传类实例与用法详解
2017/02/07 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
html下载本地
2006/06/19 Javascript
用JavaScript调用WebService的示例
2008/04/07 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
简单了解Python生成器是什么
2019/07/02 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
深入了解Python 变量作用域
2020/07/24 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
大学活动邀请函
2014/01/28 职场文书
管理失职检讨书
2014/02/12 职场文书
小区文明倡议书
2014/05/16 职场文书
2014年司法所工作总结
2014/11/22 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
乱世佳人观后感
2015/06/08 职场文书
小学校长开学致辞
2015/07/29 职场文书
节水宣传标语口号
2015/12/26 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
Go语言设计模式之结构型模式
2021/06/22 Golang
Python sklearn分类决策树方法详解
2022/09/23 Python