Переход цвета фона


286

Я пытаюсь сделать эффект перехода background-colorпри наведении на пункты меню, но это не работает. Вот мой код CSS:

#content #nav a:hover {
    color: black;
    background-color: #AD310B;
    /* Firefox */
    -moz-transition: all 1s ease-in;
    /* WebKit */
    -webkit-transition: all 1s ease-in;
    /* Opera */
    -o-transition: all 1s ease-in;
    /* Standard */
    transition: all 1s ease-in;
}

Это список пунктов #nav divменю ul.


Просто к вашему сведению, это работает в Firefox сейчас. Проверено в FF9.
C.Brown

Ответы:


527

Насколько я знаю, переходы в настоящее время работают в Safari, Chrome, Firefox, Opera и Internet Explorer 10+.

Это должно создать эффект затухания в следующих браузерах:

a {
    background-color: #FF0;
}

a:hover {
    background-color: #AD310B;
    -webkit-transition: background-color 1000ms linear;
    -ms-transition: background-color 1000ms linear;
    transition: background-color 1000ms linear;
}
<a>Navigation Link</a>

Примечание. Как отметил Джеральд в комментариях, если вы поместите переход на a, а не на, a:hoverон вернется к исходному цвету, когда ваша мышь отойдет от ссылки.

Это также может пригодиться: основы CSS: переходы CSS 3


38
Вы также можете вставить переходы в content #nav aдля перехода к оригиналу, когда пользователь отводит мышь от ссылки.
Гак

2
Поиграйте с переходами при наведении и клике по адресу: jsfiddle.net/K5Qyx
Дем Пилафян

3
Разве не было бы лучше поместить transition:в non-hover? Я думаю, что каждый раз, когда пользователь зависает, переход компилируется ..
Matej

1
@Illium Link мертв
ferdynator

2
CSS, по- transitionвидимому, не может обрабатывать цвета типа «линейный градиент», как можно проверить здесь . И кстати, ответ @ Ilium заслуживает того, чтобы быть отмеченным как решение.
Stacky

86

Для меня лучше поставить коды перехода с оригинальными / минимальными селекторами, чем с: hover или любыми другими дополнительными селекторами:

#content #nav a {
    background-color: #FF0;
    
    -webkit-transition: background-color 1000ms linear;
    -moz-transition: background-color 1000ms linear;
    -o-transition: background-color 1000ms linear;
    -ms-transition: background-color 1000ms linear;
    transition: background-color 1000ms linear;
}

#content #nav a:hover {
    background-color: #AD310B;
}
<div id="content">
    <div id="nav">
        <a href="#link1">Link 1</a>
    </div>
</div>


8
Дело не в том, что лучше или хуже. Просто если вы укажете переход на самом элементе, он будет анимирован, когда элемент наведен и когда он «обнаружен». Хотя, если вы примените его к: hover, у вас будет анимация, когда мышь входит, но не когда она уходит.
LucasBeef

6
Это решение в целом лучше. Ожидается, что эффект перехода будет и должен исчезать при наведении и исчезать при размытии.
Chizzle
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.