我在具有无表呈现模式的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/