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 document.execCommand() 常用解析
Dec 14 Javascript
基于jquery的动态创建表格的插件
Apr 05 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
javascript手工制作悬浮菜单
Feb 12 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
Select2.js下拉框使用小结
Oct 24 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
May 02 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 Javascript
基于iScroll实现下拉刷新和上滑加载效果
Jul 18 Javascript
解决Vue+Element ui开发中碰到的IE问题
Sep 03 Javascript
vue使用i18n实现国际化的方法详解
Sep 05 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生成自己的LOG文件
2006/10/09 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
python读取excel表格生成erlang数据
2017/08/26 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python opencv实现图像边缘检测
2019/04/29 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
解析python的局部变量和全局变量
2019/08/15 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
一个精品风格的世界:Atterley
2019/05/01 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
2014道德模范事迹材料
2014/02/16 职场文书
计生专干事迹
2014/05/28 职场文书
医德考评自我评价
2014/09/14 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL