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 相关文章推荐
js将控件隐藏的方法及display属性介绍
Jul 04 Javascript
JS辨别访问浏览器判断是android还是ios系统
Aug 19 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
Oct 17 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
Mar 31 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
node.js 和HTML5开发本地桌面应用程序
Dec 13 Javascript
jQuery实现页面倒计时并刷新效果
Mar 13 Javascript
详解vue-cli构建项目反向代理配置
Sep 07 Javascript
详解vue项目的构建,打包,发布全过程
Nov 23 Javascript
jquery中done和then的区别(详解)
Dec 19 jQuery
微信小程序实现列表的横向滑动方式
Jul 15 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
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
php多任务程序实例解析
2014/07/19 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
python实现红包裂变算法
2016/02/16 Python
python使用锁访问共享变量实例解析
2018/02/08 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
Python @property使用方法解析
2019/09/17 Python
Python 切分数组实例解析
2019/11/07 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
商业活动邀请函
2014/02/04 职场文书
心理健康日活动总结
2014/05/08 职场文书
审计班子对照检查材料
2014/08/27 职场文书
暑假学习心得体会
2014/09/02 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
golang json数组拼接的实例
2021/04/28 Golang
JS实现简单九宫格抽奖
2022/06/28 Javascript