asp.net - 如何摆脱难看的asp:菜单闪烁?

标签 asp.net menu asp.net-4.0 aspmenu-control

我在具有无表呈现模式的ASP.NET 4.0 Webforms页面上使用asp:Menu控件:

<asp:Menu ID="MenuBase" runat="server" DataSourceID="SiteMapDataSourceMenu"
    Orientation="Horizontal" CssClass="contentmenu" RenderingMode="List" 
    IncludeStyleBlock="false">
</asp:Menu>


菜单具有5个或6个菜单项的水平主行,当用户将鼠标悬停在其中时,其中一些会打开垂直弹出菜单。

通常,当发生任何回发并且页面再次呈现时,菜单“闪烁”一会儿(例如半秒),这意味着:所有菜单项(包括弹出菜单中的项)都显示在一行或多行之后彼此恢复正常状态之前。

在所有菜单项“展开”的短暂显示中,菜单看上去就像是在浏览器中禁用了Javascript一样。 (似乎可以通过在asp:menu控件中使用一些Javascript来构建弹出菜单。)

此行为非常难看,尤其是对于大型菜单(在2或3行上短暂渲染)而言,整个页面内容在返回到正常显示之前已向下移动。

您知道这个问题的解决方案吗?

先感谢您!

(备注:我应该提到的是,在升级到ASP.NET 4.0之前,我使用了CodePlex的CSS友好菜单控件。我认为我不再需要CSS友好控件了,因为版本中的asp:Menu 4现在提供了内置的List渲染模式,据我所知,我对CSS友好的控件没有这种闪烁,并且我认为该控件没有使用Javascript,也许这是一个不好的步骤。现在寻找解决方案,如果可能的话,不返回CSS友好的菜单控件。)

编辑:

这种闪烁是与浏览器无关的,尽管在IE 8和IE 7中最明显。在IE 7(或IE 8的兼容模式)中,这是非常丑陋的,因为菜单项甚至以5到6行的形式也以疯狂的对角线模式显示。

最佳答案

如果还有人需要解决方案;出现闪烁是因为您应该在CSS中为菜单设置正确的显示样式。

尝试例如

#menu ul li ul
{
    display: none;
}




#menu ul li 
{
    position: relative; 
    float: left;
    list-style: none;
}


闪烁是因为ASP.NET 4菜单使用javascript来设置某些内联样式。

关于asp.net - 如何摆脱难看的asp:菜单闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3240873/

相关文章:

asp.net - Python 在组合框中选择一个值和 HTTP POST

javascript - 返回包含过滤嵌套数组的新对象

asp.net-mvc - 在 ASP.NET MVC 中,<%= 和 <% :? 有什么区别

c# - ASP :button with no post back or refreshing the page

asp.net - Firefox 偶尔显示文件流而不是文档

c# - 修剪 ASP.NET 超链接变量

html - 水平菜单在宽屏显示器上显示不正确

c# - 如何在 ASP.NET 3.5 中为选定的菜单项应用样式?

javascript - 字符串比较失败 - JavaScript IE 9

c# - 将背景图像添加到 asp.net 主网页 asp.net 4.0 和 html5