当サイトは、アフィリエイト広告を利用しています
emotionでtransitionを使ってみる
Emotionの基本的な使い方は下記記事で紹介してます
cssにtransitionを設定することでcssの切り替えによる画面項目の変化を
アニメーション的にすることができる。
transitionでは4つのプロパティを設定する
アニメーションを適用するプロパティを設定する。
下記の場合、hover時に
が変化するが「transition-property: background」としているため
アニメーションはbackground-colorにしか適応されない。
全てに適応した場合ばallにする
アニメーション開始から終了までの時間を設定する。
長く設定すると全然終わらない...
アニメーション開始までの時間
アニメーションが開始され終了するまでにおける変化の進行度合い
などがある。
transition-timing-function
transitionを使ったサンプルを実装してみる
/** @jsxImportSource @emotion/react */import { css } from "@emotion/react";export default function App() {return (<div css={[container]}><button css={[tag]}>サンプル</button></div>);}const tag = () => [css`background-color: skyblue;/* transitionの設定 */transition-property: background;transition-duration: 0.5s;transition-delay: 0s;transition-timing-function: ease-in;/* hover時の設定 */&:hover {background-color: darkblue;color: white;}`];const container = ()=>[css`height:100vh;display:flex;justify-content:center;align-items:center;`]
transitionでは:hoverや:activeなどのトリガーが必要になる。
逆にいうとhoverなどによって画面項目のデザインが変化するまでの間を
transitionで設定するようなイメージ。
transformと組み合わせることもできる
/** @jsxImportSource @emotion/react */import { css } from "@emotion/react";export default function App() {return (<div css={[container]}><button css={[tag]}>サンプル</button></div>);}const tag = () => [css`background-color: transform;/* transitionの設定 */transition-property: transform;transition-duration: 0.5s;transition-delay: 0s;transition-timing-function: ease-in;/* hover時の設定 */&:hover {/* 縮小する */transform:scale(0.5);}`];const container = () => [css`height: 100vh;display: flex;justify-content: center;align-items: center;`];
transition:~で一括で4つのプロパティを設定することができる。
左から
で設定する
const tag = () => [css`background-color: skyblue;/* transitionの設定(省略形) */transition:background 1s 0s ease-in;/* hover時の設定 */&:hover {background-color: darkblue;color: white;}`];