Я хочу добавить изображение к каждому li
, но я бы хотел отображать его только на мыши. Однако я хочу избежать эффекта "перемещения", что является следствием добавления нового элемента (изображения) в DOM. Я попытался исправить его с visibility:hidden
, поскольку это занимает пространство, но без везения.
Вот простой пример, как вы можете видеть, при падении этих li
они двигаются справа.
Каков самый простой способ достичь этого?
Вам нужно либо позиционировать :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;
}