CSS3 アニメーションで実現したシンプルでクールな効果。最終的な効果は次のようになります。 ページ構造 (index.html): <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <title>ドキュメント</title> <link rel="スタイルシート" href="style.css"> </head> <本文> <h1>リラックスして呼吸しましょう</h1> <div class="コンテナ"> <div class="circle"></div> <p id="テキスト"></p> <div class="ポインターコンテナ"> <div class="ポインタ"></div> </div> <div class="gradient-circle"></div> </div> <script src="script.js"></script> </本文> </html> スクリプト: 定数コンテナ = document.querySelector('.container'); 定数テキスト = document.querySelector('#text'); 定数合計時間 = 7500; const BreathTime = (totalTime/5)*2; //呼吸時間は3秒 const holdTime = totalTime/5; // ホールド呼吸時間は1.5秒 console.log(呼吸時間); BreathAnimation(); //まずはbreathAnimation関数を実行します function BreathAnimation(){ text.innerHTML = '息を吸う'; container.className = 'container grow'; //拡大効果を実現するためにコンテナにgrowクラスを追加します setTimeout(function(){ text.innerHTML = 'ちょっと待って'; setTimeout(関数(){ text.innerHTML = '息を吐く'; container.className = 'container shrink'; //縮小効果を得るためにコンテナにshrinkクラスを追加します},holdTime) },呼吸時間) } setInterval(breathAnimation,totalTime); //繰り返し実行 スタイル (style.css): *{ マージン: 0; パディング: 0; ボックスのサイズ: 境界線ボックス; } 体{ 背景: url('./img/bg.jpg') 繰り返しなし 中央 中央 /cover; 最小高さ: 100vh; フォントファミリー: Arial、Helvetica、sans-serif; 色: #fff; オーバーフロー: 非表示; ディスプレイ: フレックス; flex-direction: 列; アイテムの位置を中央揃えにします。 コンテンツの中央揃え: 中央; } /*マージンが自動に設定されていることに注意してください*/ 。容器{ 位置: 相対的; 幅: 300ピクセル; 高さ: 300px; ディスプレイ: フレックス; アイテムの位置を中央揃えにします。 コンテンツの中央揃え: 中央; 変換: スケール(1); マージン: 自動; } /* 背景には .container よりわずかに大きいアスペクト比の円錐グラデーションを使用し、z-index を -2 に設定します。これは、.circle の別のレイヤーがあり、最も外側のレイヤーがテキストであるためです。*/ .gradient-circle{ 位置: 絶対; 左: -10px; 上: -10px; 背景:円錐グラデーション( #55b7a4 0%, #4ca493 40%、 #fff 40%、 #fff 60%、 #336d62 60%、 #2a5b52 100% ); 幅: 320ピクセル; 高さ: 320px; 境界線の半径: 50%; Zインデックス: -2; } /z-index は -1 で、中央の黒い円です/ 。丸{ 位置: 絶対; 左: 0; 上: 0; 幅: 300ピクセル; 高さ: 300px; 背景色: #010f1c; 境界線の半径: 50%; Zインデックス: -1; } /*.pointer-container はボールの外側にあるコンテナです。高さは 190 に設定されています。これは、半径が 150、上端が 40 であるためです。この方法では、円の中心を回転し、内側に切り替わることはありません。transform-origin が中央と下にあることに注意してください。*/ .ポインタコンテナ{ 位置: 絶対; 幅: 20px; 高さ: 190ピクセル; 上: -40px; 左: 140px; /* 背景色: 赤; */ transform-origin: 下中央; アニメーション: 7.5 秒間、前方に無限回転します。 } /*小さなボール*/ .ポインタ{ 幅: 20px; 高さ: 20px; 背景色: #fff; 境界線の半径: 50%; } /*ボールを円を描くように回転させる*/ @keyframes 回転{ から{ 変換: 回転(0度); }に{ 変換: 回転(360度); } } .コンテナ.成長{ アニメーション: 3 秒間直線的に前進します。 } .コンテナ.shrink{ アニメーション: 2 秒ずつ前方に縮小します。 } @keyframes が大きくなる{ から{ 変換: スケール(1) }に{ 変換: スケール(1.2); } } @keyframes 縮小{ から{ 変換: スケール(1.2) }に{ 変換: スケール(1); } } .container の margin が auto または特定の値に設定されていない場合、テキストと円が圧縮され、次の効果が発生します。 同時に、.pointer-container に background-color: red; を追加しました。これにより、.pointer-container の高さが 190px に設定されている理由がわかりやすくなります。また、transform-origin が下中央に設定されていない場合は、図にマークされているデフォルトのポイントとして回転しますが、これは必要な効果ではありません。 もう一つの細かい点は、.shrink のアニメーション時間を 2 秒に設定したことです。実際には、js によると、息を吐く時間は 3 秒にする必要がありますが、息を吐くことから息を吸うことまでのバッファ効果を持たせるために、2 秒に設定しました。そうしないと、息を吐くことから息を吸うことまでの遷移がなくなり、突然で醜いものになります。 CSS3+JavaScript でクールなブリージング効果を実現するサンプルコードに関するこの記事はこれで終わりです。CSS3+JavaScript ブリージング効果に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: MySQL の主キーがクエリを高速化するために数値を使用するか UUID を使用するかについての簡単な分析
>>: Vue+elementuiはドロップダウンテーブルの複数選択と検索機能を実現します
1. MySQLソフトウェアをインストールするMySQL 公式 Yum リポジトリ、MySQL バー...
Brotli は、Zopfli よりも 20 ~ 26% 高い圧縮率を実現できる新しいデータ形式です...
序文Linux では、スワップ パーティションとスワップ ファイルの 2 種類のスワップ領域を作成で...
序文面接中、多くの面接官は「keep-alive が何をするのか知っていますか?」と質問する際に V...
前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...
表のキャプションは表の上または下に配置でき、プロパティで調整できます。デフォルトのテーブル タイトル...
この記事の例では、下部のポップアップウィンドウで複数選択を実装するためのVueの具体的なコードを共有...
1. MS SQL Server 2005 --1. ログをクリアするexec('DUMP...
最近の Web サイトでは Https をサポートすることがほぼ標準機能となっており、Nginx は...
OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...
この記事では主に、 list-itemの下にある::master疑似要素、 list-style-i...
JavaScript の if ステートメントで英語のカンマ「,」が表示されることがあります。これは...
クラスターを構成する際に問題が発生しました。当初は 3 台の仮想マシンすべてが外部ネットワークに p...
環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...
序文今日は、デザインパターンのクリエーションパターンを見直していたところ、JS でシングルトンパター...