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コンテナ間の通信を実装する方法

推薦する

Angular環境構築と簡単な体験のまとめ

Angular入門Angular は、Google が開発したオープンソースの Web フロントエン...

MySQLの主キーとユニークキーの重複挿入の解決策の詳細な説明

目次解決: 1. 無視する2. 交換する3. 重複キーの更新についてデータを挿入するときに、重複した...

MySQL は ACID トランザクションをどのように実装しますか?

序文最近、面接中に、MySQL の InnoDB エンジンがどのようにトランザクションを実装している...

Linux オペレーティング システムで ssh/sftp を構成して権限を設定する方法

FTP と比較すると、SSH ベースの sftp サービスは、セキュリティが優れており (非プレーン...

Websocket に基づくシンプルなチャットルームダイアログの実装

この記事では、WebSocketを使用して簡単なチャットルームの会話を実装するための具体的なコードを...

JavaScriptはオブジェクトの不要なプロパティを削除します

目次例方法1: 削除方法2: 分解補充する要約するThinking シリーズは、10 分で実用的なプ...

入力ボックスのプレースホルダーテキストのデフォルトの色を変更する -webkit-input-placeholder メソッド

HTML5 では、入力用のネイティブ プレースホルダー属性が追加されており、これは高度なブラウザでサ...

DockerでSpring Bootアプリケーションを実行する方法

ここ数日、dockerでSpring Bootアプリケーションを実行する方法を勉強してきました。以前...

Vscode が Ubuntu にリモート接続する際のエラー問題の解決方法

1. 事件の背景:仕事上、Ubuntu への vscode リモート接続を使用する必要があります。 ...

Google の新しい UI から学べること (画像とテキスト)

2011 年に最も顕著なウェブサイトの変更は、一連の製品に新しいユーザー インターフェースを導入した...

Webフロントエンドのパフォーマンス最適化

ウェブフロントエンド最適化のベストプラクティス: コンテンツWebフロントエンド最適化のベストプラク...

Vue3 スロットの使用状況の概要

目次1. Vスロットの紹介2. 匿名スロット3. 名前付きスロット4. スコープ付きスロット5. 動...

HTML テーブル マウス ドラッグ ソート機能

効果画像: 1. ファイルをインポートする<script src="js/jquer...

Vueリストレンダリングキーの原理と機能の詳細な説明

目次リストレンダリングキーの原理と機能主要原則の分析キーの役割要約するリストレンダリングキーの原理と...

小規模プロジェクトで Vue が点滅するのを防ぐ方法

まとめHTML: 要素と v-cloak CSS: [v-cloak]{表示: なし}プロセスページ...