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的气泡提示效果
May 31 Javascript
javascript开发技术大全-第1章javascript概述
Jul 03 Javascript
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
使用JavaScript获取URL中的参数(两种方法)
Nov 16 Javascript
bootstrap实现的自适应页面简单应用示例
Mar 09 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
JS开发自己的类库实例分析
Aug 28 Javascript
JS实现打字游戏
Dec 17 Javascript
通过实例解析json与jsonp原理及使用方法
Sep 27 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
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP chr()函数讲解
2019/02/11 PHP
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
Python selenium文件上传方法汇总
2020/11/19 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
python程序控制NAO机器人行走
2019/04/29 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
ECHT官方网站:男女健身服
2020/02/14 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
大学活动策划书范文
2014/01/10 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
公司外出活动方案
2014/08/14 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
python随机打印成绩排名表
2021/06/23 Python
springboot中的pom文件 project报错问题
2022/01/18 Java/Android