Safariで要素を回転させた際に表示されるアウトラインをどうにかする

文字で説明するとわかりにくいですが、画像を見ればすぐにわかる内容だと思います。

前提と実現したいこと

  • detailsタグ内のsummaryに擬似要素で開閉を示すアイコンを設定
  • 開いた際に開閉アイコンをcssrotateで回転させる

上記前提で下記の問題が起こります。

アウトラインが変化する
アウトラインが変化する
  • Safariで閲覧時、アイコンが回転するとアウトラインが変化し、アイコン右下に出っ張りができる

今回はこの問題に対する対応策のメモです。

対応策1

  • summaryoverflow:hidden;を設定する

最も簡単な方法だと思いますが、hiddenを使うと都合が悪い装飾が設定されている場合には使えません。

対応策2

  • 擬似要素をやめてimgタグで実装
  • imgタグを包含するタグを作る

回転させる対象をimgタグとし、そのimgタグをdivspanで囲むと解消できました。

仮に解消できな場合でも、imgタグを囲んだタグにhiddenを設定すれば解消できると思います。

そもそもこの出っ張りはなんなのか?

結論から言うと、調査しても答えにたどり着いていません。そこで調べたことをメモ的に。

  • cssoutlineを設定すると消える
  • 出っ張りを形成するボックスのサイズは、回転させる要素のサイズと同じ
  • transform-originを変更しても変化はない
  • 確認した範囲では他の要素に影響を与えていない

結び

作り方によっては全く発生しないため気付くことがない場合が多いですが、遭遇すると時間を取られる事柄でした。

1人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄