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 { width: 400px; height: 30px; position: relative; margin: 100px auto 0; }

li { float: left; width: 98px; height: 28px; line-height: 28px; border: 1px solid #ccc; text-align: center; z-index: 2; position: relative; cursor: pointer; }

.bg { width: 100px; height: 5px; overflow: hidden; background: red; border: none; position: absolute; top: 24px; left: 0; z-index: 1; }

</style>

<script type="text/javascript">

window.onload=function ()

{

var oUl=document.getElementById(‘ul1‘);

var aLi=oUl.getElementsByTagName(‘li‘);

var oBg=aLi[aLi.length-1];

var i=0;

for(i=0;i<aLi.length-1;i++)

{

aLi[i].index=i;

aLi[i].onmouseover=function ()

{ // 移动的元素 当前对象  移动的属性

startMove(oBg,this,‘left‘);

};

}

};

// 移动的元素 当前对象  移动的属性

function startMove(obj, index, attr)

{

iTarget=get_offset_val(index, attr);

obj.attr_name=get_offset_val(obj, attr);

if(iTarget==obj.attr_name)

return;  // 如果选择的是当前的选中的元素

obj.iSpeed=0;

var iSpeed_dis=5;// 速度比值

var mc =0.7 ; // 摩擦大小 值越大元素停止运动时间越长 值越小元素停止运动的时间越快

// 防止开启多次定时器

clearInterval(obj.timer);

obj.timer=setInterval(backOut, 30);

// 弹性运动

function backOut()

{

// 加、减速运动 iTarget>obj.offsetLeft加速运动  iTarget<obj.offsetLeft减速运动

obj.iSpeed+=(iTarget-obj.attr_name)/iSpeed_dis;

// 摩擦运动 让元素停止运动

obj.iSpeed*=mc;

obj.attr_name+=obj.iSpeed; // 防止小数误差 ispeed 不是整数 ,把小数保留下来

//运动速度小1 并且目标点与元素距离小于1 停止运动

if(Math.abs(obj.iSpeed)<=1 && Math.abs(obj.attr_name-iTarget)<=1)

{

obj.style[attr]=iTarget+‘px‘;

clearInterval(obj.timer);

}

else

{

obj.style[attr]= obj.attr_name+‘px‘;

}

} //------------------ backOut() 结束

}

// 获取 offset 值

function get_offset_val(obj,attr)

{

switch(attr)

{

case ‘left‘:

return obj.offsetLeft;

break;

case ‘top‘:

return obj.offsetTop;

break;

case ‘width‘:

return obj.offsetWidth;

break;

case ‘height‘:

return obj.offsetHeight;

break;

}

}

</script>

</head>

<body>

<ul id="ul1">

<li>首页</li>

<li>关于我们</li>

<li>产品</li>

<li>联系方式</li>

<li class="bg"></li>

</ul>

</body>

</html>

原文地址:https://www.cnblogs.com/xuey/p/8456758.html

时间: 2024-10-03 15:48:59

js弹性运动---弹性菜单的相关文章

JS运动基础(三) 弹性运动

加减速运动速度不断增加或减少速度减小到负值,会向反方向运动弹性运动在目标点左边,加速:在目标点右边,减速根据距离,计算加速度带摩擦力的弹性运动弹性运动+摩擦力 弹性:速度 += (目标点 - 当前值)/系数;  //6 , 7 , 8速度 *= 摩擦系数;   // 0.7 0.75终止条件距离足够近 并且 速度足够小 缓冲:var 速度 = (目标点 - 当前值)/系数;速度取整 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <me

js弹性运动滑动的菜单

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>弹性运动效果下滑的菜单</title> <script>  window.onload = function(){   var oUl = document.getElementById('oul');   var oLi = oul.getElem

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

主要是速度以及临界条件的处理弹性运动的函数 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.

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

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

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

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> <title>弹性运动</title> &l

点击弹出弹性下拉菜单效果

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><meta name="keywords" content="站长,网页特效,js特效,广告代码,zzjs,zzjs.net,sky,www.zzjs.net,站长特效 网" /><meta name="

jQuery插件之-----弹性运动

<!doctype html><html><head><meta charset="utf-8"><title>弹性运动</title> <script type="text/javascript" src="images/jquery-1.11.1.min.js"></script> <script> // JavaScript Docu

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

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