JS实现横向拉伸动感伸缩菜单效果代码


Posted in Javascript onSeptember 04, 2015

本文实例讲述了JS实现横向拉伸动感伸缩菜单效果代码。分享给大家供大家参考。具体如下:

这是一款JS实现的纵向拉伸变横向拉伸,动感伸缩菜单,紧身排列的CSS菜单,可用在博客等重要的位置部分作菜单,学习JavaScript前端设计的也可以作为参考范例。

运行效果截图如下:

JS实现横向拉伸动感伸缩菜单效果代码

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>有弹性的菜单</title>
<style>
*{ margin:0px; padding:0px;} body { background:#fff;} .naver{list-style-type:
none; width:700px; overflow:hidden; margin:100px auto 0;} .naver li{ width:100px;
height:50px; overflow:hidden; font-size:16px; text-align:center; cursor:
pointer; } .naver li a,.naver li a:hover{display: block;width:100px; height:50px;
line-height: 50px; color:#FFF; text-decoration: none; } .co1{ background:#649e37}
.co2{ background:#028fbc}
</style>
<script type="text/javascript">
  window.onload = function() {
   var oUl = document.getElementById("nav");
   var aLi = oUl.getElementsByTagName("li");
   var i = 0;
   for (i = 0; i < aLi.length; i++) {
    aLi[i].timer = null;
    aLi[i].speed = 0;
    aLi[i].onmouseover = function() {
     startMove(this, 250);
    };
    aLi[i].onmouseout = function() {
     startMove2(this, 100);
    };
   }
  };
  function startMove(obj, iTarget) {
   if (obj.timer) {
    clearInterval(obj.timer);
   }
   obj.timer = setInterval(function() {
    doMove(obj, iTarget);
   }, 30)
  };
  function doMove(obj, iTarget) {
   obj.speed += 3;
   if (Math.abs(iTarget - obj.offsetWidth) < 1 && Math.abs(obj.speed) < 1) {
    clearInterval(obj.timer);
    obj.timer = null;
   }
   else {
    if (obj.offsetWidth + obj.speed >= iTarget) {
     obj.speed *= -0.7;
     obj.style.width = iTarget + "px";
    }
    else {
     obj.style.width = obj.offsetWidth + obj.speed + "px";
    }
   }
  };
  function startMove2(obj, iTarget) {
   if (obj.timer) {
    clearInterval(obj.timer);
   }
   obj.timer = setInterval(function() {
    doMove2(obj, iTarget);
   }, 30)
  };
  function doMove2(obj, iTarget) {
   obj.speed -= 3;
   if (Math.abs(iTarget - obj.offsetWidth) < 1 && Math.abs(obj.speed) < 1) {
    clearInterval(obj.timer);
    obj.timer = null;
   }
   else {
    if (obj.offsetWidth + obj.speed <= iTarget) {
     obj.speed *= -0.7;
     obj.style.width = iTarget + "px";
    }
    else {
     obj.style.width = obj.offsetWidth + obj.speed + "px";
    }
   }
  };
</script>
</head>
<body>
 <ul id="nav" class="naver">
  <li class="co1">
   <a href="#">首页</a>
  </li>
  <li class="co2">
   <a href="#">爱好</a>
  </li>
  <li class="co1">
   <a href="#">作品</a>
  </li>
  <li class="co2">
   <a href="#">联系</a>
  </li>
  <li class="co1">
   <a href="#">博客</a>
  </li>
 </ul>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
javascript 写类方式之五
Jul 05 Javascript
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
Dec 30 Javascript
IE关闭时判断及AJAX注销案例学习
Feb 18 Javascript
Js+Jq获取URL参数的集中方法示例代码
May 20 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
Aug 24 Javascript
Vue.js自定义事件的表单输入组件方法
Mar 08 Javascript
vue左右侧联动滚动的实现代码
Jun 06 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 Javascript
JavaScript实现随机五位数验证码
Sep 27 Javascript
用VsCode编辑TypeScript的实现方法
May 07 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
Sep 04 #Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
Sep 04 #Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
Sep 04 #Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
Sep 04 #Javascript
js实现网站最上边可关闭的浮动广告条代码
Sep 04 #Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 #Javascript
jquery实现的Accordion折叠面板效果代码
Sep 02 #Javascript
You might like
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
python 自动提交和抓取网页
2009/07/13 Python
使用Python构建Hopfield网络的教程
2015/04/14 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
经贸日语毕业生自荐信
2013/11/03 职场文书
劳资人员岗位职责
2013/12/19 职场文书
秘书专业自荐信范文
2013/12/26 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
大学生社会实践方案
2014/05/11 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
法制工作总结2015
2015/07/23 职场文书
以下牛机,你有几个
2022/04/05 无线电