2010-07-29 67 views
2

我用suckerfish创建了CSS下拉菜单。与它的问题是,当你点击顶级导航项目,带你到分类页面,指针仍然在该导航项目上,下拉菜单自动出现在IE中。在IE浏览器中出现过快的CSS下拉菜单

它适用于Firefox,因为直到我移动鼠标才会显示下拉菜单,但是IE只是在没有任何鼠标移动的情况下立即开始踢。

由于菜单非常大,用户不知道该页面已经改变了。

该网站http://www.foodnetwork.com/似乎达到我想要的,稍微延迟之前下拉菜单再次出现。我知道他们正在将它与JS和CSS混合在一起,但他们不知道自己在做什么。

任何想法

回答

0

使用jQuery的hoverIntent实现这一延迟效应。另外,即使光标暂时移出菜单,菜单也会保持在那里。防止分散的菜单闪烁效果出现和消失。

0

就扔了这一点,在那里,因为有可能是其他改变,你希望菜单有还有:

你可能要考虑Superfish(更新/升级[和可能矫枉过正,所以来看看]版本的Suckerfish),其中一个增加的是菜单上的delay option

+0

啊,是的。超级用户使用hoverIntent :) – Lyon 2010-07-29 11:39:12

+0

感谢您的回复,但我仍然无法得到这与任一选项工作。从我可以看到CSS在JS之前开始,因此li:hover用于使子菜单在JS可以隐藏之前开始显示,并且由于它出现然后隐藏,我得到了导航fliker。所以即使有延迟功能,CSS总是排在第一位。 – Clawg 2010-07-29 14:23:02

+0

你能编辑你的问题来包含你的代码吗?我会看看我能做些什么来帮助 – Lyon 2010-07-31 13:45:10

0

所以我得到了解决方案。

我在文档的头部添加了带有JS的CSS,并在其上设置了一个小延迟。这种方式当用户点击主导航链接时,默认情况下隐藏下拉菜单用CSS,然后使用JS写入的CSS显示。用户在页面加载时看到没有drodown的页面,然后在1.5秒后出现下拉菜单,因此向用户显示页面已重新加载。

 
// Add dropdown styles 
     function addDDStyles() { 
      var head = document.getElementsByTagName('head')[0]; 
      var logindiv = document.createElement('link'); 
      logindiv.setAttribute('type', 'text/css') 
      logindiv.setAttribute("rel", "stylesheet"); 
      logindiv.setAttribute("href", ' http://files.stv.claw/css/dropdown.css '); 
      logindiv.setAttribute("media", "screen"); 
      head.appendChild(logindiv); 
     } 
     setTimeout('addDDStyles()', 1500) 

1

我知道您目前对这个问题采用了不同的技术解决方案,但请您在判断之前至少看看我的建议。我不够好直接解释它,所以我会给你几个要点,然后链接到解决方案,以帮助你。

此解决方案包含以下属性:

  • 没有任何形式的客户端脚本(JavaScript)的使用
  • 绝对浏览器和平台兼容性
  • 文字缩放友好
  • 窄窗宽处理
  • 适用于非CSS或CSS禁用的浏览器
  • 放入公共Doma

发布文件的站点使用此菜单(它由作者拥有)。所以,请访问GRC's Script-Free Pure-CSS Menuing System页面。

我真的希望这可以帮助你!

相关问题