今天制作了一个Javascript的popMenu动画特效,类似于SF.net上的那种效果,但是很遗憾,现在还只能在Gecko引擎的浏览器下运行,而且还有一点不小的问题,在IE6中出现各种诡异的问题,我更是无从下手。
首先,我是把这样一个onmouseover事件绑到一个带有padding的链接上,出问题了。在IE6里,这个事件,包括onclick、onmouseout都不能被触发。而当我把事件放到一个普通的链接上,所有事件都可以被触发,不明白。
这是其一,另外在IE6中CSS的问题也不小,position:relative的时候得出的结果简直就是不着边际,这个问题简直没指望。
所以只能放弃IE了。在Firefox上也有个小问题。我把onmouseover事件绑定到菜单按钮上,把onmouseout事件绑到菜单本身上。
但是当鼠标移到div内的两个li之间的时候,居然触发了div的onmouseout事件,我只是百思不得其解,而且也找不到什么好的替代办法来解决这个问题,只能振臂高呼上帝的名字了。这li之间的鸿沟真的不可逾越吗??
相关代码如下:
HTML片段 <div class="guide" id="top_guide">
<ul class="guideMenu">
<li><a href="#" class="guideMenu_link">MenuItem0</a></li>
<li><a href="content.html" class="guideMenu_link">MenuItem1</a></li>
<li><a href="#" class="guideMenu_link">MenuItem2</a></li>
<li><a href="#" class="guideMenu_link">MenuItem3</a></li>
<li><a href="#" class="guideMenu_link">MenuItem4</a></li>
</ul>
<div class="popMenuDefault" id="forMenu0">
<ul class="popMenu">
<li class="popMenuItem">subMenuItem0</li>
<li class="popMenuItem">subMenuItem1</li>
<li class="popMenuItem">subMenuItem2</li>
</ul>
</div>
<div class="popMenuDefault" id="forMenu2">
<ul class="popMenu">
<li class="popMenuItem">subMenuItem0</li>
<li class="popMenuItem">subMenuItem1</li>
<li class="popMenuItem">subMenuItem2</li>
</ul>
</div>
</div>
CSS片段.guide{
position:relative;
width:770px;
background:#C00;
text-align:center;
padding:12px 0 12px 0;
}
.guideMenu{
list-style:none;
font-size:14px;
color:#FFF;
}
.guideMenu li{
display:inline;
}
a.guideMenu_link:link,a.guideMenu_link:visited{
padding:0 20px 0 20px;
color:#FFF;
}
a.guideMenu_link:hover{
padding:0 19px 0 19px;
border:1px #FFF solid;
background-color:#C00;
text-decoration:none;
}
div.popMenuDefault{
display:none;
background-color:#C00;
color:#FFF;
}
div.popMenuDefault div{
height:100%;
}
ul.popMenu{
list-style:none;
display:none;
}
li.popMenuItem{
position:static;
line-height:150%;
}
JavaScriptwindow.onload = function(){
var items = document.getElementById("top_guide").getElementsByTagName("ul")[0].getElementsByTagName("li");
for(var i=0;i<items.length;i++){
if("#" == items[i].getElementsByTagName("a")[0].href.charAt(items[i].getElementsByTagName("a")[0].href.length-1)){
items[i].getElementsByTagName("a")[0].setAttribute("onclick","return false;");
items[i].getElementsByTagName("a")[0].setAttribute("onmouseover","popmenu("+ i +");");
}
}
var divs = document.getElementById("top_guide").getElementsByTagName("div");
for(var i=0;i<divs.length;i++){
divs[i].getElementsByTagName("ul")[0].setAttribute("onmouseout","killpop();");
}
};
function popmenu(index){
killpop();
var requiredId = "forMenu"+index;
var pop;
//alert(requiredId);
if(!(pop = document.getElementById(requiredId))){
//alert(" ");
return false;
}
var targetHeight = 20 * pop.getElementsByTagName("ul")[0].getElementsByTagName("li").length;
//alert(pop);
pop.style.position = "absolute";
pop.style.zIndex = "100";
pop.style.top = "40px";
pop.style.left = 100 + 115*index + "px";
pop.style.width = "120px";
pop.style.height = "0";
pop.style.display = "block";
pop.getElementsByTagName("ul")[0].style.display = "none";
popShow(requiredId, targetHeight, 10);
pop.getElementsByTagName("ul")[0].style.display = "block";
}
function killpop(){
var divs = document.getElementById("top_guide").getElementsByTagName("div");
for(var i=0;i<divs.length;i++){
if(divs[i].style.display == "block"){
var requiredId = divs[i].getAttribute("id");
var pop = divs[i];
pop.getElementsByTagName("ul")[0].style.display = "none";
popShow(requiredId, 0, 10);
pop.style.display = "none";
}
}
}
function popShow(elementId, target, interval){
var element = document.getElementById(elementId);
var height = parseInt(element.style.height);
if(element.movement){
clearTimeout(element.movement);
}
if(height == target){
return true;
}
if(height > target){
var dist = Math.ceil((height - target)/10);
height -= dist;
}
if(height < target){
var dist = Math.ceil((target - height)/10);
height += dist;
}
element.style.height = height + "px";
var repeat = "popShow('" + elementId + "'," + target + "," + interval +")";
element.movement = setTimeout(repeat, interval);
}
分享到:
相关推荐
安全生ۥ产是不可逾越的红线精选.doc
安全生产是不可逾越的红线.doc
标题和描述中提到的研究主题是“基于假设测试理论的移动机器人快速不可逾越的地形识别算法”,这表明文章讨论的是利用假设测试理论来提升移动机器人在三维环境中对不可逾越地形的识别效率和准确性的方法。...
希腊文明,作为西方文明的重要源头,对现代世界产生了深远的影响。其贡献之大,至今仍无法逾越。以下我们将详细探讨希腊文明的六大贡献。 首先,希腊神话是其文化遗产的重要组成部分。希腊神话中的诸神形象生动,...
几何上不可七象形的7臂带有无法被复杂的结构变形破坏的轨距扇区,并且越来越多的证据表明这种构型在F理论中很典型。 我们研究与这些黄铜相关的强耦合物理学。 轴突轮廓是使用拉马努詹的椭圆函数理论计算到可替代的...
我们介绍了Deontic Defeasible Logic的一种变体来处理务实的奇数问题。 关键思想是,仅当每个单独的义务独立于对其他义务的违反时,才允许使用合取义务。 该解决方案在保持可行的计算复杂性的同时,也充分利用了逻辑...
建筑是不可逾越和摧毁的 物品是不可逾越但可被摧毁的 地图结构为: TileIndex:Integer; //保存地表的信息 ObjIndex:Integer; //保存地表之上的处于人物之下的建筑或者物品 CanMove:Boolean; //可以移动的 ...
是最完整的三级网络技术复习资料 三级不是每个人不可逾越的鸿沟 只要我们的知识点面面俱到
- 注音:冻僵(dòng jiāng),怜悯(lián mǐn),恳求(kěn qiú),纠缠(jiū chán) - 补充词语:自言自语、无恶不作、荣华富贵、恩将仇报 3. 语言表达 - 描绘人物心理:当农夫看到冻僵的蛇时,他可能...
但是,通过对费希特调和结果的重新审视,我们不难发现,理性与道德信仰之间似乎总是存在某种不可逾越的鸿沟,这就是费希特处理历史与形而上学关系必然要面临的一个难题,同样也是其全部学说必定会遭遇的一个哲学困境。
美国著名未来学家阿尔温•托夫勒说:“电脑网络的建立和普及将彻底改变人类生存及...所以,构筑安全的电子商务信息环境,就成为了网络时代发展到一定阶段而不可逾越的“瓶颈”性问题,愈来愈受到国际社会的高度关注。
然而时过境迁,随着人们对数据存储要求的不断提高,这种硬盘的缺点也逐渐暴露出来,尤其是固有的机械结构成为其不可逾越的一道障碍。而最近两年,一股新的势力开始崭露头角,那就是用NAND型闪存作为存储介质的SSD...
国家四六级考试词组,四级高频词汇,了解更多的得四六级词汇让四六级不在是不可逾越的高墙。
- 理解商品经济取代自然经济的历史进步性和商品经济发展的不可逾越性。 #### 内容提要 - 自然经济与商品经济产生的社会经济条件; - 自然经济与商品经济的特征; - 商品经济取代自然经济的历史进步性及其发展的...
“建筑是不可逾越和摧毁的”这一点,意味着在游戏设计中,特定的环境元素是静态的,玩家不能通过破坏或移动它们来改变游戏状态。这通常涉及到游戏逻辑处理,例如碰撞检测算法的实现,确保角色与建筑物之间的交互符合...
5. 规则的不可逾越:“我寧愿与紫花泡桐错肩而去就像从未在四月的双溪水库边遇到她即便如此,我也无法擦去她紫色的痕迹”这段话可能意味着有一些经历和影响是永久性的,无法被时间抹去,这反映了生命中的某些规则和...
1. **专制皇权的不可逾越性**:通过"陛下"这一称呼的演变,我们可以看到皇帝地位的崇高与不可侵犯。这种称谓反映了封建社会中皇权的绝对权威,任何臣民都不能直接对皇帝表达意见,必须通过侍卫转达,体现出皇权的...