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 相关文章推荐
autoPlay 基于jquery的图片自动播放效果
Dec 07 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
Feb 13 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 Javascript
js 一个关于图片onload加载的事
Nov 10 Javascript
jquery实现无刷新验证码的简单实例
May 19 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
Javascript中document.referrer隐藏来源的方法
Jan 16 Javascript
javascript简单链式调用案例分析
May 10 Javascript
深入解析koa之异步回调处理
Jun 17 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
原生js实现无缝轮播图
Jan 11 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制作新闻系统的思路
2006/10/09 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php长字符串定义方法
2012/07/12 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
为python设置socket代理的方法
2015/01/14 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
详解Canvas事件绑定
2018/06/27 HTML / CSS
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
房产继承公证书
2014/04/09 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
世界环境日活动总结
2015/02/11 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书
如何写好活动总结
2019/06/21 职场文书
导游词之临安白水涧
2019/11/05 职场文书
redis限流的实际应用
2021/04/24 Redis
详解Python牛顿插值法
2021/05/11 Python
python3中apply函数和lambda函数的使用详解
2022/02/28 Python