Зарезервировать место для псевдоэлемента перед наведением мыши

0

Я хочу добавить изображение к каждому li, но я бы хотел отображать его только на мыши. Однако я хочу избежать эффекта "перемещения", что является следствием добавления нового элемента (изображения) в DOM. Я попытался исправить его с visibility:hidden, поскольку это занимает пространство, но без везения.

Вот простой пример, как вы можете видеть, при падении этих li они двигаются справа.

Каков самый простой способ достичь этого?

http://jsfiddle.net/UQAjh/

Теги:

1 ответ

0
Лучший ответ

Вам нужно либо позиционировать :before псевдоэлемента абсолютно, чтобы предотвратить его ввод в поток макета, если он показан, или создать псевдоэлемент независимо от состояния :hover при opacity 0 и установить opacity 1 при зависании.

Сохранение :before выходом из макета

ul > li:hover:before {
   /* all the other styles */
   position: absolute;
   left: 25px;
}

Скрипт: http://jsfiddle.net/marionebl/UQAjh/1/

Создание :before независимо от :hover состояние :hover

ul > li:before {
   /* all the other styles */
   display: inline-block;
   float: left;
   opacity: 0;
}

ul > li:hover:before {
   opacity: 1;
}

Скрипт: http://jsfiddle.net/marionebl/Nda6Z/1/

  • 0
    Потрясаящий человек! Спасибо!
  • 0
    Просто из интереса: какой вариант вы выбрали и почему?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню