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 相关文章推荐
ext checkboxgroup 回填数据解决
Aug 21 Javascript
javascript中万恶的function实例分析
May 25 Javascript
基于jQuery的360图片展示实现代码
Jun 14 Javascript
javascript实现动态侧边栏代码
Feb 19 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
Jun 19 Javascript
JavaScript 模块的循环加载实现方法
Dec 13 Javascript
JavaScript的函数式编程基础指南
Mar 19 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
原生js+canvas实现贪吃蛇效果
Aug 02 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
Dec 01 Javascript
vue ref如何获取子组件属性值
Mar 31 Vue.js
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
Destoon实现多表查询示例
2014/08/21 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
Prototype Number对象 学习
2009/07/19 Javascript
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
Python常用模块用法分析
2014/09/08 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
Python 操作 MySQL数据库
2020/09/18 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
群众路线剖析材料(四风问题)
2014/10/08 职场文书
2014年领班工作总结
2014/11/25 职场文书
股权转让协议范本
2014/12/07 职场文书
常用的Python代码调试工具总结
2021/06/23 Python
详解TypeScript的基础类型
2022/02/18 Javascript