Das CSS3-Diamantpuzzle realisiert die Funktion, nur das Div zu drehen und das Hintergrundbild nicht zu drehen

Das CSS3-Diamantpuzzle realisiert die Funktion, nur das Div zu drehen und das Hintergrundbild nicht zu drehen

Nachfragehintergrund

Das Projekt wurde mit Vue erstellt und die Geschäftsanforderung hat einen Puzzle-Effekt. Das Standard-Hintergrundbild ist dunkel und in fünf Bereiche unterteilt. Jedes Mal wird ein Bereich beleuchtet, und das gesamte Bild wird beleuchtet, und das Puzzle ist fertig. Schauen wir uns zunächst das endgültige Rendering an.

CSS3-Diamant-Puzzle, um nur das Div und nicht das Hintergrundbild zu drehen

Angewandte Wissenspunkte:

  • Hintergrundgröße
  • Hintergrundposition
  • transformieren: drehen

Umsetzungsideen:

Die äußere große Box dient zur Aufnahme des dunklen Hintergrundbildes. Die fünf Puzzleteile darin sind fünf Divs. Jedes Puzzleteil verwendet背景定位的方式, um einen festen Bereich des Hintergrundbildes anzuzeigen. Das Puzzleteil in der Mitte ist gedreht. Nach der Drehung trat jedoch ein weiteres Problem auf: Das Hintergrundbild drehte sich ebenfalls, und zwar folgendermaßen:

CSS3-Diamant-Puzzle, um nur das Div und nicht das Hintergrundbild zu drehen

Die Idee zur Lösung des Problems der Hintergrundrotation ist folgende: Sie können eine Box auf die äußere Ebene des fünften Puzzleteils legen, die äußere Box um 45 Grad nach rechts drehen und dann die Hintergrundelemente um 45 Grad nach links drehen. Nach der Operation habe ich ein neues Problem gefunden. Der schwarze Rand im Bild unten ist die äußere Box (zur besseren Darstellung sind die anderen Puzzleteile auf unsichtbar eingestellt). Wenn overflow:hidden für die äußere Box festgelegt ist, fehlen die oberen, unteren, linken und rechten Ecken des mittleren Puzzles.

Wir müssen die Breite und Höhe des fünften Puzzleteils vergrößern und dann dessen äußeres Feld overflow:hidden festlegen. Wenn Breite und Höhe groß eingestellt sind, muss auch die entsprechende background-size geändert werden.

CSS3-Diamant-Puzzle, um nur das Div und nicht das Hintergrundbild zu drehen

Schließlich können Sie den Effekt erzielen, mit dem Sie gerade begonnen haben. Der vollständige Vue-Code lautet wie folgt:

<Vorlage>
    <Abschnitt Klasse="Box">
        <div Klasse="bg" :style="{ Hintergrundbild: `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="item5Anzeigen" class="item item5wrap">
            <div Klasse="item5" :style="{ Hintergrundbild: `url(${bgImg}) ` }"></div>
        </div>
    </Abschnitt>
</Vorlage>
<Skript>
importiere bgImg aus "@/assets/bg.jpeg";
Standard exportieren {
    Daten() {
        zurückkehren {
            bgImg,
            item1Show: false,
            item2Show: true,
            item3Show: true,
            item4Show: true,
            item5Anzeigen: true
        };
    }
};
</Skript>
<style lang="less">
@borderColor: #333;
.Kasten {
    Rand: 0px automatisch;
    Breite: 300px;
    Höhe: 200px;
    Hintergrundfarbe: #000;
    Position: relativ;
    .bg {
        Breite: 100 %;
        Höhe: 100%;
        Position: absolut;
        links: 0;
        oben: 0;
        Hintergrundposition: Mitte Mitte;
        Hintergrundwiederholung: keine Wiederholung;
        Hintergrundgröße: 100 % 100 %;
        Deckkraft: 0,5;
    }
    .Artikel {
        Breite: 50%;
        Höhe: 50%;
        Box-Größe: Rahmenbox;
        Hintergrundgröße: 200 % 200 %;
        Rahmen rechts: 1px durchgezogen @borderColor;
        Rahmen unten: 1px durchgezogen @borderColor;
        Position: absolut;
    }
    .Artikel1 {
        Hintergrundposition: 0 0;
        links: 0;
        oben: 0;
    }
    .item2 {
        Hintergrundposition: 100 % 0;
        links: 50%;
        oben: 0;
    }
    .item3 {
        Hintergrundposition: 0 100 %;
        links: 0;
        oben: 50 %;
    }
    .item4 {
        Hintergrundposition: 100 % 100 %;
        links: 50%;
        oben: 50 %;
    }
    .item5wrap {
        Breite: 100px;
        Höhe: 100px;
        Rahmen links: 1px durchgezogen @borderColor;
        Rahmen oben: 1px durchgezogen @borderColor;
        transformieren: drehen (45 Grad);
        links: 50%;
        oben: 50 %;            
        transformieren: verschieben (-50 %, -50 %) drehen (45 Grad);
        Überlauf: versteckt;
        .item5 {
            Breite: 150px;
            Höhe: 150px;
            Hintergrundposition: 50 % 50 %;
            Hintergrundgröße: 200 % 133 %;
            Position: absolut;
            links: 50%;
            oben: 50 %;
            transformieren: verschieben (-50 %, -50 %) drehen (-45 Grad);
        }
    }
}
</Stil>

Dies ist das Ende dieses Artikels darüber, wie Sie mit dem CSS3-Diamantpuzzle nur das Div-Hintergrundbild drehen können, ohne es zu drehen. Weitere relevante CSS3-Inhalte zum Drehen von Bildern finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

<<:  Grundlegende Hinweise zu HTML und CSS (unbedingt für das Frontend lesen)

>>:  So implementieren Sie die Kommunikation zwischen Docker-Containern

Artikel empfehlen

MySQL-Datenbank muss SQL-Anweisungen kennen (erweiterte Version)

Dies ist eine erweiterte Version. Die Fragen und ...

Zusammenfassung der grundlegenden allgemeinen MySQL-Befehle

Inhaltsverzeichnis Grundlegende allgemeine MySQL-...

Lösen Sie das Problem „Rand: oberer Kollaps“ in CCS

Die HTML-Struktur ist wie folgt: Die CCS-Struktur...

Änderung der Standardquelldatei sources.list des Ubuntu20.04 LTS-Systems

Wenn Sie den Inhalt der Datei „source.list“ verse...

Div in HTML ausblenden Tabelle ausblenden TABLE- oder DIV-Inhalt im CSS-Stil

Ich habe heute Abend ein Problem gelöst, das mich...

Spezifische Methode zum Löschen des MySQL-Dienstes

MySQL meldet den folgenden Fehler Ich ging zu „Sy...

Navigationsdesign und Informationsarchitektur

<br />Wenn wir über Navigation sprechen, geh...

Detaillierte Erklärung der React-Ereignisbindung

1. Was ist In react Anwendungen werden Ereignisna...

Häufig verwendete englische Schriftarten für die Webseitenerstellung

Arial Arial ist eine serifenlose TrueType-Schrifta...