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

calc(), um einen Vollbild-Hintergrundinhalt mit fester Breite zu erreichen

In den letzten Jahren gab es im Webdesign einen T...

So übertragen Sie Dateien zwischen Docker-Container und lokalem Computer

Zum Übertragen von Dateien zwischen dem Host und ...

Die 6 effektivsten Möglichkeiten zum Schreiben von HTML und CSS

In diesem Artikel werden die sechs wirksamsten Me...

Lösung zum Vergessen des MySQL-Root-Passworts in MACOS

MySQL ist ein relationales Datenbankverwaltungssy...

Analyse des MySQL-Client-Installationsprozesses auf dem Mac

Versuchen Sie die Installation über Pip in einer ...

Zusammenfassung der Methoden zum Abfragen von MySQL-Benutzerberechtigungen

Einführung von zwei Methoden zum Anzeigen von MyS...

Detaillierte Erklärung der Javascript-String-Methoden

Inhaltsverzeichnis Zeichenfolgenlänge: Länge char...