LoginSignup
22
22

More than 5 years have passed since last update.

[jQuery]hoverでfadeInさせると1pxずれる現象の対策

Posted at

hoverでfadeInさせると1pxずれる現象の対策です(ちなみにChromeでした)。hoverすると1pxずれる現象自体は割とよくあるみたいで、ブラウザによって対処方法が違います。

Chromeの場合

display: inline-block; を使う

要素に display: inline-block; の記述を追加したら、マウスオーバー時にズレが発生しなくなります。

backface-visibility: hidden; を使う

要素に backface-visibility: hidden; の記述を追加します。

Firefoxの場合

backgroundの指定を追記

以下を追記

background: #背景色カラー;

IEの場合

以下を追記

display: inline-block;
zoom: 1;

jQueryのfadeInを使っている場合

僕の場合、上記のものをすべてを試してもうまく行きませんでした。条件は、

  • fadeInをつかっていた。
  • css的に、display:table;でないとだめな箇所で、display:inline-block;が使えなかった。
  • transitionをつかっていた。
  • ブラウザはChrome。

で、fadeInをつかうことで、displayに変化が起こっているのかも、とおもったので、以下のように変えてみました。

$(function($){
  $("xxx").hover(function(){    

    $(this).find("yyy")
      .css({'visibility':'visible'}) // displayではなくvisibilityをつかう
      .animate({opacity: 1}, 200); // visibilityを出したあとにopacityを変化

},function(){

    $(this).find("yyy")
      .animate({opacity: 0}, 200) // 戻すときは逆
      .css({'visibility':'hidden'});

  })
});

結果直りました。displayがひとつのキーっぽいです。詳しい人教えてください。

22
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22