1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

react-card-flipでカードを裏返したときに表側が透けるバグの修正

Posted at

react-card-flipというライブラリを使ったときに発生したバグを修正した記録です。

react-card-flipとは

要素を裏返すためのアニメーションをつけられるライブラリ。

発生したバグ

カードを裏返したときに、表側の内容が透けて(反転されて)表示されてしまう。
card-flip.gif
(バグを再現したgif。本来は、カードをひっくり返したときに「裏側」と書かれた面がこちらに向くようにしたい。)

バグの発生条件

調査の結果、このバグは「safariを使用している」かつ「カード内でスクロールが発生する場合」に発生することが分かった。

修正方法

backface-visibility: hidden; というCSSのプロパティがあるため、これをカードの表側のコンポーネントに適用させる。これは、要素が裏側を向いたときにその要素を表示するかどうかを決めるプロパティだ。

カード内がテキストのみである場合は、このプロパティを追加するだけで修正される。はず。
card-flip-2.gif
(backface-visibility: hidden; 追加後のgif)

さらにハマった

私が実際に作成したカードは、カードの上部7割にスクロールできるテキストが表示されていて、下部3割にはreactのsvgコンポーネントで作成した図形が表示されていた。

backface-visibility: hidden;をカードコンポーネントに追加してみると、テキストスクロール部分は表示されなくなったが、svgの部分は消えずに残っていた。

次に、カードコンポーネントだけではなく、svgコンポーネントに対してもこのプロパティを追加してみた。すると、iOSの方では表示されなくなった(正しく表示されるようになった)が、macのsafariでは消えずに残っていた。

色々と試行錯誤した結果、backface-visibility: hidden; と同時に
transform: translate3d(0, 0, 0);
を適用すれば正しく表示されることが分かった。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?