弹性菜单

/**弹性菜单的目标点的获得:
* 目标点不是确定的,其实就是当前li的位置**/

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
 2 "http://www.w3.org/TR/html4/strict.dtd">
 3
 4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 5     <head>
 6         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 7         <title>5.弹性菜单</title>
 8         <meta name="author" content="Administrator" />
 9         <!-- Date: 2014-12-13 -->
10         <style>
11             *{margin:0;padding:0;font-size:13px;font-family:microsoft yahei}
12             ul{margin:40px auto;position:relative}
13             li{list-style:none;float:left;width:130px;height:30px;text-align:center;line-height:30px;}
14             li.box{margin:0 3px;background:#DE4465;}
15             #mask{position:absolute;background:#2272BD;left:0;top:0;opacity:0.5}
16         </style>
17         <script>
18         /**弹性菜单的目标点的获得:
19          * 目标点不是确定的,其实就是当前li的位置**/
20             window.onload=function(){
21                 var oUl=document.getElementsByTagName(‘ul‘)[0];
22                 var aLi=getByClassName(oUl,‘li‘,‘box‘);
23                 var oMask=document.getElementById(‘mask‘);
24                 var arr=[];
25                 var timer=null;
26                 var iSpeed=0;
27
28
29                 oUl.style.width = (oUl.getElementsByTagName(‘li‘).length)*aLi[0].offsetWidth +‘px‘;
30                 oUl.style.margin = ‘40px auto‘
31                 oMask.style.left = aLi[0].offsetLeft + ‘px‘;
32                 for(var i=0;i<aLi.length;i++){
33
34                     aLi[i].onmouseover=function(){
35                           bonce(this.offsetLeft);
36                      }
37                 }
38
39                 console.log(arr)
40
41                 function bonce(iTarget){
42
43                  clearInterval(timer);
44                  timer=setInterval(function(){
45                      iSpeed += (iTarget - oMask.offsetLeft)/6;
46                      iSpeed *= 0.75;
47                      if( Math.abs( iSpeed ) <= 1 && Math.abs( iTarget - oMask.offsetLeft ) <= 1 ){
48                          clearInterval(timer);
49
50                          oMask.style.left = iTarget +‘px‘;
51                          iSpeed = 0;
52                      }else{
53                          oMask.style.left = oMask.offsetLeft + iSpeed +‘px‘
54                      }
55                  },30)
56             }
57
58
59             }
60
61
62             /**通过class来获取元素**/
63             function getByClassName(oParent,tagName,className){
64                     var arr=[];
65                     var als=oParent.getElementsByTagName(tagName);
66                     for(var i=0;i<als.length;i++){
67                         var a1=als[i].className.split(‘ ‘);
68                         for(var j=0;j<a1.length;j++){
69                             if(a1[j]==className){
70                                 arr.push(als[i]);
71                                 break;
72                             }
73                         }
74                     }
75                     return arr
76             }
77         </script>
78     </head>
79     <body>
80         <ul>
81             <li id="mask"></li>
82             <li class="box">首页</li>
83             <li class="box">学员</li>
84             <li class="box">课程</li>
85             <li class="box">关于</li>
86             <li class="box">留言</li>
87             <li class="box">论坛</li>
88         </ul>
89     </body>
90 </html>

时间: 2024-10-06 02:46:33

弹性菜单的相关文章

弹性菜单 加了 透视效果 运动 小案例

/**弹性菜单 加了透视效果,类似滚动歌词的效果 *运动过程中,背景色和颜色都会改变,实现原理见 滚动歌词篇 * 小bug 当设置字体为 微软雅黑时,运动过程中菜单中的字体会有小抖动,修复方法,left值不能直接赋值,先存起来**/ 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 2 "http://www.w3.org/TR/html4/strict.dtd"> 3 4 <html xmln

CSS+JS打造的一款flash效果的弹性菜单

<!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> <title>CSS+JS打造的一款flash效果的弹性

js弹性运动---弹性菜单

<!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>弹性运动---弹性菜单</title> <style> * { padding: 0; margin: 0; } li { list-style: none; } ul {

利用弹性运动的原理做弹性菜单

主要是速度以及临界条件的处理弹性运动的函数 function startMove(obj,target) { clearInterval(obj.timer); var speed=0; obj.timer = setInterval(function() { speed += (target - obj.offsetLeft) / 6; //类似于摩擦系数 speed *= 0.75; if(Math.abs(speed) < 1 && Math.abs(target - obj.

jQuery弹性展开收缩菜单插件gooey.js

分享一款基于jQuery弹性展开收缩菜单插件gooey.js.这是一款基于gooey.js插件实现的弹性菜单特效代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <header class="plugin-demo-header"> <h1>Gooey Menu</h1> <nav id="gooey-upper"> <input type="checkbox" cla

隐藏在左侧的jquery弹性弹出菜单

隐藏在左侧的弹性弹出菜单,从淘宝扣下来的,也可作为JAvaScript缓冲动画的典型教程.本弹性菜单可扩展性强,实际上不光可以做成菜单,也可布局一些图文混排的内容或一段视频,总之被弹出的内容是在一段Div内,怎么布置就看你的了. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&qu

JS学习之路,之弹性运动框架

弹性运动:顾名思义,就如同物理中的加速减速运动,当开始时速度过大,到达终点时,速度不会立刻停下,而是再前进一段距离,而后再向相反方向运动,如此往复. var timer=null; var speed=0; //速度必须放在外面,放在里面的话,每次速度都是从0开始而不是保持上次执行的结果 function move(){ timer=setInterval(function(){ /*if (oDiv.offsetLeft<300) { speed+=(300-oDiv.offsetLeft)/

运动--扩展

弹性运动 l加减速运动 <!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> <style> #div1 {w

JavaScrip中的运动

JavaScript中的运动 运动的基础原理 简单运动的函数封装 摩擦运动 缓冲运动 运动框架加入缓冲模式 运动框架的应用 多图展开收缩实例 带运动效果的留言本 淘宝幻灯片 带运动的返回顶部 图片预加载 图片预加载原理 图片预加载的应用实例 图片的按需加载 弹性运动 加速运动 减速运动 弹性运动 弹性运动带加速度 弹性运动带摩擦 弹性运动与缓冲运动的区别 弹性菜单实例 弹性菜单优化 弹性运动框架 碰撞运动 无重力匀速碰撞运动 自由落体加碰撞反弹 抛物线落体 iphone拖拽效果 碰撞弹窗,模仿官