CSSは、他のレイヤーを変更せずに、多層ネスト構造の最外層を回転させる効果を実現します。

CSSは、他のレイヤーを変更せずに、多層ネスト構造の最外層を回転させる効果を実現します。

次のようなシナリオがあります。円形のコンテナで、最も外側のコンテナの背景が円弧になっています。内側のコンテナ内のコンテンツが回転しないようにするには、最も外側の円弧を回転させる必要があります。次に、解決策を紹介します。最終的な効果を見てみましょう。

実装のアイデア

  • 最も外側のdivは50%の面取りされた境界線を持つように設定され、オーバーフローは非表示になっています。
  • 最も外側の背景を円弧の背景画像に設定する
  • 外側のレイヤーの回転アニメーションを定義します。回転角度は正の数です。
  • 内部レイヤーの回転アニメーションを定義します。回転度は負です。
  • アニメーションを開始し、回転を開始します
  • 外側の層は正の数で回転し、内側の層は負の数で回転します。これにより、回転が打ち消され、理想的な効果が得られます。

実装プロセス

DOM構造部分: 外側のdivと内側のdivのレイアウト

load-panel は外側の div、 headPortrait-img-panelは内側の div、 loadWhirlは外側の回転アニメーション、 avatarRotationは内側の回転アニメーションです。

<!--アバターエリア-->
<div class="headPortrait-panel">
    <!--レイヤーを読み込んでいます-->
    <div class="load-panel loadWhirl">
        <!--アバター表示レイヤー-->
        <div class="headPortrait-img-panel アバター回転">
            <img src="../assets/img/login/[email protected]"/>
        </div>
    </div>
</div>

CSS 部分: スタイルをレイアウトし、回転アニメーション ロジックを実装します。

  /*アバターエリア*/
  .headPortrait-panel{
    幅: 100%;
    高さ: 200px;
    ディスプレイ: フレックス;
    コンテンツの中央揃え: 中央;
    アイテムの位置を中央揃えにします。
    上マージン: 50px;

    /*レイヤーをロード*/
    .load-panel{
      幅: 240ピクセル;
      高さ: 240px;
      境界線の半径: 50%;
      ディスプレイ: フレックス;
      コンテンツの中央揃え: 中央;
      アイテムの位置を中央揃えにします。
      背景: url("../img/login/[email protected]");

      画像{
        幅: 100%;
        高さ: 100%;
      }

      // アバターの回転 animation.avatarRotation{
        アニメーション: 内部アバター 3 秒リニア;
        // アニメーション無限ループ animation-iteration-count:infinite;
      }

      /*アバター表示レイヤー*/
      .headPortrait-img-panel{
        幅: 200ピクセル;
        高さ: 200px;
        境界線の半径: 50%;
        オーバーフロー: 非表示;
        境界線: 実線 1px #ebeced;

        画像{
          幅: 100%;
          高さ: 100%;
        }
      }
    }

    // 外部回転アニメーション.loadWhirl{
      アニメーション: 外部Halo 3s リニア;
      // アニメーション無限ループ animation-iteration-count:infinite;
    }
  }

  // 外部ハロー回転アニメーションを定義する @keyframes externalHalo {
    0%{
      変換: 回転(0度);
    }
    25%
      変換: 回転(90度);
    }
    50%{
      変換: 回転(180度);
    }
    100%{
      変換: 回転(360度);
    }
  }

  // 内部アバター回転アニメーションを定義する @keyframes internalAvatar {
    0%{
      変換: 回転(0度);
    }
    25%
      変換: 回転(-90度);
    }
    50%{
      変換: 回転(-180度);
    }
    100%{
      変換: 回転(-360度);
    }
  }

プロジェクトギャラリー

上記コードアドレス: chat-system

プロジェクトをローカルにクローンした後、http://localhost:8020/login にアクセスして効果を確認します。この記事のファイル パスは src/views/login.vue です。

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

<<:  入力タイプとは何を意味し、入力を制限する方法

>>:  Nginx の負荷分散と動的および静的分離の原理と構成

推薦する

MySQL アップグレードのベストプラクティス

MySQL 5.7 には、オンライン DDL、マルチソース レプリケーション、拡張された半同期、テー...

JavaScript 状態コンテナ Redux の詳細な説明

目次1. Reduxを選ぶ理由2. Reduxデータフロー3つの原則4. Reduxソースコード分析...

jsはキャンバスに基づいて時計コンポーネントを実装します

圧縮アップロード画像、スクラッチカード、ポスター作成、チャートプラグインなど、フロントエンド開発にお...

JS配列インデックス検出におけるデータ型の問題の詳細な説明

WeChat アプレット プロジェクトを書いていたとき、その中に「都市選択」機能がありました。作者は...

VMware 仮想マシンで HTTP サービスを確立して分析する手順

1. xshell を使用して仮想マシンに接続するか、仮想マシンに直接コマンドを入力します。以下はx...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

MySQL ログイン エラーを解決する: 'ユーザー 'root'@'localhost' へのアクセスが拒否されました

まず、コマンドラインまたはワークベンチを使用して MySQL にログインできず、「ユーザー '...

VMware12 に CentOS8 をインストールする方法 (VM 仮想マシンに CentOS8 をインストールするチュートリアル)

数日前に CentOS8 がリリースされました。8 の最初のバージョンですが、今日は VM12 に ...

MySQL 8.0.18はデータベースにユーザーを追加し、権限を付与します

1. データベースにログインするには、rootユーザーを使用することをお勧めします。 mysql -...

jQuery で従業員管理登録ページを実装する

この記事では、従業員管理登録ページを実装するためのjQueryの具体的なコードを例として紹介します。...

純粋な CSS3 で蝶が羽ばたく様子を再現する例

純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...

Windows に MySQL 5.7.18 の解凍バージョンをインストールするチュートリアル

1. インストールプロセスMySQL バージョン: 5.7.18 1. my.ini ファイル(簡易...

Docker ベースの Redis マスタースレーブ クラスタの実装

目次1. Redisイメージを取得する2. 6つのRedisコンテナを作成する3. Redisコンテ...

Nginx の高同時実行最適化の実践

1. チューニングの必要性​ 私は、どのように書けばいいのか本当に分からないので、共有するために最適...

CentOS7にNginxをインストールして自動起動を設定する方法

1.公式サイトからインストールパッケージをダウンロードするhttp://nginx.org/en/d...