光るボタンの作り方と
ボタンに border-rasius を指定したときの注意点について
お伝えします!
光るボタンの作り方
See the Pen Untitled by mothihuku (@mothi002) on CodePen.
この光るボタンは ryohei さんのサイトを参考にしています。
アイコン用のクラスを後からつけやすくするために、
擬似要素ではなく、span を子要素にいれて、それを光らせてます。
アイコンの用のクラスって、なんか擬似要素を使っているイメージがあるので。。。
アイコンをつける必要がないなら、
擬似の方で光らせたほうがいいのかなと思います。
See the Pen Untitled by mothihuku (@mothi002) on CodePen.
アイコン用のクラスを追加してます。span を使ったので、before、 after どちらも使えます。
border-radius をつけたときの注意点
ボタンに border-radius をつけ、子要素(もしくは、擬似要素)の光をはみ出せないために
overflow:hidden; を指定すると、
本来なら、ボタンに沿って光るはずのところを
safari では、なぜか border-radius で丸みを帯びた部分だけ overflow:hidden; が適用されず
光がボタンからはみ出ているように見えてしまいます。
枠線とボタンの隙間部分に光がはみ出してしまいます。
背景が白ければ、光も白っぽいので、特に何も気にならないのですが、
背景が黒かったりすると、はみ出て目立ちます。
解決策は、下記のサイトが参考になりました。
難しいことが書かれていたりしますが、上記のサイトによると、
この現象はバグのようで、解決策が用意されているみたいです。
- ボタンに isolation: isolate; を指定する。
- position(static以外なら何でも) と z-index の指定する。
これは、ボタンか子要素のどちらかにつけると解決しました。 - ボタンに transform: translateZ(0); を指定する。
これのうち、どれか一つ指定すると解決するみたいです。
今回はここまでになります。
最後まで見てくださりありがとうございました!
この記事がお役に立てばうれしいです!