序文 こういう特殊効果ってよく見かけますよね。すごくかっこいいですよね。 これは、Google では、 アイデア 実際、これはアニメーションであり、完全な円が小さいものから大きいものへと成長します。これは サンプルコード @keyframes リップル{ から { 変換: スケール(0); 不透明度: 1; } に { 変換: スケール(1); 不透明度: 0; } } サンプルコード var btn = document.getElementById('btn'); btn.addeventlistener('click',function(){ addClass(btn,'アニメーション') }、間違い) btn.addeventlistener('transitionend',function(){//CSS3 アニメーションの終了をリッスンします。removeClass(btn,'animate') }、間違い) では、CSS を通じてアニメーションをトリガーするにはどうすればよいでしょうか? CSS実装
多くの場合、ページ上の効果は まずは試してみましょう。 構造 これは私たちが書いたページの構造とスタイルです <スタイル> .btn{ 表示: ブロック; 幅: 300ピクセル; アウトライン: 0; オーバーフロー: 非表示; 位置: 相対的; 遷移: .3秒; カーソル: ポインタ; ユーザー選択: なし; 高さ: 100px; テキスト配置: 中央; 行の高さ: 100px; フォントサイズ: 50px; 背景:トマト; 色: #fff; 境界線の半径: 10px; } </スタイル> <a class="btn">ボタン</a> 非常にシンプルで、普通のボタンスタイルです 次に、ボタンに必要な完全な円を追加します。 これを実現するために疑似要素を使用します .btn:後{ コンテンツ: ''; 位置: 絶対; 幅: 100%; パディング上部: 100%; 背景: 透明; 境界線の半径: 50%; 左: 50%; 上位: 50%; 変換: translate(-50%,-50%) } 上に 次に、スケーリングアニメーションを作成します @keyframes リップル{ から { 変換: translate(-50%,-50%) スケール(0); /** 変換属性はデフォルトで記述されているので、ここで translate(-50%,-50%) を追加する必要があります。そうしないと、置き換えられてしまいます**/ 背景: rgba(0,0,0,.25); } に { 変換: translate(-50%,-50%) スケール(1); 背景: 透明; } } ホバー小さなインタラクティブ体験 マウスをかざしてみますか? .btn:hover:after{ アニメーション: リップル 1 秒; } 効果は良いのですが、マウスを速く動かしすぎると、拡大した円がすぐに縮小してしまうので、少し不安定です。 しかし、これは私たちが望んでいる効果ではありません。私たちが望んでいるのは、単にそこに置いて二度とトリガーされないようにするのではなく、クリックごとに 1 回トリガーされることです。 アクティブトライ 日常業務では、 .btn:active:after{ アニメーション: リップル 1 秒; } 効果も不十分で、マウスを押したままにしているのと少し似ていて、完全にトリガーするにはマウスを押したままにする必要があります。たとえば、上記の例では、アニメーションは フォーカスエクスペリエンス 任意の要素にフォーカスを当てる必要がある場合は、その要素に <a class="btn" tabindex="1">ボタン</a> .btn:focus:after{ アニメーション: リップル 1 秒; } 解決策はないのでしょうか? もちろんいくつかあります。最後のが間違いなく解決策です、ハハハ チェック済み
<ラベルクラス="btn"> <input type="checkbox"><span>ボタン</span> </ラベル> ここでは スタイルを追加する .btn>span:after{ /**セレクタを変更する**/ } .btn>入力[type=チェックボックス]{ 表示: なし } .btn>input[type=checkbox]:checked+span:after{ アニメーション: リップル 1 秒; } これによってアニメーションをトリガーすることもできますが、問題は、もう一度クリックすると選択が解除されることです。アニメーションをトリガーするにはどうすればよいでしょうか? 実際、それは .btn>input[type=checkbox]:not(:checked)+span:after{ アニメーション: リップル 1 秒; } 一見すると、かなり巧妙に思えますが、よく考えてみると、表裏両方にアニメーションが書かれているので、 .btn>input[type=checkbox]+span:after{ アニメーション: リップル 1 秒; } 無限サイクル… この問題は長い間私を悩ませてきましたが、神は一生懸命働く人を失望させません。その後、2つの状態で異なるアニメーションをトリガーしようとしましたが、次のように個別にトリガーできます。 .btn>input[type=checkbox]:checked+span:after{ アニメーション: リップル1 1秒; } .btn>input[type=checkbox]:not(:checked)+span:after{ アニメーション: リップル2 1秒; } これは簡単に理解できるはずです。 さて、ここからがポイントです。ripple1 と これは非常に簡単です。デフォルトの状態を設定し、状態を選択して、異なる名前のアニメーションをトリガーするだけです。 .btn>input[type=checkbox]+span:after{ アニメーション: リップルイン 1 秒; } .btn>input[type=checkbox]:checked+span:after{ アニメーション: リップルアウト 1 秒; } @keyframes リップルイン{ から { 変換: translate(-50%,-50%) スケール(0); 背景: rgba(0,0,0,.25); } に { 変換: translate(-50%,-50%) スケール(1); 背景: 透明; } } @keyframes ripple-out{/*名前だけが異なります*/ から { 変換: translate(-50%,-50%) スケール(0); 背景: rgba(0,0,0,.25); } に { 変換: translate(-50%,-50%) スケール(1); 背景: 透明; } } 効果は記事の冒頭で示した通り、完璧です 完全なデモは次のとおりです https://codepen.io/xboxyan/pen/Jmvyex/ いくつかの欠点 上記のアニメーション スタイルはデフォルトでトリガーされるため、ページが読み込まれるとボタン上の水滴アニメーションが 1 回移動するのがわかりますが、特に目立つわけではなく、受け入れられるものではありません。 第二に、実際の効果は、マウスがクリックされたポイントから広がるはずです。私たちの CSS では、これは確かにできず、中心から広がることしかできず、これも妥協点です。ここでアイデアがあります。CSS 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 |
<<: MySQLからOracleへのリアルタイム同期ソリューションの詳細な説明
Win10はmysql5.7の解凍版をインストールします。参考までに、具体的な内容は次のとおりです...
最近、Web ページに複数の画像をアップロードするためのスクリプトを作成しました。これは非常に実用的...
概要港とは何ですか?英語の単語の意味は「港」です。 Harborはコンテナ(貨物)を保管するために使...
この記事では、参考までに、シンプルな虫眼鏡を実装するためのJavaScriptの具体的なコードを紹介...
1.マージンとは何ですか?マージンは、要素の周囲のスペースの間隔を制御するために使用され、視覚的にス...
この記事はCentOS 7.3システム環境をベースに、MySQLとRedisのインストールと使用につ...
絵文字付きの HTML コメント ボックス。絵文字は Json データを通じて読み込まれ、好みに応じ...
この記事では、登録またはログイン時に電子メール アドレスを入力する際のドロップダウン プロンプトのネ...
1. MySQL 5.7 のアンインストール1.1查看yum是否安裝過mysql CD yum li...
1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり rep...
目次1. データベース論理バックアップとはどのようなバックアップですか? 2. よく使われる論理バッ...
目次1. シンプルなページの例2.uni-appはvueコンポーネントとミニプログラムネイティブコン...
01 ウィンターフレーク(個人のみ) 02 スノートップキャップ(業務用) 03 モディウス「フリ...
Web フォームは、訪問者と Web サイト所有者間の主要なコミュニケーション チャネルです。フィー...
目次前の単語使用シナリオ参照HTML要素クラスコンポーネント機能コンポーネント[DOMノードを親コン...