脚本复杂又简单--一个菜单模块
2006-10-28 13:33
309 查看
这里的脚本仅指jscript
脚本是复杂又简单的.说简单,是因为它是对象加上层次结构,甚至数组都是对象而不是数据结构,而且是浏览器中已内在声明了的,让你用就是.说复杂,是因为它的简单,让你在一些数据结构与算法的处理上得动一翻脑筋,也得对浏览器有深入的了解.下面是一个菜单模块,没进入文章正文就能正常显示,当进入文章正文阅读后就不能正常运行了.
var h,w,l,t;
var TempMenu=0,TempShow=false,b_false,b_true;//临时变量,b_false,b_true为阻赛代号
var stylelist = '设置1
设置2
设置3
设置4
设置5
';
function Lzy_Alpha(a,b)//淡入淡出循环,a表对象b来区别是show or hide
{
if(b)
{clearTimeout(b_false);//阻塞
if(TempMenu<81)
{
TempMenu+=2;
a.filters.Alpha.Opacity =TempMenu;
b_true=setTimeout("Lzy_Alpha(MenuDiv,1)",1);
}}
else
{clearTimeout(b_true);//阻塞
if(TempMenu>0)
{
TempMenu-=2;
if(TempMenu<=0)MenuDiv.style.visibility = "hidden";
a.filters.Alpha.Opacity =TempMenu;
b_false=setTimeout("Lzy_Alpha(MenuDiv,0)",1);
}}
}
function ShowMenu(MenuCode,tWidth)//参数分别表,菜单内容与菜单宽度
{
vSrc = window.event.srcElement;
h = vSrc.offsetHeight;
w = vSrc.offsetWidth;
l = vSrc.offsetLeft +2;
t = vSrc.offsetTop + h-1;//与上一行一起,设置菜单出现的位置
if(w > tWidth ){tWidth=w;} //确保菜单与事件标签同宽
MenuCode = "
";
vParent = vSrc.offsetParent;//如果其父标签使用了相对或绝对位置,进行位移补偿
while (vParent.tagName.toUpperCase() != "BODY")
{
l += vParent.offsetLeft;
t += vParent.offsetTop;
vParent = vParent.offsetParent;
}
MenuDiv.innerHTML = MenuCode;//注入
MenuDiv.style.top = t;
MenuDiv.style.left = l;
MenuDiv.style.visibility = "visible";
TempShow=true;
Lzy_Alpha(MenuDiv,TempShow);//渐深
}
function HideMenu()
{
if(TempShow)
{
mX = window.event.clientX + document.body.scrollLeft;
mY = window.event.clientY + document.body.scrollTop;
if ((mX < parseInt(MenuDiv.style.left)) || (mX > parseInt(MenuDiv.style.left)+MenuDiv.offsetWidth) || (mY < parseInt(MenuDiv.style.top)-h) || (mY > parseInt(MenuDiv.style.top)+MenuDiv.offsetHeight))//判断mouse移出菜单外
{TempShow=false;
Lzy_Alpha(MenuDiv,TempShow);//渐淡
}
}
}
淡入淡出菜单
因为弹出菜单里的某些脚本代码与网页的某些语句冲突了,浏览器对象不存在,对象同名了 等等.
脚本是复杂又简单的.说简单,是因为它是对象加上层次结构,甚至数组都是对象而不是数据结构,而且是浏览器中已内在声明了的,让你用就是.说复杂,是因为它的简单,让你在一些数据结构与算法的处理上得动一翻脑筋,也得对浏览器有深入的了解.下面是一个菜单模块,没进入文章正文就能正常显示,当进入文章正文阅读后就不能正常运行了.
var h,w,l,t;
var TempMenu=0,TempShow=false,b_false,b_true;//临时变量,b_false,b_true为阻赛代号
var stylelist = '设置1
设置2
设置3
设置4
设置5
';
function Lzy_Alpha(a,b)//淡入淡出循环,a表对象b来区别是show or hide
{
if(b)
{clearTimeout(b_false);//阻塞
if(TempMenu<81)
{
TempMenu+=2;
a.filters.Alpha.Opacity =TempMenu;
b_true=setTimeout("Lzy_Alpha(MenuDiv,1)",1);
}}
else
{clearTimeout(b_true);//阻塞
if(TempMenu>0)
{
TempMenu-=2;
if(TempMenu<=0)MenuDiv.style.visibility = "hidden";
a.filters.Alpha.Opacity =TempMenu;
b_false=setTimeout("Lzy_Alpha(MenuDiv,0)",1);
}}
}
function ShowMenu(MenuCode,tWidth)//参数分别表,菜单内容与菜单宽度
{
vSrc = window.event.srcElement;
h = vSrc.offsetHeight;
w = vSrc.offsetWidth;
l = vSrc.offsetLeft +2;
t = vSrc.offsetTop + h-1;//与上一行一起,设置菜单出现的位置
if(w > tWidth ){tWidth=w;} //确保菜单与事件标签同宽
MenuCode = "
" + MenuCode + " |
vParent = vSrc.offsetParent;//如果其父标签使用了相对或绝对位置,进行位移补偿
while (vParent.tagName.toUpperCase() != "BODY")
{
l += vParent.offsetLeft;
t += vParent.offsetTop;
vParent = vParent.offsetParent;
}
MenuDiv.innerHTML = MenuCode;//注入
MenuDiv.style.top = t;
MenuDiv.style.left = l;
MenuDiv.style.visibility = "visible";
TempShow=true;
Lzy_Alpha(MenuDiv,TempShow);//渐深
}
function HideMenu()
{
if(TempShow)
{
mX = window.event.clientX + document.body.scrollLeft;
mY = window.event.clientY + document.body.scrollTop;
if ((mX < parseInt(MenuDiv.style.left)) || (mX > parseInt(MenuDiv.style.left)+MenuDiv.offsetWidth) || (mY < parseInt(MenuDiv.style.top)-h) || (mY > parseInt(MenuDiv.style.top)+MenuDiv.offsetHeight))//判断mouse移出菜单外
{TempShow=false;
Lzy_Alpha(MenuDiv,TempShow);//渐淡
}
}
}
淡入淡出菜单
因为弹出菜单里的某些脚本代码与网页的某些语句冲突了,浏览器对象不存在,对象同名了 等等.
相关文章推荐
- 一个具有菜单选项的简单shell脚本
- 一个带菜单的内存统计简单脚本
- Linux脚本设计练习2——一个游戏菜单的简单实现
- 【Nginx】初识nginx---实现一个简单的http模块
- 一个简单自动监控nginx 504错误的php脚本
- [python脚本]一个简单的web爬虫(1)
- 一个简单的仿sohu电视剧播放列表[脚本]
- 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注册模块(附完整源码)
- 一个简单的 python 实现 图片同步脚本 ,对于有图片群集的项目有参考价值
- 又一个简单菜单
- 用capistrano写一个简单的deploy脚本
- 一个简单的批量创建一批文件的脚本
- Linux内核监控模块-1-驱动模块(LKM)开发(以一个简单的hello world程序为例)
- 由一个简单登录模块引发的安全危机
- 一个可以生成复杂结构的json数据的简单例子
- 如何在Magento(麦进斗)中创建一个简单的“Hello World”模块?
- 一个简单的shell脚本
- 如何DIY一个简单的反弹Shell脚本
- js写的一个简单的手风琴菜单
- 实现一个简单的脚本系统