ホームページ > ウェブフロントエンド > CSSチュートリアル > 純粋な CSS を使用してリング回転錯視のアニメーション効果を実現する方法 (ソースコード添付)

純粋な CSS を使用してリング回転錯視のアニメーション効果を実現する方法 (ソースコード添付)

不言
リリース: 2018-09-05 09:55:17
オリジナル
3043 人が閲覧しました

この記事の内容は、純粋な CSS を使用してリング回転イリュージョンのアニメーション効果を実現する方法についてです。必要な方は参考にしていただければ幸いです。

エフェクトのプレビュー

純粋な CSS を使用してリング回転錯視のアニメーション効果を実現する方法 (ソースコード添付)

ソースコードのダウンロード

https://github.com/comehop​​e/front-end-daily-challenges

コード解釈

domを定義し、コンテナには10個の<div> 子元素,每个 <code><div> 子元素内还有一个 <code><span></span>子要素が含まれます:

<figure>
    <div><span></span></div>
    <div><span></span></div>
    <div><span></span></div>
    <div><span></span></div>
    <div><span></span></div>
    <div><span></span></div>
    <div><span></span></div>
    <div><span></span></div>
    <div><span></span></div>
    <div><span></span></div>
</figure>
ログイン後にコピー

コンテナのサイズを定義します:

.container {
    width: 17em;
    height: 17em;
    font-size: 16px;
}
ログイン後にコピー

コンテナと同じように子要素のサイズを定義します:

.container {
    position: relative;
}

.container div {
    position: absolute;
    width: inherit;
    height: inherit;
}
ログイン後にコピー

子要素の中央に小さな黄色の四角形を描画します:

.container div {
    display: flex;
    align-items: center;
    justify-content: center;
}

.container span {
    position: absolute;
    width: 1em;
    height: 1em;
    background-color: yellow;
}
ログイン後にコピー

動くアニメーション効果を追加します左右の小さな正方形、アニメーションの長さはそのままです。後で使用するので、変数として定義します:

.container span {
    --duration: 2s;
    animation: move var(--duration) infinite;
}

@keyframes move {
    0%, 100% {
        left: calc(10% - 0.5em);
    }

    50% {
        left: calc(90% - 0.5em);
    }
}
ログイン後にコピー

ベジェ曲線を使用してアニメーションの時間関数を調整し、小さな正方形が次のようになります。左右を飛び回る:

.container span {
    animation: move var(--duration) cubic-bezier(0.6, -0.3, 0.7, 0) infinite;
}
ログイン後にコピー

小さな正方形の変形のアニメーションを追加して、しゃがんでジャンプする擬人化効果のように見せます:

.container span {
    animation: 
        move var(--duration) cubic-bezier(0.6, -0.3, 0.7, 0) infinite,
        morph var(--duration) ease-in-out infinite;
}

@keyframes morph {
    0%, 50%, 100% {
        transform: scale(0.75, 1);
    }

    25%, 75% {
        transform: scale(1.5, 0.5);
    }
}
ログイン後にコピー

この時点で、1 ブロックのアニメーションが完了します。次に、複数のブロックのアニメーション効果を設定します。

子要素の CSS 添字変数を定義します:

.container div:nth-child(1) { --n: 1; }
.container div:nth-child(2) { --n: 2; }
.container div:nth-child(3) { --n: 3; }
.container div:nth-child(4) { --n: 4; }
.container div:nth-child(5) { --n: 5; }
.container div:nth-child(6) { --n: 6; }
.container div:nth-child(7) { --n: 7; }
.container div:nth-child(8) { --n: 8; }
.container div:nth-child(9) { --n: 9; }
ログイン後にコピー

小さな正方形がコンテナの周囲に均等に配置され、円を形成するように子要素を回転します:

.container p {
    transform: rotate(calc(var(--n) * 40deg));
}
ログイン後にコピー

アニメーション遅延を設定すると、小さな正方形のグループのように見えますは円の内側の端に対して回転しています (ただし、実際に回転している要素はなく、脳が感じる回転は錯覚です):

.container span {
    animation-delay: calc(var(--duration) / 9 * var(--n) * -1);
}
ログイン後にコピー

最後に、小さな正方形に色を付けます:

.container span {
    background-color: hsl(calc(var(--n) * 80deg), 100%, 70%);
}
ログイン後にコピー

完了! CSS についてさらに詳しく知りたい場合は、php 中国語 Web サイトの css チュートリアル 列にアクセスして学ぶことができます。

関連する推奨事項:

純粋な CSS を使用して太陽、地球、月の運動モデル アニメーションを実現する方法

純粋な CSS を使用してサッカー場の上面図を実現する方法 (ソース コードが添付されています) )

以上が純粋な CSS を使用してリング回転錯視のアニメーション効果を実現する方法 (ソースコード添付)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:css3で影効果を作る方法を詳しく解説【コード例】 次の記事:CSSでフォントをカスタマイズするにはどうすればよいですか? HTML のテキスト フォント スタイルの紹介
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート