Навигация IE6 зависает

Я использую следующий код для навигации без JS:

<ol id = "navigation">
    <li id = "home"><a href = "#"><img src = "./images/nav/home-hover.png" alt = "Home" /></li>
    ...
</ol>

И CSS:

#navigation a {
    display: block;
    height: 25px;
}

#navigation a img {
    display: none;
}

#navigation a:hover img {
    display: block;
}

#home a {
    background: url('./images/nav/home-normal.png') no-repeat;
    width: 100px;
}

Моя проблема в том, что они не меняют изображения при наведении курсора в IE6. Я использую :hover на якоре, так что все должно быть в порядке, и я использую display, а не visibility, что еще одна вещь, которая не работает в IE6.

Мне бы очень хотелось, чтобы мне не приходилось добавлять загрузку javascript для замены / предварительной загрузки изображений (встраивание чего-то вроде jQuery не вариант) - может ли кто-нибудь мне здесь помочь?

Спасибо,

Примечание. Вы пропустили закрытие </a>.

strager 01.12.2008 07:07
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
1
1 700
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

IE не перерисовывает якоря, пока не изменится какое-либо правило на самом <a>. Добавьте что-нибудь для a:hover, например:

 #navigation a:hover {border:0} /* no-op */

Кстати: к сожалению, популярные программы чтения с экрана не читают вещи с помощью display:none, поэтому ваше меню оказывается недоступным.

Я предлагаю сделать <img> видимым по умолчанию и скрывать его при наведении курсора.

Ура! Это помогло мне решить мою проблему с заменой src изображения из jQuery. $ ("# изображение"). attr ("src", "newsrc.jpg"). css ("граница", "0"); заставляет IE6 обновить изображение и показать новый src!

Adam Plumb 01.04.2009 00:19

Вы также можете использовать фон тега привязки в качестве держателя изображения.

HTML:

<ol>
 <li><a href = "#"></a></li>
</ol>

CSS:

li a{
 background:url("link.jpg");
 display:block;
 width:100px;
 height:50px;
} 

li a:hover{
 background:url("link2.jpg");
}

OP хочет, чтобы изображения были кэшированы до того, как пользователь наведет курсор на элементы. Может быть, он может добавить несколько тегов <img> в конец файла HTML с помощью display: none ;?

strager 01.12.2008 07:09

Я согласен с тем, что здесь говорит Джейсон, но если вы хотите, чтобы оба изображения были кэшированы до того, как пользователь наведет курсор на ссылки, тогда зачем использовать два изображения?

Некоторое время назад я придумал небольшую идею, которую мне нравится использовать, которая имеет как нормальное состояние кнопки, так и состояние при наведении курсора на одно и то же изображение, нормальное состояние кнопки вверху и состояние наведения кнопки внизу, это означает, что оба состояния кнопки сразу же кешируются, так как это одно и то же изображение! И у вас нет множества разных изображений для разных состояний ваших кнопок, заполняющих вашу папку изображений, только одно изображение, которое относится к каждому состоянию этой ссылки.

Затем вы можете избавиться от тега img и его стиля (display: none и т. д.)

И сделайте так, чтобы ссылки были стилизованы так:

#home a {    
    background: url('./images/nav/home-normal.png') no-repeat left top;    
    width: 100px;
}
#home a:hover {    
    background-position:left bottom;
}

вам также нужно будет указать высоту ссылки, чтобы она не отображала никакой части другого состояния ссылки, имеет смысл? Вы эффективно разрезаете фоновое изображение пополам с помощью размерных стилей элементов.

JavaScript не требуется, и изменение состояния происходит мгновенно, так как изображение уже загружено :)

надеюсь это поможет!

Другие вопросы по теме