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的LigerUI如何实现文件上传
Jul 09 Javascript
自己编写的类似JS的trim方法
Oct 09 Javascript
jquery中object对象循环遍历的方法
Dec 18 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
Jan 04 Javascript
JS实现的缓冲运动效果示例
Apr 30 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
a标签调用js的方法总结
Sep 05 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
详解Webpack抽离第三方类库以及common解决方案
Mar 30 Javascript
vue proxy 的优势与使用场景实现
Jun 15 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文件缓存类汇总
2014/11/21 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
基于python编写的微博应用
2014/10/17 Python
python中偏函数partial用法实例分析
2015/07/08 Python
python制作一个桌面便签软件
2015/08/09 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
python实现倒计时小工具
2019/07/29 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
致铅球运动员广播稿精选
2014/01/12 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
工作迟到检讨书
2014/02/21 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
2014年度思想工作总结
2014/11/27 职场文书
优秀团员自我评价
2015/03/10 职场文书
2015年预算员工作总结
2015/05/14 职场文书
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android