CSS3ダイヤモンドパズルはdivのみを回転し、背景画像は回転しない機能を実現します

CSS3ダイヤモンドパズルはdivのみを回転し、背景画像は回転しない機能を実現します

需要背景

プロジェクトはVueを使用して作成され、ビジネス要件にはパズル効果があります。デフォルトの背景画像は暗く、5つの領域に分割されています。毎回1つの領域が点灯し、画像全体が点灯してパズルが完成します。まずは最終的なレンダリングを見てみましょう。

背景画像ではなく div のみを回転させる CSS3 ダイヤモンド パズル

応用知識ポイント:

  • 背景サイズ
  • 背景位置
  • 変換:回転

実装のアイデア:

外側の大きなボックスは、暗い背景画像を保持するために使用されます。内部の 5 つのパズルピースは 5 つの div です。各パズルピースは、背景定位的方式を使用して、背景画像の固定領域を表示します。中央のパズルピースは回転します。しかし、回転後に別の問題が発生しました。背景画像も次のように回転してしまいました。

背景画像ではなく div のみを回転させる CSS3 ダイヤモンド パズル

背景の回転問題を解決するアイデアは、5 番目のパズルピースの外側の層にボックスを配置し、外側のボックスを右に 45 度回転させてから、背景要素を左に 45 度回転させることです。操作後、新たな問題が見つかりました。下の写真の黒い枠が外箱です(見やすくするため、他のパズルピースは非表示に設定されています)。外側のボックスにoverflow:hiddenが設定されている場合、中央のパズルの上部、下部、左側、右側の角が欠落します。

5 番目のパズルピースの幅と高さを大きくし、外側のボックスをoverflow:hidden設定する必要があります。幅と高さを大きく設定する場合は、対応するbackground-sizeも変更する必要があります。

背景画像ではなく div のみを回転させる CSS3 ダイヤモンド パズル

最後に、先ほど始めた効果を実現できます。完全な Vue コードは次のとおりです。

<テンプレート>
    <セクションクラス="ボックス">
        <div class="bg" :style="{ backgroundImage: `url(${bgImg}) ` }"></div>
        <div v-if="item1Show" class="item item1" :style="{ backgroundImage: `url(${bgImg}) ` }"></div>
        <div v-if="item2Show" class="item item2" :style="{ backgroundImage: `url(${bgImg}) ` }"></div>
        <div v-if="item3Show" class="item item3" :style="{ backgroundImage: `url(${bgImg}) ` }"></div>
        <div v-if="item4Show" class="item item4" :style="{ backgroundImage: `url(${bgImg}) ` }"></div>
        <div v-if="item5Show" class="item item5wrap">
            <div class="item5" :style="{ backgroundImage: `url(${bgImg}) ` }"></div>
        </div>
    </セクション>
</テンプレート>
<スクリプト>
「@/assets/bg.jpeg」からbgImgをインポートします。
エクスポートデフォルト{
    データ() {
        戻る {
            画像,
            項目1表示: false、
            項目2表示: true、
            項目3表示: true、
            項目4表示: true、
            項目5表示: true
        };
    }
};
</スクリプト>
<スタイル lang="less">
@境界線の色: #333;
。箱 {
    マージン: 0px 自動;
    幅: 300ピクセル;
    高さ: 200px;
    背景色: #000;
    位置: 相対的;
    .bg {
        幅: 100%;
        高さ: 100%;
        位置: 絶対;
        左: 0;
        上: 0;
        背景の位置: 中央 中央;
        背景繰り返し: 繰り返しなし;
        背景サイズ: 100% 100%;
        不透明度: 0.5;
    }
    。アイテム {
        幅: 50%;
        高さ: 50%;
        ボックスのサイズ: 境界線ボックス;
        背景サイズ: 200% 200%;
        右境界線: 1px 実線 @borderColor;
        下部境界線: 1px 実線 @borderColor;
        位置: 絶対;
    }
    .item1 {
        背景位置: 0 0;
        左: 0;
        上: 0;
    }
    .item2 {
        背景位置: 100% 0;
        左: 50%;
        上: 0;
    }
    .item3 {
        背景位置: 0 100%;
        左: 0;
        上位: 50%;
    }
    .item4 {
        背景位置: 100% 100%;
        左: 50%;
        上位: 50%;
    }
    .item5ラップ{
        幅: 100ピクセル;
        高さ: 100px;
        左境界線: 1px 実線 @borderColor;
        上境界線: 1px 実線 @borderColor;
        変換: 回転(45度);
        左: 50%;
        上位: 50%;            
        変換: 移動(-50%, -50%) 回転(45度);
        オーバーフロー: 非表示;
        .item5 {
            幅: 150ピクセル;
            高さ: 150px;
            背景位置: 50% 50%;
            背景サイズ: 200% 133%;
            位置: 絶対;
            左: 50%;
            上位: 50%;
            変換: 移動(-50%, -50%) 回転(-45度);
        }
    }
}
</スタイル>

CSS3 ダイヤモンドパズルを使用して、div 背景画像を回転させずに回転させる方法についてはこれで終わりです。CSS3 回転画像に関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

<<:  HTML と CSS に関する基本的なメモ (フロントエンドでは必読)

>>:  Dockerコンテナ間の通信を実装する方法

推薦する

Ubuntu に MySQL 5.7 をインストールし、データ ストレージ パスを構成する方法

1. MySQLをインストールするこの記事はAPT経由でインストールされており、インストールされてい...

Ubuntu 18.04 が VMware 仮想マシンでネットワークに接続できない問題の解決策

仮想マシン内のUbuntu 18.04がネットワークに接続できない問題の解決策は次のとおりですVMw...

Javascript Echarts 空気質マップ効果の詳細な説明

まず、空気質データと地図データを組み合わせる必要があります。マップデータには属性名があるさまざまな都...

MySQLは1億のテストデータを素早く挿入します

目次1. テーブルを作成する1.1 テストテーブルt_userを作成する1.2 一時テーブルの作成2...

React+Antdはテーブルの追加、削除、変更の例を実装します

目次テーブル/index.jsテーブル/モデル/index.jsテーブル/モデル/モジュール/bas...

よく使用される MySQL 関数の完全なリスト (分類および要約)

1. 数学関数ABS(x) xの絶対値を返します。 BIN(x) xの2進値を返します(OCTは8...

Docker で MySQL マスターとスレーブをデプロイする方法

画像をダウンロードMySQLイメージの選択 docker 検索 mysql MySQL 5.7 イメ...

Vue は div の高さをドラッグ可能にします

この記事では、divのドラッグ可能な高さを実現するためのVueの具体的なコードを参考までに共有します...

CentOS で新しいユーザーを作成し、キーログインを有効にする方法

目次新しいユーザーを作成する新規ユーザーを承認する新規ユーザーのSSHキーログインを有効にする他のS...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

Vueはルールを使用してフォームフィールドの検証を実装します

Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...

MySQLクエリ文を書き換える3つの戦略

目次複雑なクエリとステップバイステップのクエリクエリステートメントを分割する共同クエリの分解問題のあ...

DockerでRedashの中国語版をデプロイしてインストールする方法の詳細な説明

1. インストール手順 Linux 環境でのローカル インストールと比較すると、Docker のイン...

HTML タグ マーキーはさまざまなスクロール効果を実現します (JS 制御なし)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

nacos が mysql に接続できない場合の解決策

理由nacos の pom が依存する mysql バージョンが、mysql バージョンと一致してい...