Исчезает ли эффект при наведении ссылки? - PullRequest
128 голосов
/ 15 мая 2011

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

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

Ответы [ 4 ]

316 голосов
/ 15 мая 2011

В настоящее время люди просто используют переходы 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; }

Демонстрация здесь

8 голосов
/ 28 июня 2013

Я знаю, в ответе на вопрос «Я предполагаю, что для создания этого эффекта используется 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 голосов
/ 15 мая 2011

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

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

http://jsfiddle.net/dWCbk/

2 голосов
/ 11 ноября 2015

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

.a {
    transition: color 0.3s ease-in-out;
}
.a {
    color:turquoise;
}
.a:hover {
    color: #454545;
}
...