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 相关文章推荐
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
可自己添加html的伪弹出框实现代码
Sep 08 Javascript
Node.js文件操作详解
Aug 16 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
分享网页检测摇一摇实例代码
Jan 14 Javascript
多种js图片预加载实现方式分享
Feb 19 Javascript
ES5学习教程之Array对象
Apr 01 Javascript
JS实现的A*寻路算法详解
Dec 14 Javascript
Node.js console控制台简单用法分析
Jan 04 Javascript
vue缓存的keepalive页面刷新数据的方法
Apr 23 Javascript
JS中的函数与对象的创建方式
May 12 Javascript
npm qs模块使用详解
Feb 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
php实现的SESSION类
2014/12/02 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
python 调用HBase的简单实例
2016/12/18 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
详解Python中类的定义与使用
2017/04/11 Python
Python算术运算符实例详解
2017/05/31 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
python实现双色球随机选号
2020/01/01 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
详解python tcp编程
2020/08/24 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
大专学生推荐信范文
2013/11/19 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
电子银行营销方案
2014/02/22 职场文书
店面销售职位的职责
2014/03/09 职场文书
岗位廉政承诺书
2014/03/27 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
PL350与SW11的比较
2021/04/22 无线电
Redis读写分离搭建的完整步骤
2021/09/14 Redis
python ConfigParser库的使用及遇到的坑
2022/02/12 Python