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 相关文章推荐
javascript 模式设计之工厂模式详细说明
May 10 Javascript
JavaScript在XHTML中的用法详解
Apr 11 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
Jun 15 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
Jul 10 Javascript
js 提交form表单和设置form表单请求路径的实现方法
Oct 25 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
vue路由拦截及页面跳转的设置方法
May 24 Javascript
js实现unicode码字符串与utf8字节数据互转详解
Mar 21 Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
Vue实现简单计算器案例
Feb 25 Javascript
原生JS生成指定位数的验证码
Oct 28 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
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
c#中的实现php中的preg_replace
2009/12/21 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
js中onload与onunload的使用示例
2013/08/25 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
python使用socket向客户端发送数据的方法
2015/04/29 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
先进班级集体事迹材料
2014/01/30 职场文书
花店创业计划书范文
2014/02/07 职场文书
运动会稿件50字
2014/02/17 职场文书
求职面试个人自我评价
2014/02/28 职场文书
调解协议书
2014/04/16 职场文书
房地产推广策划方案
2014/05/19 职场文书
品质标语大全
2014/06/21 职场文书
违反交通法规检讨书
2014/09/10 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
十二生肖观后感
2015/06/12 职场文书
2015大一新生军训感言
2015/08/01 职场文书
python 下划线的多种应用场景总结
2021/05/12 Python