Как избавиться от ужасного мерцания asp:Menu?

Я использую 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 строк.

17
задан Slauma 13 July 2010 в 19:59
поделиться

1 ответ

Если кому-то еще нужно решение; мерцание происходит потому, что вы должны установить правильный стиль отображения в вашем css для меню.

Попробуйте, например,

#menu ul li ul
{
    display: none;
}

и

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

Мерцание вызвано тем, что меню ASP.NET 4 использует javascript для установки некоторых встроенных стилей.

34
ответ дан 30 November 2019 в 10:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: