Исчезает ли эффект при наведении ссылки?

134

на многих сайтах, таких как http://www.clearleft.com , вы заметите, что при наведении ссылок они переходят в другой цвет, в отличие от немедленного переключения, действия по умолчанию.

Я полагаю, JavaScript используется для создания этого эффекта, кто-нибудь знает, как?

Майлз Хенрикс
источник
1
Спасибо. Теперь я понимаю, как создавать парящие ссылки, просто я пытаюсь понять, как создать более плавный эффект для моих парящих ссылок.
Майлз Хенрикс

Ответы:

327

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

Примерно так получается работа:

a {
  color:blue;
  /* First we need to help some browsers along for this to work.
     Just because a vendor prefix is there, doesn't mean it will
     work in a browser made by that vendor either, it's just for
     future-proofing purposes I guess. */
  -o-transition:.5s;
  -ms-transition:.5s;
  -moz-transition:.5s;
  -webkit-transition:.5s;
  /* ...and now for the proper property */
  transition:.5s;
}
a:hover { color:red; }

Вы также можете переносить определенные свойства CSS с разными временами и функциями замедления, разделяя каждое объявление запятой, например так:

a {
  color:blue; background:white;
  -o-transition:color .2s ease-out, background 1s ease-in;
  -ms-transition:color .2s ease-out, background 1s ease-in;
  -moz-transition:color .2s ease-out, background 1s ease-in;
  -webkit-transition:color .2s ease-out, background 1s ease-in;
  /* ...and now override with proper CSS property */
  transition:color .2s ease-out, background 1s ease-in;
}
a:hover { color:red; background:yellow; }

Демо здесь

завивать волосы щипцами
источник
@AndreiCristof: К счастью, работает в IE10, хотя ! Также не требуется префикс вендора (что странно).
Марсель
Я протестировал оба и надеюсь, что нашел правильную причину того, что CSS не так гладко и свободно, как jQuery. Пожалуйста, поправьте меня, если я ошибаюсь.
QMaster
Ты жжешь! Хорошо объяснил, очень помог мне, увидев это.
plast1K
Мой тест с изображением, а не ссылкой.
Фелипе
@FelipeMicaroniLalli лучше всего написать вопрос, я думаю, определенно звучит как проблема синтаксиса.
Марсель
9

Я знаю, что в вопросе, который вы указали «Я предполагаю, что JavaScript используется для создания этого эффекта», но CSS также может быть использован, пример ниже.

CSS

.fancy-link {
   color: #333333;
   text-decoration: none;
   transition: color 0.3s linear;
   -webkit-transition: color 0.3s linear;
   -moz-transition: color 0.3s linear;
}

.fancy-link:hover {
   color: #F44336;
}

HTML

<a class="fancy-link" href="#">My Link</a>

А вот JSFIDDLE для приведенного выше кода!


Марсель в одном из ответов указывает, что вы можете «перенести несколько свойств CSS», вы также можете использовать «все», чтобы применить к элементу все ваши стили: hover, как показано ниже.

CSS

.fancy-link {
   color: #333333;
   text-decoration: none;
   transition: all 0.3s linear;
   -webkit-transition: all 0.3s linear;
   -moz-transition: all 0.3s linear;
}

.fancy-link:hover {
   color: #F44336;
   padding-left: 10px;
}

HTML

<a class="fancy-link" href="#">My Link</a>

А вот JSFIDDLE для примера "все"!

Джейк
источник
6

Вы можете сделать это с JQueryUI:

$('a').mouseenter(function(){
  $(this).animate({
    color: '#ff0000'
  }, 1000);
}).mouseout(function(){
  $(this).animate({
    color: '#000000'
  }, 1000);
});

http://jsfiddle.net/dWCbk/

Никлас Сахлин
источник
для этого вам не нужен jqueryui, просто jquery
Хуан,
6
@Juan Нет, jQuery может анимировать только «единичные числовые значения», а цвета - нет (см. Api.jquery.com/animate/#animation-properties ). Но на самом деле вам не нужна вся библиотека jQueryUI, только плагин jQuery.Color, который встроен в jQueryUI.
Никлас Сахлин
@ Никлас Салин. Я нашел вашу скрипку в поисках CSS-переходов. Ваш переход JQuery-UI намного более плавный, я уверен, что пользователи заметят это.
RubyRube
1
Есть решения с помощью CSS, которые
гораздо
2

Попробуйте это в вашем CSS:

.a {
    transition: color 0.3s ease-in-out;
}
.a {
    color:turquoise;
}
.a:hover {
    color: #454545;
}
Dylan
источник