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 相关文章推荐
非主流的textarea自增长实现js代码
Dec 20 Javascript
javascript之典型高阶函数应用介绍二
Jan 10 Javascript
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
使用JavaScript实现ajax的实例代码
May 11 Javascript
Active控件问题小结(附解决办法)
Jun 09 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
Aug 02 Javascript
详解如何实现一个简单的Node.js脚手架
Dec 04 Javascript
JavaScript ES6常用基础知识总结
Feb 09 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 Javascript
Javascript异步流程控制之串行执行详解
Sep 27 Javascript
区分vue-router的hash和history模式
Oct 03 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 jQuery
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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
php中用数组的方法设置cookies
2011/04/21 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
python编写简单端口扫描器
2019/09/04 Python
django 多数据库及分库实现方式
2020/04/01 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
大学老师推荐信
2014/02/25 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
专项法律服务方案
2014/06/11 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python