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来定位
Feb 20 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
jQuery设置和移除文本框默认值的方法
Mar 09 Javascript
jQuery组件easyui基本布局实现代码
Aug 25 Javascript
JavaScript设置名字输入不合法的实现方法
May 23 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
微信小程序倒计时功能实例代码
Jul 17 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
Mar 02 Javascript
JS数组Object.keys()方法的使用示例
Jun 05 Javascript
JavaScript字符串处理常见操作方法小结
Nov 15 Javascript
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
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
用户的详细注册和判断
2006/10/09 PHP
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
建筑行业的大学生自我评价
2013/12/08 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
绿色出行口号
2014/06/18 职场文书
同志主要表现材料
2014/08/21 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
《刷子李》教学反思
2016/02/20 职场文书
合作合同协议书
2016/03/21 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
Oracle中update和select 关联操作
2022/01/18 Oracle
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL
mysql 获取相邻数据项
2022/05/11 MySQL