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

Detaillierte Erläuterung des Grafikbeispiels für Vue-Überwachungsattribute

Inhaltsverzeichnis Was ist die Listener-Eigenscha...

Prozessdiagramm für die Sitzungsfreigabe bei Tomcat Nginx Redis

1. Vorbereitung Middleware: Tomcat, Redis, Nginx ...

Mehrere allgemeine Beispielcodes für Weiterleitungsverbindungen in HTML

Code kopieren Der Code lautet wie folgt: window.l...

CSS implementiert fünf gängige 2D-Transformationen

2D-Transformationen in CSS ermöglichen es uns, ei...

Analyse des neuen Ressourcenmanagementsystems von CocosCreator

Inhaltsverzeichnis 1. Ressourcen und Konstruktion...

Implementierung von MySQL-indexbasierten Stresstests

1. Datenbankdaten simulieren 1-1 Datenbank- und T...

Linux-Datei-/Verzeichnisberechtigungen und Eigentümerverwaltung

1. Übersicht über Dateiberechtigungen und Eigentu...

25 CSS-Frameworks, Tools, Software und Vorlagen geteilt

Kobold-Kuh herunterladen CSS-Fussel herunterladen...

So behandeln Sie einen Überlauf numerischer MySQL-Typen

Lassen Sie mich Ihnen nun eine Frage stellen. Was...

Installieren Sie Ethereum/Ethereum von Grund auf unter CentOS7

Inhaltsverzeichnis Vorwort Fügen Sie Sudo-Schreib...

Warum node.js nicht für große Projekte geeignet ist

Inhaltsverzeichnis Vorwort 1. Anwendungskomponent...

MySQL-Datenbankoperationen und Datentypen

Inhaltsverzeichnis 1. Datenbankbetrieb 1.1 Datenb...

Ich habe ein paar coole Designseiten zusammengestellt, die ich gut finde.

Sie müssen Inspiration haben, um eine Website zu g...