링크 호버에 페이드 효과?


134

http://www.clearleft.com 과 같은 많은 사이트 에서 링크를 가리키면 기본 동작 인 즉시 전환하는 것과 달리 다른 색상으로 페이드 인됩니다.

JavaScript를 사용 하여이 효과를내는 것으로 가정합니다. 아는 사람이 있습니까?


1
감사합니다. 이제 호버 링크를 만드는 방법을 이해했습니다. 호버 링크에 대해보다 부드러운 효과를 만드는 방법을 알아 내려고합니다.
Miles Henrichs

답변:


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에서도 작동합니다 ! 공급 업체 접두사도 필요하지 않습니다 (이상합니다).
Marcel

나는 둘 다 테스트했으며 CSS 방식이 jQuery 방식만큼 부드럽고 유창하지 않은 올바른 이유를 찾았 으면 좋겠다. 내가 틀렸다면 정정 해주세요.
QMaster

당신은 바위! 잘 설명하면 그것을 보면서 많은 도움이되었습니다.
plast1K

내 테스트는 링크가 아닌 이미지를 사용합니다.
Felipe

@FelipeMicaroniLalli 내가 생각하는 질문을 게시하는 것이 가장 좋습니다. 구문 문제처럼 들립니다.
Marcel

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 이 있습니다!


답변 중 하나에 Marcel은 "여러 CSS 속성을 전환"할 수 있다고 지적하고 "all"을 사용하여 아래처럼 모든 : 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>

그리고 "all"예제를위한 JSFIDDLE 이 있습니다!


6

JQueryUI를 사용하여이를 수행 할 수 있습니다.

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

http://jsfiddle.net/dWCbk/


jqueryui가 필요하지 않습니다. jquery
Juan

6
@Juan 아니요, jQuery는 색상이 아닌 "단일 숫자 값"에만 애니메이션을 적용 할 수 있습니다 ( api.jquery.com/animate/#animation-properties 참조 ). 그러나 실제로 전체 jQueryUI 라이브러리가 필요하지 않고 jQuery.Color 플러그인 만 있으면 jQueryUI에 포함됩니다.
Niclas Sahlin

@ 니클라스 살린 바이올린에서 CSS 전환을 검색하는 것을 발견했습니다. JQuery-UI 전환이 훨씬 매끄 럽습니다. 사용자가이를 알게 될 것입니다.
RubyRube

1
CSS가있는 솔루션이 있습니다. 구현하기가 더 쉽습니다.
mhenkel

2

CSS에서 이것을 시도하십시오 :

.a {
    transition: color 0.3s ease-in-out;
}
.a {
    color:turquoise;
}
.a:hover {
    color: #454545;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.