この記事の内容は、CSS と D3 を使用して、js でこれを理解する方法を紹介しており、必要な友人が参考になれば幸いです。助けます。
domを定義、コンテナには3つのサブ要素が含まれ、各サブ要素は円を表します:
<div> <span></span> <span></span> <span></span> </div>
中央表示:
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; background-color: black; }
コンテナサイズの定義:
.circles { width: 60vmin; height: 60vmin; }
コンテナを描画します1 つの円:
.circles { position: relative; } .circles span { position: absolute; box-sizing: border-box; width: 50%; height: 50%; background-color: white; border-radius: 50%; left: 25%; }
変数を定義し、複数の円を描画します。各円は最初の円の下の中点を中心に回転して、より大きな円を形成します:
.circles { --particles: 3; } .circles span { transform-origin: bottom center; --deg: calc(360deg / var(--particles) * (var(--n) - 1)); transform: rotate(var(--deg)); } .circles span:nth-child(1) { --n: 1; } .circles span:nth-child(2) { --n: 2; } .circles span:nth-child(3) { --n: 3; }
子要素にアニメーション効果を追加します:
.circles span { animation: rotating 5s ease-in-out infinite; } @keyframes rotating { 0% { transform: rotate(0); } 50% { transform: rotate(var(--deg)) translateY(0); } 100% { transform: rotate(var(--deg)) translateY(100%) scale(2); } }
サブ要素の色の混合を設定します。サブ要素間の重なり部分が黒く表示されるようにモードを変更します:
.circles span { mix-blend-mode: difference; }
コンテナにアニメーション効果を追加して、サブ要素の拡大を相殺し、アニメーションを滑らかに接続します:
.circles { animation: zoom 5s linear infinite; } @keyframes zoom { to { transform: scale(0.5) translateY(-50%); } }
次に、d3 バッチ処理の dom 要素を使用します。そしてCSS変数。
d3 ライブラリを紹介します:
<script></script>
d3 を使用して円の数を表す変数に値を割り当てます:
const COUNT_OF_PARTICLES = 30; d3.select('.circles') .style('--particles', COUNT_OF_PARTICLES)
d3 を使用して dom 要素を生成します:
d3.select('.circles') .style('--particles', COUNT_OF_PARTICLES) .selectAll('span') .data(d3.range(COUNT_OF_PARTICLES)) .enter() .append('span');
d3 を使用して添え字を表す変数に値を割り当てますサブ要素の:
d3.select('.circles') .style('--particles', COUNT_OF_PARTICLES) .selectAll('span') .data(d3.range(COUNT_OF_PARTICLES)) .enter() .append('span') .style('--n', (d) => d + 1);
HTML ファイルを削除します。 CSS ファイル内の関連する dom 要素と関連する CSS 変数。
最後に、円の数を 30 に調整します:
rreeeこれで完了です。
関連する推奨事項:
純粋な CSS を使用して、DOM 要素を使用せずにアニメーション効果を実装する方法
純粋な CSS を使用して、動く白いウサギのアニメーション効果を実装する方法
CSS を使用してトラックローダーを実装する方法効果以上がCSS と D3 を使用して白黒の重なり合うアニメーション効果を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。