質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

1437閲覧

回転アニメーション付き3D多面バナー

i0k62

総合スコア3

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/07/20 07:52

いつも知恵をお貸しくださって有り難うございます!

今回は「cssでアニメーションする多面バナー」の実装を試みています
▼テスト中の現状URL▼
http://strike.moo.jp/test.html

上記URLを見ていただくと、4色(4面)の画像がrotateXでくるくる縦に回転していると思います

これを、
●各面3秒ごと停止させたい●

というのが実現させたい内容なのですが、出来ておりません
もしかしたら一面ごとにアニメーションを指定すればできるのかな?と漠然と思っているのですが
書き方がわからずリサーチ中です

html

1<div class="css-cube"> 2<div class="css-face css-forward"><a href="#"><img src="1.jpg" alt="1"></a></div> 3<div class="css-face css-reverse"><a href="#"><img src="2.jpg" alt="2"></a></div> 4<div class="css-face css-top"><a href="#"><img src="3.jpg" alt="3"></a></div> 5<div class="css-face css-bottom"><a href="#"><img src="4.jpg" alt="4"></a></div> 6</div>

css

1/*ローテートXループバナーテスト*/ 2 3.css-cube { /* 立体の大きさ傾きの指定 */ 4 width: 550px; 5 height: 100px; 6 margin: 5%; 7 transform-style: preserve-3d; /* 3Dで表示 */ 8 display : inline-block; 9 animation: cubeAnime 5s 3s cubic-bezier(0,0,0,1) infinite; /* 動きの指定 */ 10} 11 12@keyframes cubeAnime{ /* 回転方向の指定 */ 13 0% { transform: rotateX(0deg) ;} 14 30% { transform: rotateX(90deg) ;} 15 55% { transform: rotateX(180deg) ;} 16 75% { transform: rotateX(270deg) ;} 17 100% { transform: rotateX(360deg) ;} 18} 19 20.css-face { /* 各面の指定 */ 21 position: absolute; 22 width: 550px; 23 height: 150px; 24} 25 26 27.css-forward { /* 前面の指定 */ 28 transform: translateZ(75px); 29} 30.css-reverse { /* 後面の指定 */ 31 transform: rotateY(180deg) translateZ(75px); 32} 33 34.css-top { /* 上面の指定 */ 35 transform: rotateX(90deg) translateZ(75px); 36} 37.css-bottom { /* 下面の指定 */ 38 transform: rotateX(-90deg) translateZ(75px); 39} 40 41 42 43

以下やってみたこと

animation: cubeAnime 5s 3s cubic-bezier(0,0,0,1) infinite;

上記アニメーションの設定で「3s」の追加やcubic-bezierなどは調べてやってみたことです
最初の1面に一回きりしか適用になっておらず他の記述を模索しています

ご覧になってる方のお手間にならない範囲で構いませんので、ヒントだけでも頂けると非常に助かります!
何卒宜しくお願い致します

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ご自身で試されているとの事ですので
とりあえずヒントを^^;

+++++++++++++++++++++++++++++++++

3Dの回転を作る場合、

▼ 立体各面の配置方法によって多少変わりますが基本的に

  1. 子要素に「rotateX」と「translateY」「translateX」を使って四角の立体を作る

  2. 親要素が回転軸になるように、子要素にtranslateZをかけ、立体の中央を親要素(平面)が横切るようにする

▼ 立体と回転軸が出来てから

  1. 親要素にアニメーション設定 ( 回転させるのは親要素だけです^^ )

  2. 希望のタイミングで回転するようキーフレームを設定

この4つを個別に、順番に処理してみて下さい

ポイント ++++++++++++++++

● 回転させるときは親要素と子要素のサイズを一緒にする
(位置設定までは親が大きい方が分かりやすいので違っていてもOKですが、
サイズが違うと回転軸がずれるのでアニメを実装する段階で統一させます)

● キーフレームはcubic-bezierを使わなくても、animation-play-state の pausedとrunningを組み合わせれば1面づつ止める表現も可能

+++++++++++++++++++++++++++++++++

こんな感じでしょうか^^

投稿2020/07/20 17:31

編集2020/07/21 03:51
-millmill-

総合スコア676

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問