ホームページ >ウェブフロントエンド >CSSチュートリアル >CSSオリンピックリング
3D効果は、層状divを使用して達成されます。各リングは16の層で構成され、それぞれが照明効果を作成するためのわずかに異なるシェードです。 レイヤーのサイズと位置は、3次元リングの錯覚を作成します。
html構造
要素は、CSSを介したスタイリングを制御するために、カスタムプロパティ<div>(1〜16の範囲)を使用します。 エメットは、繰り返しのHTML構造の作成を簡素化できます。 スニペットは次のとおりです
<code><i></i>
<i></i>
--i
プロパティは、層の位置、サイズ、色のCSS計算の乗数として機能します。
cssスタイリング
<div class="rings"> <div class="ring ring__1"> <i style="--i: 1;"></i> <i style="--i: 2;"></i> <!-- ... more layers ... --> <i style="--i: 16;"></i> </div> <!-- ... more rings ... --> </div>
--i
コンテナは
円形の形状を作成します。 カスタムプロパティ.rings
は、ベースカラーを設定します。position: relative
.ring
マイナス値に設定された<i></i>
プロパティは、レイヤーを要素の外側の外側に配置し、そのサイズを効果的に定義します。 border-radius: 50%
カスタムプロパティ、--ringColor
を使用して計算され、Z軸に沿って層を配置して深さを作成します。
シェーディングinset
.ring
相対色の構文を使用してシェーディングが達成されます。 --translateZ
から計算されたカスタムプロパティは、--i
:
.ring { position: absolute; --ringColor: #0085c7; i { position: absolute; inset: -100px; border-radius: 50%; --translateZ: calc(var(--i) * 2px); transform: rotateY(-45deg) translateZ(var(--translateZ)); } }
--light
--i
関数を使用して計算されたカスタムプロパティは、境界の厚さを決定し、リングの円形を作成します。
--ringColor
i { --light: calc(var(--i) / 16); --layerColor: rgb(from var(--ringColor) calc(r * var(--light)) calc(g * var(--light)) calc(b * var(--light))); border: var(--size) var(--layerColor) solid; outline: var(--size) var(--layerColor) solid; }および
プロパティを使用して実装されています。 各リングのアニメーション期間は、アニメーションを驚かせるために負の遅延があるカスタムプロパティ
によって制御されます。.rings
コンテナのわずかなx軸回転は、視点を追加します。 擬似エレメント(::after
)ぼやけた影を作成し、3D効果をさらに高めます。 最終的なCSSは高度に最適化され、再利用可能であり、最新のCSS機能の力を示しています。 このコードは、元のSCSSバージョンよりもはるかに効率的で保守可能です。
以上がCSSオリンピックリングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。