リンクホバーのフェード効果?


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、2014年

あなたはロック!よく説明されて、それを見て私をたくさん助けてくれました。
plast1K 2014年

私のテストは、リンクではなく画像を使用しています。
フェリペ

@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です!


回答の1つにある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>

そして、これが「すべて」の例の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ライブラリ全体は必要ありません。たまたまjQueryUIに埋め込まれているjQuery.Colorプラグインだけが必要です。
Niclas Sahlin、2014

@ニクラスサーリン。CSSトランジションを検索するフィドルを見つけました。JQuery-UIの移行が非常にスムーズになり、ユーザーがそれに気付くと思います。
RubyRube

1
CSSを使用したソリューションがあります。これは実装がはるかに簡単です
メンケル

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.