Eine beliebte Desigentechnik besteht darin, einen Inhaltscontainer zu erstellen, der wie ein Blatt Papier aussieht, und andere Blätter Papier darunter zu stapeln, um einen geschichteten oder dreidimensionalen Stil zu erhalten. Wir können diesen Effekt mit reinem CSS erstellen, aber es gibt verschiedene Arten von gestapelten Papierdesigns, die wir berücksichtigen können. Wir werden hier vier konkrete Beispiele liefern.
Vertikaler Papierstapel unten
Die Idee hier ist, dass unser Inhaltscontainer das oberste Blatt Papier ist und weitere Blätter darunter gestapelt sind, deren Kanten am unteren Rand des obersten Blattes sichtbar sind.
Siehe den Pen Gestapelter Papiereffekt – Vertikal von CSS-Tricks (@css-tricks) auf CodePen.
<div class="paper"></div>
.paper {
background: #fff;
box-shadow:
/* The top layer shadow */
0 1px 1px rgba(0,0,0,0.15),
/* The second layer */
0 10px 0 -5px #eee,
/* The second layer shadow */
0 10px 1px -4px rgba(0,0,0,0.15),
/* The third layer */
0 20px 0 -10px #eee,
/* The third layer shadow */
0 20px 1px -9px rgba(0,0,0,0.15);
/* Padding for demo purposes */
padding: 30px;
}
Vertikaler Papierstapel oben
Dies ist dasselbe Konzept wie beim letzten Beispiel, aber der Papierstapel wird oben auf dem Container angezeigt statt unten. Der einzige Unterschied hier ist, dass wir die Eigenschaft box-shadow auf dem Element .paper mit negativen Zahlen neu positioniert haben.
Siehe den Pen Gestapelter Papiereffekt – Vertikal Oben von CSS-Tricks (@css-tricks) auf CodePen.
<div class="paper"></div>
.paper {
background: #fff;
box-shadow:
/* The top layer shadow */
0 -1px 1px rgba(0,0,0,0.15),
/* The second layer */
0 -10px 0 -5px #eee,
/* The second layer shadow */
0 -10px 1px -4px rgba(0,0,0,0.15),
/* The third layer */
0 -20px 0 -10px #eee,
/* The third layer shadow */
0 -20px 1px -9px rgba(0,0,0,0.15);
/* Padding for demo purposes */
padding: 30px;
}
Diagonaler Papierstapel
Dies ist eine etwas andere Methode, bei der wir die Pseudoelemente ::before und ::after verwenden, um die zusätzlichen Papierblätter zu erstellen, anstatt die box-shadow-Technik, die in den vorherigen Beispielen verwendet wurde.
Siehe den Pen Gestapelter Papiereffekt – Diagonal von CSS-Tricks (@css-tricks) auf CodePen.
<div class="paper"></div>
/* Diagonal stacked paper effect */
.paper {
background-color: #fff;
/* Need position to allow stacking of pseudo-elements */
position: relative;
/* Padding for demo purposes */
padding: 30px;
}
.paper,
.paper::before,
.paper::after {
/* Add shadow to distinguish sheets from one another */
box-shadow: 2px 1px 1px rgba(0,0,0,0.15);
}
.paper::before,
.paper::after {
content: "";
position: absolute;
width: 100%;
height: 100%;
background-color: #eee;
}
/* Second sheet of paper */
.paper::before {
left: 7px;
top: 5px;
z-index: -1;
}
/* Third sheet of paper */
.paper::after {
left: 12px;
top: 10px;
z-index: -2;
}
Unorganisierter Papierstapel
Wir können die Papierblätter versetzt anordnen, um einen bewusst unordentlichen Look zu erzeugen, indem wir die gleiche Technik mit Pseudoelementen wie im letzten Beispiel verwenden, jedoch mit der Eigenschaft transform, um die darunter liegenden Papierblätter zu drehen. Dieses Beispiel geht von der Verwendung von Autoprefixer aus oder davon, dass Präfixe für die Eigenschaft transform dort verwendet werden, wo die Browserunterstützung nachlassen könnte.
Siehe den Pen Gestapelter Papiereffekt – Unordentlich von CSS-Tricks (@css-tricks) auf CodePen.
<div class="paper"></div>
.paper {
background: #fff;
padding: 30px;
position: relative;
}
.paper,
.paper::before,
.paper::after {
/* Styles to distinguish sheets from one another */
box-shadow: 1px 1px 1px rgba(0,0,0,0.25);
border: 1px solid #bbb;
}
.paper::before,
.paper::after {
content: "";
position: absolute;
height: 95%;
width: 99%;
background-color: #eee;
}
.paper::before {
right: 15px;
top: 0;
transform: rotate(-1deg);
z-index: -1;
}
.paper::after {
top: 5px;
right: -5px;
transform: rotate(1deg);
z-index: -2;
}
Das ist ziemlich süß, ein weiterer toller Schnipsel, Chris
Das ist super cool, danke fürs Teilen.
SWEET!
Gäbe es eine Möglichkeit, ein Hintergrundbild darauf zu legen?
Habe eine Sass-Funktion zum Spielen damit erstellt!
Anfängerfehler, CodePen mal wieder
http://codepen.io/Rodsevich/pen/bVQVeJ
Großartig, Mann! Werde ich in naher Zukunft verwenden :-)
Hier ist eine weitere Funktion zum Generieren von x-Mengen von Papierstapeln
Ich habe diese Lösung für ein Webdesign verwendet (meine eigene Version des dritten Beispiels), aber es gibt ein Problem, das ich bisher nicht lösen konnte: Wenn der Inhalt zu groß ist, wird die Haupt-DIV zu lang und als Ergebnis sieht der Schattenstil in der Mitte der Seite wirklich bescheuert aus...
Der Trick, den ich verwendet habe, ist die Verwendung von JS, um einen simulierten Stapel zu erstellen, der "sticky" bleibt, während ein DIV mit
90vhvorhanden ist, aber die von mir verwendete Bibliothek funktioniert nach einem Update nicht mehr ... also, haben Sie kreative Tricks? oder eine alternative JS-Bibliothek, die den Effekt erzielen kann? – mehrere divs übereinander, die eine "sticky" Position relativ zu einem Container haben.Ich habe den Code, um Papiere oben und unten anzuzeigen, kann aber Papiere nicht diagonal oder unordentlich anzeigen lassen.
Nun, ich habe etwas getan, das die Papiere extra groß und am Anfang der Seite angezeigt hat, nicht in der DIV, in der es aufgerufen wird. Jetzt scheine ich das nicht mehr hinzubekommen.
Ich verstehe nicht, wie dieses "before" und "after" funktionieren und kann online keine Erklärung finden.
Nachricht zu meiner eigenen Nachricht
Ich habe einen anderen Weg eingeschlagen. Ich habe den diagonalen Code kopiert und in einem neuen Projekt einen funktionierenden Papierstapel erstellt. Dann habe ich den unordentlichen Code hinzugefügt. Funktioniert immer noch wie erwartet. Stück für Stück habe ich Kopien meines Originalcodes für vertikal nach oben und vertikal nach unten eingefügt.
Alles funktioniert )-
Ich weiß immer noch nicht, was im Original schief gelaufen ist.
Sollte ich eine Situation diagnostizieren, die keinen Unterschied mehr macht? Sollte ich den Fehler untersuchen, um zu wissen, was passiert ist, und vielleicht werde ich diesen Fehler nie wieder machen?
Hmmm....
(Die Seite fragt mich hier nach meiner E-Mail-Adresse. Ich habe vergessen, welche ich benutzt habe...)
Hallo! Im "Unorganisierten Papierstapel" ist die Eigenschaft rotate als Prozent angegeben und daher werden bei viel Inhalt die Ecken größer. Aber wie stellt man sicher, dass der Winkel sich nicht ändert?