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连接access数据库的方法
Nov 17 Javascript
一个js实现的所谓的滑动门
May 23 Javascript
项目实践之javascript技巧
Dec 06 Javascript
Mootools 1.2 手风琴(Accordion)教程
Sep 15 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
js计算德州扑克牌面值的方法
Mar 04 Javascript
JS实现的表格行上下移动操作示例
Aug 03 Javascript
Angular中的$watch、$watchGroup、$watchCollection
Jun 25 Javascript
webpack4的迁移的使用方法
May 25 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
jquery使用echarts实现有向图可视化功能示例
Nov 25 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
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
python tkinter控件布局项目实例
2019/11/04 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
python 如何调用 dubbo 接口
2020/09/24 Python
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
美德好少年主要事迹
2014/01/29 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
2014学年自我鉴定
2014/02/23 职场文书
《木笛》教学反思
2014/03/01 职场文书
成绩单公证书
2014/04/10 职场文书
我的中国梦口号
2014/06/16 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
停车位租赁协议书
2014/09/24 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
python实现股票历史数据可视化分析案例
2021/06/10 Python