小ネタ。
daisyUIのアニメーションの無効化ができないか調べたのでメモ。
問題
daisyUIのコンポーネントを使うと、インタラクションの一環としてか、デフォルトでアニメーションが行われる。
ちょっと困ったのが、チェックボックスをReactコンポーネント化して使う際、プロパティとして checked
を渡してあらかじめチェック済みにしても、チェックのアニメーションが流れてしまう。
下記デモページで Preview
と HTML
や JSX
のタブを切り替えると確認できる。
対応
アニメーションを抑制できないかと調べてみると、以下のissueを発見。
クラス名として no-animation
を付与すると、個別にアニメーションを抑制できる。
ボタンのサンプルとしてButton without click animationにも使用されていた。
チェックボックスに付与すると、アニメーションせずにチェックされた状態で表示されるようになった。
clsx
でクラス名を組み立てているので、 className={clsx(..., checked && 'no-animation')}
や className={clsx(..., { 'no-animation': checked })}
のように指定することで、チェック済みならアニメーション無効化、といった制御ができた。
アニメーションを一括で無効化
tailwind.config.js
にて、--animation-btn
や --animation-input
をテーマから指定することで、アニメーションの持続時間を変更できる。
issueに記載があったが、この持続時間を0にすることで、アニメーションを一括で無効化できる模様。
/** @type {import('tailwindcss').Config} */ module.exports = { ... plugins: [require('daisyui')], daisyui: { themes: [ { mytheme: { ... '--animation-input': 0, }, }, ], }, }
振り返り
こういった設定がサクッとできる、いい時代になったなぁ...