2つのボールが交差する粘着効果を実現するCSSサンプルコード

2つのボールが交差する粘着効果を実現するCSSサンプルコード

これは純粋に CSS のみを使用して作成されたエフェクトです。簡単に言うと、このエフェクトは画像処理の原理に基づいています。方法は Photoshop とほぼ同じですが、一方がレイヤーとカラーパレットを使用して作成され、もう一方が CSS を使用して作成されます (div をレイヤーとして考えてください)。

PhotoShopを使い始める

まずは Photoshop で遊んでみましょう。CSS を直接記述するよりも理解しやすいでしょう (Photoshop を持っていなくても問題ありません。手順を読めば理解できます)。まず、2 つの新しいレイヤーを追加し、1 つに小さな赤いボールを、もう 1 つに大きな黒いボールを配置します。

次に、ガウスぼかしフィルターを使用して、小さな赤いボールと大きな黒いボールをそれぞれぼかします。

次に、新しい「明るさとコントラスト」調整レイヤーを追加し、「古いバージョンを使用する」をチェックしてコントラストの値を上げると、魔法のような現象が見られます。

端がぼやけなくなるまで引っ張った後、マウスで赤いボールを動かしてみると、赤いボールと黒いボールの接合部が粘着効果の中心になることがわかります。これが私たちが作り出したい効果です。

このように、Photoshop を使って作成する方法はすでにご存知のとおりです。同様に、CSS でも同じ方法を使用しますが、レイヤーが div に置き換えられます。とても簡単です。

CSS 効果

まず、赤いボールを表すクラス redball と黒いボールを表すクラス blackball を持つ div を HTML に配置します。これらは Photoshop の 2 つのレイヤーです。次に、一番外側のレイヤーにクラス effect を持つ div を配置します。これが調整レイヤーです。完了すると、HTML コードは次のようになります。

<div class="効果">
  <div class="ブラックボール"></div>
  <div class="redball"></div>
</div>

blackball と redball にぼかしフィルターを追加し、effect にコントラストフィルターを追加すれば、Photoshop で特殊効果を実現できます。ぼかしフィルターには filter:blur (数値) を使用し、コントラストには filter:contrast (数値) を使用する必要があります。

CSS は次のようになります。

。効果{
  幅:100%;
  高さ:100%;
  パディング上部:50px;
  フィルター:コントラスト(10);
  背景:#fff;
}
.ブラックボール{
  幅:100ピクセル;
  高さ:100px;
  背景:黒;
  パディング:10px;
  境界線の半径:50%;
  マージン:0 自動;
  zインデックス:1;
  フィルター:ぼかし(5px);
}
.レッドボール{
  幅:60ピクセル;
  高さ:60px;
  背景:#f00;
  パディング:10px;
  境界線の半径:50%;
  位置:絶対;
  上:70px;
  左:50px;
  zインデックス:2;
  フィルター:ぼかし(5px) ;
  アニメーション:rball 6s 無限;
}

CSS の配置値を無視し、ぼかし値を 5px、コントラスト値を 10 に設定すると、赤いボールと黒いボールがくっついているのがわかります。しかし、どうやって動かすのでしょうか。 CSS3 アニメーションを使用する必要があります。アニメーションの手順は次のとおりです。

@keyframes rball{
  0%,100%{
    左:35px;
    幅:60ピクセル;
    高さ:60px;
  }
  4%,54%{
    幅:60ピクセル;
    高さ:60px;
  }
  10%,60%{
    幅:50px;
    高さ:70px;
  }
  20%,70%{
    幅:60ピクセル;
    高さ:60px;
  }
  34%,90%{
    幅:70px;
    高さ:50px;
  }
  41%
    幅:60ピクセル;
    高さ:60px;
  }
  50%{
    左:calc(100% - 95px);
    幅:60ピクセル;
    高さ:60px;
  }
}

ここにはたくさんのキーフレームが書かれていますが、それは赤いボールが黒いボールに入ると水平方向に圧縮され、黒いボールから出ると水平方向に引き伸ばされるからです。こうすることで、より粘着性を感じるようになります。この効果をテストするのに、かなりの労力を費やしました! (ただし、ここで注意すべき点が1つあります。位置は自動的に計算されるので、テストする場合は、最も外側のエフェクトの幅を320pxに設定することを忘れないでください)

赤いボールが完成したら、2 つの青いボールを結合してから分離させる必要があります。同じ原理が適用されます。2 つの青いボールの CSS を以下に示します。注意する必要があるのは、結合後に青いボールを大きくしたため、分離すると細長くなることです。

.ブルーボール1{
  幅:80ピクセル;
  高さ:80px;
  背景:#00f;
  パディング:10px;
  境界線の半径:50%;
  位置:絶対;
  上:230px;
  左:0;
  zインデックス:2;
  フィルター:ぼかし(8px) ;
  アニメーション:bball1 6秒無限;
}
.ブルーボール2{
  幅:80ピクセル;
  高さ:80px;
  背景:#00f;
  パディング:10px;
  境界線の半径:50%;
  位置:絶対;
  上:230px;
  左:240px;
  zインデックス:2;
  フィルター:ぼかし(8px) ;
  アニメーション:bball2 6秒無限;
}
@keyframes bball1{
  0%,100%{
    左:0;
    上:230px;
    幅:80ピクセル;
    高さ:80px;
  }
  20%
    上:230px;
    幅:80ピクセル;
    高さ:80px;
  }
  85%
    上:230px;
    左:75px;
    幅:90ピクセル;
    高さ:70px;
  }
  90%
    上:228px;
    幅:75px;
    高さ:85px;
  }
  50%{
    上:215px;
    左:110px;
    幅:110ピクセル;
    高さ:110ピクセル;
  }
}
@keyframes bball2{
  0%,100%{
    左:240px;
    上:230px;
    幅:80ピクセル;
    高さ:80px;
  }
  20%
    上:230px;
    幅:80ピクセル;
    高さ:80px;
  }
  85%
    上:230px;
    左:165px;
    幅:90ピクセル;
    高さ:70px;
  }
  90%
    上:228px;
    幅:75px;
    高さ:85px;
  }
  50%{
    左:110px;
    上:215px;
    幅:110ピクセル;
    高さ:110ピクセル;
  }
}

このように、CSS を使用するだけでスティッキー効果を実現できます。正直、この効果がどこで使用できるかはよくわかりませんが、水中の世界や読み込みの特殊効果などで使用すれば、かなり良いはずです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  Chrome 4.0 は GreaseMonkey スクリプトをサポートします

>>:  secure_file_priv nullの問題を解決する

推薦する

Vue の NetEase Cloud Music Player インターフェースを模倣したシンプルな実装プロセス

仕事のプロジェクトのニーズにより、曲の再生が必要となり、さまざまな資料を参考にして、NetEase ...

MySQL pt-slave-restart ツールの使い方の紹介

目次MySQL マスター スレーブ レプリケーション環境を設定する場合、マスター データベースとスレ...

HTML入門チュートリアル HTMLタグ記号をすぐにマスター

補足<br />HTML について何も知らず、HTML の始め方がまだわからない場合は、...

MySQL FAQ シリーズ: ibdata1 ファイルのサイズが突然増加しないようにする方法

0. はじめにibdata1 ファイルとは何ですか? ibdata1 は、innodb システム テ...

あまり多くのコードを書かずに、ハイパーリンクを使ってシンプルで美しいカスタムチェックボックスを実装できます。

今日ふと、HTML でチェックボックスのスタイルを変更できる範囲が限られていることと、チェックボック...

VMware Workstation と vSphere 間で仮想マシンを移行する (画像とテキスト)

1. Workstationで仮想マシンのハードウェアバージョンを変更するWorkstation ...

Centos 6.9 に MySQL をインストールするための詳細なチュートリアル

1. MySQLがインストールされているかどうかを確認します。次のコードで確認できます。 [root...

Dockerコンテナのネットワークポート設定プロセスの詳細な説明

ネットワークポートの公開実際、Docker にはネットワーク ポートの公開に関わる 2 つのパラメー...

テーブルの最大幅と最小幅を設定する際の互換性の問題と解決策の詳細な説明

テーブル内の min-width と max-width プロパティの設定 <テーブル>...

MYSQL 左結合の最適化 (10 秒から 20 ミリ秒)

目次【機能背景】 [生のSQL] 【独自SQL解析】 【分析手順】 [最適化されたSQL] 【最適化...

Tomcat を使用して IntelliJ IDEA によってデプロイされたプロジェクトの場所はどこですか?

IntelliJ IDEA が Tomcat を使用して Javaweb プロジェクトをデプロイし...

Docker-compose を使用して GitLab をデプロイする方法

Docker-compose は GitLab をデプロイします1. Dockerをインストールする...

Vueはプルダウンとスクロールでデータを読み込む例を実装しています

目次ステップ1: インストールステップ2: 引用ステップ3: 使用Webプロジェクトでは、データを読...

Vueは、センシティブな単語フィルタリングコンポーネントを検出するためのさまざまなアイデアを実装しています。

目次前面に書かれた要件分析 v1アイデア1: インターセプションメソッドを使用して入力ボックスの入力...

ブルートフォース攻撃を防ぐためのシェルスクリプト設定

シェルスクリプトはアクセス制御を設定し、複数回のログイン失敗後にIPをブロックしてSSHのブルートフ...