LoginSignup
1
0

More than 1 year has passed since last update.

Mode X ⇔ Mode Y みたいなボタンを並べたUIの間に何かこうピカピカする矢印のアニメーションを入れたいな、と思って書いた HTML+SCSS+JS の例

Posted at

つまりこういうUIの矢印のところ

a.gif

CodePen

See the Pen Untitled by Usagi Ito (@usagi-network) on CodePen.

実装の要

この手の「背景スクロール」はタテなりヨコなりのスクロールを伴ったシューティングゲームやRPGのマップチップ、あるいはGoogle Mapsや地理院地図のタイルデータ、あの手のスクロール技術の原理的な部分が大昔から使われ続けています💪 ゲームの背景や地図タイルだと気が付きやすいですが、今回のように文字が対象だと思いつくまでに少し頭をひねる事になりますね。

※矢印は文字なのか?⇨今回はGoogle Font/Material Iconsを使っていますが、使わずに あるいはUNICODE絵文字でも同様です。💡

  • -webkit-background-clip: text -webkit-text-fill-color: transparent を使うと文字をステンシルにして透かした background を表示できる。(background-clipは標準化されているけど標準版の挙動ではこの実装を書いた時点のChrome-105で期待動作しなかったため -webkit 版を使用しています。)
  • background-size background-position で背景は比較的柔軟かつ簡単に広げたり見せる位置を調整したりしやすい。
  • と、いうわけで後は CSS Animation で比較的かんたんにできちゃいます。

おまけ: :has があれば .js なしでも・・・?

⇧は<button>:hover(≈onpointerenter&onpointerleave) 制御は .js で書きましたが、 :has 疑似セレクターが Chrome の通常リリースチャンネルに降ってきた今ではたぶん今回のようなHTML構造でも子要素に:hoverを持った親要素(:has(:hover))がどうしたこうしたで辿れば .js なしでもたぶん実装できる。たぶん。

そう思って書いてみたけど何故か片方しか発動しないのでとりあえず stackoverflow してみました👀

参考

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