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


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;
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.