Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8767

【tailwind css】 実装例で学ぶシンプルなアニメーション

$
0
0
はじめに tailwind cssでアニメーションを学び始める際、拡大・移動などごくごくシンプルなアニメーションの実装例がなかったので、記事にまとめてみました。 この記事では、以下の実装を紹介しています。 拡大 繰り返さない 実行時間を変える 左右に移動 もっと小刻みに移動 回転 色を変える 組み合わせる 実行環境 next.js: version 11.0 react: version 17.0 tailwindcss: version 2.2 サンプルソース GitHub アニメーションの実装例 拡大 scaleを使うと要素が拡大します。 tailwind.config.js module.exports = { theme: { extend: { animation: { scale: 'scale 3s ease-in-out infinite', }, keyframes: { scale: { '0%': { transform: 'scale(1.0)' }, '100%': { transform: 'scale(3.0)' }, }, } } } } index.js export default function Home() { return ( <div> <div className="flex items-center justify-center w-full min-h-screen bg-gray-200"> <div className="w-20 h-20 bg-red-500 animate-scale"></div> </div> </div> ) } 繰り返さない infiniteを指定すると無限に繰り返します。 もし1度だけ実行する場合は、infiniteの指定を削除します。 tailwind.config.js module.exports = { theme: { extend: { animation: { scale: 'scale 3s ease-in-out', }, keyframes: { scale: { '0%': { transform: 'scale(1.0)' }, '100%': { transform: 'scale(3.0)' }, }, } } } } index.js export default function Home() { return ( <div> <div className="flex items-center justify-center w-full min-h-screen bg-gray-200"> <div className="w-20 h-20 bg-red-500 animate-scale"></div> </div> </div> ) } 実行時間を変える 時間は、秒単位で指定します。 もしアニメの時間を3秒から10秒にする場合は、animationの指定を3s → 10sに変更します。 tailwind.config.js module.exports = { theme: { extend: { animation: { scale: 'scale 10s ease-in-out', }, keyframes: { scale: { '0%': { transform: 'scale(1.0)' }, '100%': { transform: 'scale(3.0)' }, }, } } } } index.js export default function Home() { return ( <div> <div className="flex items-center justify-center w-full min-h-screen bg-gray-200"> <div className="w-20 h-20 bg-red-500 animate-scale"></div> </div> </div> ) } 左右に移動 translateX()を使うと左右に移動します。 tailwind.config.js module.exports = { theme: { extend: { animation: { move: 'move 3s ease-in-out infinite', }, keyframes: { move: { '0%': { transform: 'translateX(0px)' }, '20%': { transform: 'translateX(50px)' }, '40%': { transform: 'translateX(-50px)' }, '60%': { transform: 'translateX(50px)' }, '80%': { transform: 'translateX(-50px)' }, '100%': { transform: 'translateX(0px)' }, }, } } } } index.js export default function Home() { return ( <div> <div className="flex items-center justify-center w-full min-h-screen bg-gray-200"> <div className="w-20 h-20 bg-red-500 animate-move"></div> </div> </div> ) } もし縦に移動する場合は、translateX()を指定します。 もっと小刻みに左右に移動 キーフレームを増やすほど動きが小刻みになります。 tailwind.config.js module.exports = { theme: { extend: { animation: { move: 'move 3s ease-in-out infinite', }, keyframes: { move: { '0%': { transform: 'translateX(0px)' }, '10%': { transform: 'translateX(50px)' }, '20%': { transform: 'translateX(-50px)' }, '30%': { transform: 'translateX(50px)' }, '40%': { transform: 'translateX(-50px)' }, '50%': { transform: 'translateX(50px)' }, '60%': { transform: 'translateX(-50px)' }, '70%': { transform: 'translateX(50px)' }, '80%': { transform: 'translateX(-50px)' }, '90%': { transform: 'translateX(50px)' }, '100%': { transform: 'translateX(0px)' }, }, } } } } index.js export default function Home() { return ( <div> <div className="flex items-center justify-center w-full min-h-screen bg-gray-200"> <div className="w-20 h-20 bg-red-500 animate-move"></div> </div> </div> ) } 回転 回転させるときは、rotateを使います。 tailwind.config.js module.exports = { theme: { extend: { animation: { rotate: 'rotate 3s ease-in-out infinite', }, keyframes: { rotate: { '0%': { transform: 'rotate(0deg)' }, '25%': { transform: 'rotate(120deg)' }, '50%': { transform: 'rotate(0deg)' }, '75%': { transform: 'rotate(-120deg)' }, '100%': { transform: 'rotate(0deg)' }, }, } } } } index.js export default function Home() { return ( <div> <div className="flex items-center justify-center w-full min-h-screen bg-gray-200"> <div className="w-20 h-20 bg-red-500 animate-rotate"></div> </div> </div> ) } 色を変える 色は、backgroundで指定します。 tailwind.config.js module.exports = { theme: { extend: { animation: { color: 'color 3s ease-in-out infinite', }, keyframes: { color: { '0%': { background: 'white' }, '100%': { background: 'black' }, }, } } } } index.js export default function Home() { return ( <div> <div className="flex items-center justify-center w-full min-h-screen bg-gray-200"> <div className="w-20 h-20 bg-red-500 animate-color"></div> </div> </div> ) } 組み合わせる 例ではスケールと色を組み合わせています。 複数の要素を組み合わせる場合は、keyframeにカンマで区切って登録します。 tailwind.config.js module.exports = { theme: { extend: { animation: { combo: 'color 3s ease-in-out infinite', }, keyframes: { combo: { '0%': { transform: 'scale(1.0)', background: 'white' }, '100%': { transform: 'scale(3.0)', background: 'black' }, }, } } } } index.js export default function Home() { return ( <div> <div className="flex items-center justify-center w-full min-h-screen bg-gray-200"> <div className="w-20 h-20 bg-red-500 animate-combo"></div> </div> </div> ) } 参考 アニメーション Tailwind CSS

Viewing all articles
Browse latest Browse all 8767

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>