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

CSSアニメーションでカードをくるくる回す

$
0
0
いにしえのテーブルレイアウト時代からWebサイト制作に関わっていた身からすると、表現力豊かになったCSSは楽しい。 楽しいけど、実際さほど使う機会がなかったりする。 たまたま使う機会があったので、忘れないように自分メモ。 確認環境 macOS Catalina(10.15.7) Firefox(90.0.2) Safari(14.1.2) Chrome(92.0.4515.131) Windows10[Parallels Desktop] Chrome(92.0.4515.131) Edge(92.0.902.67) iPhone safari(605.1.15, iOS 14.7.1) safari(604.1, iOS 15.0 beta4) Android Chrome(91.0.4472.120, Android 8.0.0) Chrome(92.0.4515.131, Android 11) トランプカードをくるくる回したい Javascriptを使わずにぐるぐる回したい。 404とかのエラー画面にも使いたいので、理想はエンドレスでぐるんぐるん回って欲しい。 まずは、マウスオーバーでくるんと回るものから試してみる。 用意するもの トランプカードの表画像 トランプカードの裏画像 トランプカードをくるくる回したい - マウスオーバーで回す マウスが重なるとカードをくるっと回したい。これは結構簡単。 See the Pen Playing Card Click to Flip by Mari Takahashi (@mrd-takahashi) on CodePen. transformプロパティ CSS .stage { position: relative; padding-top: 2rem; margin: 0 auto; width: 11.25rem; height: 20rem; transform: rotateZ(10deg); } 水平ではなく、ちょっと斜めにしておきたいので、transform: rotateZ(10deg);と指定。 degはdegree(度)の略なので、Z軸に10度傾けています。 値 2D(X,Y軸) 3D(X,Y,Z軸) 説明 translate ○ ○ 移動 rotate ○ ○ 移動 scale ○ ○ サイズ skew ○ 傾斜 transform-style・transitionプロパティ CSS .stage_cardImage { position: relative; transform-style: preserve-3d; transition: all 1s ease-in-out; } transform-styleプロパティ 初期値は2D(flat)のため、奥行きがある3D(preserve-3d)表現をしたい場合は親要素に追加。 今回はカードの親要素.stage_cardImageにpreserve-3dを指定。 transitionプロパティ アニメーション方法を指定する。ショートハンドで書いているのでリスト化。 プロパティ 説明 値 今回設定 transition-property 変化を適用するプロパティの指定 all=全て適用(初期値)none=適用しない[プロパティ名]=プロパティ名をカンマ区切りで指定 all transition-duration 1回当たりの時間 [数字]s=秒[数字]ms=ミリ秒 1s transition-timing-function アニメーションの加減速 別項 ease-in-out transition-delay 開始までの時間 [数字]s=秒[数字]ms=ミリ秒 backface-visibilityプロパティとsafari用の対応 CSS .stage_cardImage div { position: absolute; width: 100%; height: 100%; text-align: center; -webkit-backface-visibility: hidden; backface-visibility: hidden; } 要素が裏返しになった時、backface-visibilityで可視(visible)・不可視(hidden)を指定します。 ほとんどのブラウザは対応済みですが、safariのみプレフィックスが必要(2021/08/13現在)。 これを追加しないとアニメーションがガタつきます。 参考:"backface-visibility" | Can I use... Support tables for HTML5, CSS3, etc 今回は裏面を別に用意しているのでhiddenで不可視にします。 マウスオーバー時に回すためのtransformプロパティ CSS .stage_cardImage_back { transform: rotateY( 180deg ); } .stage_cardImage:hover { transform: rotateY( 180deg ); cursor: pointer; } マウスオーバーした時に、意図通りにアニメーションさせるために必要な設定。 カードは表からスタートしたいので.stage_cardImage_backはrotateY( 180deg )にします。 裏からスタートしたい場合はrotateY( 0deg )にします。 この辺りは、いろいろ数値変えると面白いものできるかも。 タッチデバイス(スマホ・タブレット)用の対応 HTML<div class="stage_cardImage" ontouchstart="">のontouchstart=""はタッチデバイス(スマホやタブレット)用の対応。 マウスオーバーでアニメーションするので、CSSでは.stage_cardImage:hover {…}という記述になっている。当然、タッチデバイスでは無効。 そこでontouchstart属性を指定してあげると、:hoverやactiveの設定が有効になります。 今回は親要素に設定しましたが、<body>タグに追加すればページ全体で有効にできます。 そのため、タッチデバイスでは、カードに触れると回転します。 トランプカードをくるくる回したい - エンドレスで回す そもそも404などのエラー画面で使いたいので、勝手にくるくる回っているのが理想。 そのため、CSSをちょっと改造する。 See the Pen Playing Card CSS Animation by Mari Takahashi (@mrd-takahashi) on CodePen. keyframesとanimetion 自動でくるくる回って欲しいので、キーフレームを利用しよう。 CSS .stage_cardImage { animation: animation-cardImage 3s ease-in-out infinite alternate; } @keyframes animation-cardImage { 0% {transform: rotateY(0deg);} 100% {transform: rotateY(360deg);} } .stage_cardImage_back { transform: rotateY( 180deg ); } animationプロパティ ショートハンドで書いているのでリスト化。 プロパティ 説明 値 今回設定 animation-name アニメーションの名前 任意 animation-cardImage animation-duration 1回当たりの時間 [数字]s=秒[数字]ms=ミリ秒 3s animation-timing-function アニメーションの加減速 別項 ease-in-out animation-delay 開始までの時間 [数字]s=秒[数字]ms=ミリ秒 animation-iteration-count 繰り返す回数 [数字]=再生回数infinite=無限 infinite animation-direction アニメーションの向き normal=同じ方向(初期値)alternate=偶数回は逆方向 alternate animation-fill-mode 開始前と終了後の状態 none=なし(初期値)forwards=元の状態に戻らない(100%)backwards=元の状態に戻る(0%)both=forwardsとbackwardsの両方 animation-play-state 再生と停止 running=再生(初期値)paused=停止 アニメーションの加減速 アニメーションの加減速を設定する値。 値 説明 cubic-bezier値 ease 開始と完了を滑らかにする(初期値) cubic-bezier(0.25, 0.1, 0.25, 1.0) linear 一定 cubic-bezier(0.0, 0.0, 1.0, 1.0) ease-in ゆっくり始まる cubic-bezier(0.42, 0, 1.0, 1.0) ease-out ゆっくり終わる cubic-bezier(0, 0, 0.58, 1.0) ease-in-out ゆっくり始まりゆっくり終わる cubic-bezier(0.42, 0, 0.58, 1.0) cubic-bezier 3次ベジェ曲線のP1とP2を (x1, y1, x2, y2)で数値で指定 イラレで作図する際、「ベジェ曲線」には非常にお世話になってるんですが、数学の素養が必要なcubic-bezierは無視しますwww 無理www 参考サイト 初学者の場合、いちからCSSを書こうとするとかなり辛い。 一般的なアニメーション実装を参考にしつつ、そこから改造していくほうが理解しやすい。 さらに定着・発展させるには、まとめ記事を書くのが良いと個人的には思います。 CSSアニメーション animation | Can I use... Support tables for HTML5, CSS3, etc CSSで、3D空間で回転するカードをつくる | ブランディング、Web戦略、ホームページ制作は東京都品川区五反田のアッタデザイン|ATTAdesign [CSS]コピペで簡単に使える、パネルの表と裏をくるっと水平・垂直にひっくり返すスタイルシート -CSS Flip Boards | コリス [CSS]カードをぺろっと裏返すエフェクトを実装するスタイルシート | コリス 簡単CSSアニメーション&デザイン20選(ソースコードと解説付き) | knowledge / baigie その他

Viewing all articles
Browse latest Browse all 8929

Trending Articles



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