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

推薦する

WeChatアプレットは写真の撮影とアルバムからの写真の選択を実現します

この記事では、WeChatアプレットで写真を撮ったり、アルバムから写真を選択したりするための具体的な...

HTML要素のID属性とName属性の違い

今日、私は <a href="#13"></a> につい...

Vueはキャンバスを使用して画像圧縮アップロードを実現します

この記事では、キャンバスを使用して画像圧縮アップロードを実現するVueの具体的なコードを参考までに共...

分散ロックの原理と3つの実装方法の詳細な説明

現在、ほぼすべての大規模な Web サイトとアプリケーションは分散方式で展開されています。分散シナリ...

MySQL の 6 つの一般的な制約タイプの詳細な説明

目次序文1.nullでない2. ユニーク3. デフォルト4.主キー自動増分主キー5. 外部キー6.チ...

Javascriptはセキュリティ検証に整合性属性を使用します

目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....

Navicat for MySql ビジュアルインポート CSV ファイル

この記事では、参考までに、Navicat for MySql の CSV ファイルのビジュアルインポ...

uniapp プロジェクトで MQTT を使用する方法

目次1. uniappプラグインマーケットのリファレンスプラグイン2. 具体的な導入プロセス1. m...

VMware Workstation のインストール Linux (Ubuntu) システム

システムをコンピューターにインストールする方法がわからない場合は、Linux を学習したい場合は、仮...

Windows 10でDockerコンテナのポートにアクセスできない問題に対する完璧な解決策

Windows 10 で Docker コンテナのポートにアクセスできない問題を解決する (ポート ...

Ajax responseText による JSON データの解析のケース スタディ

ajax 処理後にサーバーから返される responseText が JSON データであるという問...

VMWare14.0.0のUbuntu仮想マシンで共有フォルダを設定する

これは私の最初のブログ投稿です。時間の制約があるため、どのようにフォーマットすればよいかわかりません...

Ubuntu で nginx を使用して WebDAV ファイル サーバーを構築する詳細なプロセス

nginxをインストールするnginx-fullをインストールする必要があることに注意してください。...

MySQLからElasticsearchにデータを同期する方法の詳細な説明

目次1. 同期の原理2. ログスタッシュ入力JDBC 3. go-mysql-elasticsear...

Win10 での MySQL 8.0.15 のインストールと設定のグラフィック チュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...