LoginSignup
1
1

More than 3 years have passed since last update.

<CSS>疑似要素にtransitionがかかっているとブラウザバッグでスタイルが崩れる可能性がある

Last updated at Posted at 2019-07-11
発生したブラウザ: chrome
対象: CSS3の疑似要素

課題

PC

style.css
.pageContent.top .secondaryBlock__btnList li:after {
    content: "";
    display: block;
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    transition: all 0.3s ease-out;
    z-index: 1;
}
.elem:hover:after {
    transform: scale(1.15);
}
.elem:nth-child(1):after {
    background: url("img-pc.png") no-repeat center center/contain;
}

SP

style.css
/* ========================================
            styles for tablet & SP
======================================== */
@media screen and (max-width: 768px) {
.elem:after {
    content: "";
    display: block;
    width: 100px;
    height: 100px;
    z-index: 3;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    pointer-events: none;
}
.elem:hover:after {
    transform: scale(1) translateY(-50%)
}
.elem:nth-child(1):after {
    background-image: url("img-sp.jpg");
}
}

PCのときはhoverのときtransitionでエフェクトを付けていましたが、SP時はhover時の動きはありません。

読み込み時はスタイル崩れはありませんでした。

しかし!!!

ブラウザバッグをするとPCの背景画像とスタイルになっているのです。
SPの画像は確かに読み込まれているし、スタイルも認識しているのになぜ?

デベロッパーツールでなにか1つプロパティに変更をかける(チェックを外したり数値を変えたりする)と、SP用スタイルに切り替わる不思議減少。。。

20分くらい悩みました。。

解決策

SP

style.css
/* ========================================
            styles for tablet & SP
======================================== */
@media screen and (max-width: 768px) {
.elem:after {
    content: "";
    display: block;
    width: 100px;
    height: 100px;
    z-index: 3;
    top: 50%;
    left: 0;
    transition: none; // 追加しました
    transform: translateY(-50%);
    pointer-events: none;
}
.elem:hover:after {
    transform: scale(1) translateY(-50%)
}
.elem:nth-child(1):after {
    background-image: url("img-sp.jpg");
}
}

答えは単純transition: none;をSPのスタイルに追加するだけです。

hover用のアニメーションをちゃんと切ってあげるだけ。

こんなバグもあるんだなあ。と、しみじみしました。

1
1
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
1
1