ブログを更新

Placeholder of missing images.

ついにApple Silicon Mac(Mac mini 2024)を買ったので、 ブログの開発環境を整えるついでにバグフィックスとかをした。

画像比較スライダーが反応しない不具合を修正

↓のような画像比較スライダーを表示したときに、 スライダーをクリックしたりタップしても反応がない不具合を修正した。

Gatsbyで作ったブログのスクリーンショット。トップページ。Gatsbyで作ったブログのスクリーンショット。トップページ。

原因は至極シンプルで、イベントリスナーの書き方を間違えてた。

- window.addEventListener("DOMContentLoaded", () => {
+ document.addEventListener("DOMContentLoaded", () => {
  const cocoenElements = document.querySelectorAll < HTMLElement > ".cocoen";
  for (const cocoenElement of cocoenElements) {
    create(cocoenElement);
  }
});

DOMContentLoaded イベントは document に対して発火するので、 window に対して発火させても意味がない。あほか。

厄介なのは、 window に対して発火させてたのに、 微妙に動いてたところなんだよな。 原因不明。

さよならFont Awesome。こんにちはIconify。

Font Awesome をやめて Iconify にした。

Font Awesomeはさすがの使いやすさなんだけど、無料アカウントで利用制限があるのがイマイチ。 メールの案内を信じるなら10,000 PV/Monthまで無料だけど、これが心許ない。 60%である6,000PVを超えたときのアラートメールが毎月届く状況だった。

もう一点のイマイチポイントは動的にアイコンをロードすること。 JavaScriptでアイコンをロードするので、ページの初期表示が遅くなる。 SSGで生成してるのに、もったいないなって思ってた。

で、代替案を探したら Iconify が見つかった。 これが良い。素晴らしい。

アイコンブラウザ でアイコンが探せる。 Iconify自体がアイコンを作ってるわけではなくて、 アイコンセットの統合検索&利用サービスという位置付けのようだ。

本ブログは Mage Icons が気に入ったので使わせてもらうことに。 これ、Lineの企業ロゴも入ってたので助かった。

また、IconifyはAstroのコンポーネントも提供してくれているので、めっちゃ楽。 ↓のような <Icon> コンポーネントで name 属性を指定するだけで使える。すごい。

<Icon name="mage:arrow-up-right-circle" size="1.25em" />

ちなみに、SVGデータはHTMLへインラインで埋め込まれるようだ。 シンプルな実装だ。 ただ、同じアイコンを使い回す場合でも、 常にSVGがインラインで埋め込まれるので、ちょっと無駄があるかも。