Я использую asp:Menu
управление на странице ASP.NET 4.0 Webforms с режимом рендеринга без таблиц:
<asp:Menu ID="MenuBase" runat="server" DataSourceID="SiteMapDataSourceMenu"
Orientation="Horizontal" CssClass="contentmenu" RenderingMode="List"
IncludeStyleBlock="false">
</asp:Menu>
Меню ссорится с 5 или 6 пунктами меню, и некоторые из них открывают вертикальные всплывающие меню, когда пользователь нависает над ними.
Часто, когда любая обратная передача происходит, и страница представляется снова, меню "мерцает" на мгновение (скажите, половина секунды), что означает: Все пункты меню - включая объекты во всплывающих меню - отображены в одной или нескольких строках один друг после друга, прежде чем они возвратятся к нормальному намеченному состоянию.
В этот короткий момент "развернутого" дисплея всех пунктов меню смотрит меню, КАК БУДТО JavaScript был отключен в браузере. (Кажется, что создание всплывающих меню достигается при помощи некоторого JavaScript в управлении asp:menu.)
Это поведение довольно ужасно, особенно с большим меню (представляющий в течение короткого момента более чем 2 или 3 строки), целое содержание страницы спущено, прежде чем оно перейдет назад к нормальному дисплею.
Вы знаете какое-либо решение для этой проблемы?
Заранее спасибо!
(Комментарий: Я должен упомянуть, что использовал известное благоприятное для CSS управление меню от CodePlex, прежде чем я обновил до ASP.NET 4.0. Я предположил, что мне больше не нужно благоприятное для CSS управление, потому что asp:Menu в версии 4 предлагает встроенный режим рендеринга Списка теперь. Насколько я помню, что у меня не было этого мерцания с благоприятным для CSS управлением, и я думаю, что это управление не использует JavaScript. Возможно, это было плохим шагом. Я теперь ищу решение, не возвращаясь к благоприятному для CSS управлению меню, если это возможно.)
Править:
Это мерцание является независимым браузером, хотя самый примечательный в IE 8 и 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 для установки некоторых встроенных стилей.