CSSで波の効果を実現する方法

Apr 09, 2021 am 09:36 AM
css

CSS で波の効果を実現する方法: 最初に HTML サンプル ファイルを作成し、次に正方形の div を作成し、次に「border-radius: 50%」属性を追加して円形の効果を実現し、最後にアニメーションを使用します。属性を使用して円を作成します。ロールアップするだけで波の効果を作成できます。

CSSで波の効果を実現する方法

# この記事の動作環境:Windows7システム、HTML5&&CSS3バージョン、デルのG3コンピューター。

純粋な CSS を使用して波の効果を実現することは、常に非常に困難でした。

波曲線を実現するにはベジェ曲線の助けが必要だからです。

純粋な CSS を使用してベジェ曲線を実装することについては、現時点では良い方法がありません。
もちろん、他の力 (SVG、CANVAS) の助けを借りて、いわゆるウェーブ効果を簡単に実現できます。

まず、CSS 以外の方法で実現される波の効果を見てみましょう

波の効果を実現する SVG

SVG を使用すると、簡単に描画できます3次ベジェ曲線。

<svg width="200px" height="200px" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <text class="liquidFillGaugeText" text-anchor="middle" font-size="42px" transform="translate(100,120)" style="fill: #000">50.0%</text>
    <!-- Wave -->
    <g id="wave">
    <path id="wave-2" fill="rgba(154, 205, 50, .8)" d="M 0 100 C 133.633 85.12 51.54 116.327 200 100 A 95 95 0 0 1 0 100 Z">
    <animate dur="5s" repeatCount="indefinite" attributeName="d" attributeType="XML" values="M0 100 C90 28, 92 179, 200 100 A95 95 0 0 1 0 100 Z;
    M0 100 C145 100, 41 100, 200 100 A95 95 0 0 1 0 100 Z;
    M0 100 C90 28, 92 179, 200 100 A95 95 0 0 1 0 100 Z"></animate>
    </path>
    </g>
    <circle cx="100" cy="100" r="80" stroke-width="10" stroke="white" fill="transparent"></circle>
    <circle cx="100" cy="100" r="90" stroke-width="20" stroke="yellowgreen" fill="none" class="percentage-pie-svg"></circle>
</svg>
ログイン後にコピー

3次ベジェ曲線の描画の核心はこのセクション

にあります。興味のある人は自分で調べてみるのもいいでしょう。

キャンバスを使用して波の効果を実現する

キャンバスを使用して波の効果を実現する原理は、パスを使用して 3 次ベジェ曲線を描画し、アニメーション効果を与えるという SVG と同じです。 。

$(function() {
    let canvas = $("canvas");
    let ctx = canvas[0].getContext(&#39;2d&#39;);
    let radians = (Math.PI / 180) * 180;
    let startTime = Date.now();
    let time = 2000;
    let clockwise = 1;
    let cp1x, cp1y, cp2x, cp2y;

    // 初始状态
    // ctx.bezierCurveTo(90, 28, 92, 179, 200, 100);
    // 末尾状态
    // ctx.bezierCurveTo(145, 100, 41, 100, 200, 100);

    requestAnimationFrame(function waveDraw() { 
        let t = Math.min(1.0, (Date.now() - startTime) / time);

        if(clockwise) {
            cp1x = 90 + (55 * t);
            cp1y = 28 + (72 * t);
            cp2x = 92 - (51 * t);
            cp2y = 179 - (79 * t);
        } else {
            cp1x = 145 - (55 * t);
            cp1y = 100 - (72 * t);
            cp2x = 41 + (51 * t);
            cp2y = 100 + (79 * t);
        }

        ctx.clearRect(0, 0, 200, 200); 
        ctx.beginPath();
        ctx.moveTo(0, 100);
        // 绘制三次贝塞尔曲线
        ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, 200, 100);
        // 绘制圆弧
        ctx.arc(100, 100, 100, 0, radians, 0);
        ctx.fillStyle = "rgba(154, 205, 50, .8)";
        ctx.fill();
        ctx.save(); 

        if( t == 1 ) {
            startTime = Date.now();
            clockwise = !clockwise;
        }

        requestAnimationFrame(waveDraw);
    });
})
web前端开发学习Q-q-u-n: 767273102 ,分享开发工具,零基础,进阶视频教程,希望新手少走弯路
ログイン後にコピー

主に動的な描画 ctx.bezierCurveTo() 3 次ベジェ曲線を使用して波の動きの効果を実現していますので、興味のある方はご自身で勉強してみてください。 [推奨学習:

css ビデオ チュートリアル ]

波効果を実現するための CSS

CSS は最初から実現できないと言っていませんでしたか?はい、3 次ベジェ曲線を直接描くことはできませんが、いくつかの賢い方法を使用して波動の効果をシミュレートすることができます。この方法を見てみましょう。

原理

原理は非常に単純で、正方形に border-radius: 50% を追加すると円が得られることは誰もが知っています。

width: 240px;
height: 240px;
background: #f13f84;
border-radius: 50%;
ログイン後にコピー

わかりました。境界半径が 50% 未満だが 50% に近い場合は、次のようなグラフが表示されます (角に注意してください)。グラフ全体は人々に与えます。少し丸いように感じますが、それほど丸くはありません。)

width: 240px;
height: 240px;
background: #f13f84;
border-radius: 40%;
ログイン後にコピー

わかりました、この形全体は何に使うのですか?まだ波を起こすことができますか?

上のグラフィックをスクロール (回転) させて、その効果を見てみましょう:

CSSで波の効果を実現する方法

@keyframes rotate{
	from{transform: rotate(0deg)}
	to{transform: rotate(359deg)}
}
.ripple{
	width: 240px;
	height: 240px;
	background: #f13f84;
	border-radius: 40%;
	animation: rotate 3s linear infinite;
}
ログイン後にコピー

これを見た多くの人は、回転する意図が理解できないかもしれません。片側を注意深く見つめると、波に似た波状の効果が表示されます。

私たちの目的は、この動的に変換された波状アニメーションを使用して、波のような効果をシミュレートし、作成することです。

実装

もちろん、ここに表示されているのは実装のパノラマ図なので、明確ではありませんが、例を使用して、どのような効果が得られるかを見てみましょう。具体的な実装。

上記の原理を使用して、波動の背景効果画像を実現できます:

背後の浮遊波効果は、実際には -radius: 40 より上の境界線を使用します。 % 楕円。何度も拡大しただけです。視野外のグラフィックスは非表示になり、視野の片側のみが残り、対応する変換がいくつか追加されます。

まだ疑問を持っている生徒もいるかもしれませんが、上記の効果を非表示にしたり表示したりして、視野の外でアニメーションを完成させます。その後、波を生成する原理は実際には次のとおりです:

写真の赤いボックスは実際の視野です。

ここで波を生成するとき、回転する楕円自体を使用するのではなく、背景をカットして波の効果を生成するためにそれを使用することに注意してください。

以上がCSSで波の効果を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ブートストラップにスプリットラインを書く方法 ブートストラップにスプリットラインを書く方法 Apr 07, 2025 pm 03:12 PM

ブートストラップスプリットラインを作成するには2つの方法があります。タグを使用して、水平方向のスプリットラインを作成します。 CSS Borderプロパティを使用して、カスタムスタイルのスプリットラインを作成します。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

ブートストラップに写真を挿入する方法 ブートストラップに写真を挿入する方法 Apr 07, 2025 pm 03:30 PM

ブートストラップに画像を挿入する方法はいくつかあります。HTMLIMGタグを使用して、画像を直接挿入します。ブートストラップ画像コンポーネントを使用すると、レスポンシブ画像とより多くのスタイルを提供できます。画像サイズを設定し、IMG-Fluidクラスを使用して画像を適応可能にします。 IMGボーダークラスを使用して、境界線を設定します。丸い角を設定し、IMGラウンドクラスを使用します。影を設定し、影のクラスを使用します。 CSSスタイルを使用して、画像をサイズ変更して配置します。背景画像を使用して、背景イメージCSSプロパティを使用します。

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

ブートストラップのサイズを変更する方法 ブートストラップのサイズを変更する方法 Apr 07, 2025 pm 03:18 PM

Bootstrapの要素のサイズを調整するには、次のものを含むDimensionクラスを使用できます。

ブートストラップのフレームワークをセットアップする方法 ブートストラップのフレームワークをセットアップする方法 Apr 07, 2025 pm 03:27 PM

Bootstrapフレームワークをセットアップするには、次の手順に従う必要があります。1。CDNを介してブートストラップファイルを参照してください。 2。独自のサーバーでファイルをダウンロードしてホストします。 3。HTMLにブートストラップファイルを含めます。 4.必要に応じてSASS/LESSをコンパイルします。 5。カスタムファイルをインポートします(オプション)。セットアップが完了したら、Bootstrapのグリッドシステム、コンポーネント、スタイルを使用して、レスポンシブWebサイトとアプリケーションを作成できます。

ブートストラップボタンの使用方法 ブートストラップボタンの使用方法 Apr 07, 2025 pm 03:09 PM

ブートストラップボタンの使用方法は?ブートストラップCSSを導入してボタン要素を作成し、ブートストラップボタンクラスを追加してボタンテキストを追加します

ブートストラップの日付を表示する方法 ブートストラップの日付を表示する方法 Apr 07, 2025 pm 03:03 PM

回答:ブートストラップの日付ピッカーコンポーネントを使用して、ページで日付を表示できます。手順:ブートストラップフレームワークを紹介します。 HTMLで日付セレクター入力ボックスを作成します。ブートストラップは、セレクターにスタイルを自動的に追加します。 JavaScriptを使用して、選択した日付を取得します。

See all articles