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解决下拉菜单被Div遮挡的相关问题
Feb 13 Javascript
js字符串完全替换函数分享
Dec 03 Javascript
JavaScript设计模式之建造者模式介绍
Dec 28 Javascript
js微信分享API
Oct 11 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
Feb 28 Javascript
vue实现a标签点击高亮方法
Mar 17 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
Sep 30 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 Javascript
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
layer扩展打开/关闭动画的方法
Sep 23 Javascript
JavaScript实现秒杀时钟倒计时
Sep 29 Javascript
jquery ajax 请求小技巧实例分析
Nov 11 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
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
对联广告js flash激活
2006/10/19 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
node.js的事件机制
2017/02/08 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
vue ssr 指南详读
2018/06/29 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
Etam德国:内衣精品店
2019/08/25 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
岗位职责的含义
2013/11/17 职场文书
客服服务心得体会
2013/12/30 职场文书
个人实习生的自我评价
2014/02/16 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
社区文化建设方案
2014/05/02 职场文书
英文推荐信格式范文
2014/05/09 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
2014小学年度工作总结
2014/12/20 职场文书
用电申请报告范文
2015/05/18 职场文书
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
python中的random模块和相关函数详解
2022/04/22 Python
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers