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 相关文章推荐
jQuery+jqmodal弹出窗口实现代码分明
Jun 14 Javascript
JavaScript 原型继承之构造函数继承
Aug 26 Javascript
jquery ajax,ashx,json的用法总结
Feb 12 Javascript
Jquery简单实现GridView行高亮的方法
Jun 15 Javascript
详解JavaScript 中的 replace 方法
Jan 01 Javascript
Jquery遍历select option和添加移除option的实现方法
Aug 26 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
react-native fetch的具体使用方法
Nov 01 Javascript
Vue自定义指令实现checkbox全选功能的方法
Feb 28 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
Sep 10 Javascript
JS实现页面侧边栏效果探究
Jan 08 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
PHP中的串行化变量和序列化对象
2006/09/05 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
详解js中==与===的区别
2017/01/08 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
python搭建简易服务器分析与实现
2012/12/15 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
利用python下载scihub成文献为PDF操作
2020/07/09 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
质量负责人任命书
2014/06/06 职场文书
聘用意向书
2014/07/29 职场文书
爱国之歌(8首)
2019/09/29 职场文书
python获取带有返回值的多线程
2022/05/02 Python