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是怎么继承的介绍
Jan 05 Javascript
javascript中怎么做对象的类型判断
Nov 11 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
Oct 17 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
Oct 25 Javascript
基于vue-video-player自定义播放器的方法
Mar 21 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
详解vue-cli 2.0配置文件(小结)
Jan 14 Javascript
vue项目部署到nginx/tomcat服务器的实现
Aug 26 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 Javascript
js绘制一条直线并旋转45度
Aug 21 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
学习使用PHP数组
2006/10/09 PHP
php google或baidu分页代码
2009/11/26 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python多线程实现同步的四种方式
2017/05/02 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
Python3.8中使用f-strings调试
2019/05/22 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
学python安装的软件总结
2019/10/12 Python
django框架F&amp;Q 聚合与分组操作示例
2019/12/12 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
python如何安装下载后的模块
2020/07/03 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
乳制品整治工作方案
2014/05/29 职场文书
销售员态度差检讨书
2014/10/26 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android