DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
Die CSS-Eigenschaft box-shadow dient dazu, Schatten auf Elemente zu legen (manchmal auch als „Drop Shadows“ bezeichnet, wie in Photoshop/Figma).
.card {
box-shadow: 0 3px 10px rgb(0 0 0 / 0.2);
}
Die Syntax dafür ist
box-shadow: [horizontal offset] [vertical offset] [blur radius] [optional spread radius] [color];
- Der horizontale Versatz (erforderlich) des Schattens. Ein positiver Wert bedeutet, dass der Schatten rechts von der Box liegt, ein negativer Wert platziert den Schatten links von der Box.
- Der vertikale Versatz (erforderlich) des Schattens. Ein negativer Wert bedeutet, dass der Schatten oberhalb der Box liegt, ein positiver Wert platziert den Schatten unterhalb der Box.
- Der Weichzeichnungsradius (erforderlich). Wenn dieser auf 0 gesetzt ist, ist der Schatten scharf. Je höher die Zahl, desto weicher wird der Schatten und desto weiter erstreckt er sich nach außen. Zum Beispiel hat ein Schatten mit 5 Pixeln horizontalem Versatz, der auch einen Weichzeichnungsradius von 5 Pixeln hat, insgesamt 10 Pixel Schattenausdehnung.
- Der Streckradius (optional). Positive Werte vergrößern die Größe des Schattens, negative Werte verringern sie. Standard ist 0 (der Schatten hat die gleiche Größe wie der Weichzeichnungsradius).
- Farbe (erforderlich) – Akzeptiert jeden Farbwert, wie Hex, benannte Farben, rgba oder hsla. Wenn der Farbwert weggelassen wird, werden Box-Schatten in der Vordergrundfarbe (Textfarbe
color) gezeichnet. Aber Vorsicht: Ältere WebKit-Browser (vor Chrome 20 und Safari 6) ignorieren die Regel, wenn die Farbe weggelassen wird.
Die Verwendung einer halbtransparenten Farbe wie rgba(0, 0, 0, 0.4) ist am gebräuchlichsten und ein schöner Effekt, da sie das, worüber sie liegt, nicht vollständig/opak abdeckt, sondern ein wenig durchscheinen lässt, wie ein echter Schatten.
Beispiele
Innerer Schatten
Sie verwenden das Schlüsselwort inset
.shadow {
box-shadow: inset 0 0 10px #000000;
}
Antike Geschichte
Hier ist ein Auszug mit Vendor-Präfixen, der eine möglichst einfache Browserunterstützung ermöglicht
.shadow {
-webkit-box-shadow: 3px 3px 5px 6px #ccc; /* Safari 3-4, iOS 4.0.2 - 4.2, Android 2.3+ */
-moz-box-shadow: 3px 3px 5px 6px #ccc; /* Firefox 3.5 - 3.6 */
box-shadow: 3px 3px 5px 6px #ccc; /* Opera 10.5, IE 9, Firefox 4+, Chrome 6+, iOS 5 */
}
Sie können sogar einen Box-Schatten in IE 8 zum Laufen bringen. Dazu benötigen Sie ein zusätzliches Element, aber mit filter ist es machbar.
<div class="shadow1">
<div class="content">Box-shadowed element</div>
</div>
.shadow1 {
margin: 40px;
background-color: rgb(68,68,68); /* Needed for IEs */
-moz-box-shadow: 5px 5px 5px rgba(68, 68, 68, 0.6);
-webkit-box-shadow: 5px 5px 5px rgba(68, 68, 68, 0.6);
box-shadow: 5px 5px 5px rgba(68, 68, 68, 0.6);
filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=3,MakeShadow=true,ShadowOpacity=0.30);
-ms-filter: "progid:DXImageTransform.Microsoft.Blur(PixelRadius=3,MakeShadow=true,ShadowOpacity=0.30)";
zoom: 1;
}
.shadow1 .content {
position: relative; /* This protects the inner element from being blurred */
padding: 100px;
background-color: #DDD;
}
Nur eine Seite
Durch die Verwendung eines negativen Streckradius können Sie einen Box-Schatten komprimieren und ihn nur von einer Kante einer Box abstehen lassen.
.one-edge-shadow {
box-shadow: 0 8px 6px -6px black;
}
Mehrere Ränder & mehr
Sie können Box-Schatten mit Kommas trennen, so oft Sie möchten. Dieses Beispiel zeigt beispielsweise zwei Schatten mit unterschiedlichen Positionen und Farben auf demselben Element
box-shadow:
inset 5px 5px 10px #000000,
inset -5px -5px 10px blue;
Das Beispiel zeigt, wie Sie dies zur Erstellung mehrerer Ränder verwenden können
Durch das Anwenden der Schatten auf Pseudoelemente, die Sie dann manipulieren, können Sie ziemlich ausgefallene 3D-ähnliche Box-Schatten erzeugen
Super glatte Schatten durch mehrere komma-getrennte Werte
Vergleich mit filter: drop-shadow()
Sie können ähnliche Dinge tun! Aber auch, warten Sie, unterschiedliche Dinge. Hier ist ein ausführlicher Artikel dazu. Das Wichtigste, was man vielleicht wissen muss, ist, dass ein filter stärker an die Kanten eines Elements schmiegt als ein rechteckiger box-shadow (obwohl box-shadow abgerundete Ecken berücksichtigt).
Browser-Unterstützung
Diese Browser-Support-Daten stammen von Caniuse, wo es weitere Details gibt. Eine Zahl gibt an, dass der Browser das Feature ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 4* | 3.5* | 9 | 12 | 5* |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 4 | 4.0-4.1* |
Gut zu sehen, aber das ist sehr grundlegend.
Ich habe nach etwas Fortgeschrittenem gesucht.
Trotzdem danke dafür!
Gibt es etwas wie outset, um einen inset-Wert zu konterkarieren (unter Verwendung eines LESS-Mixins und ich muss die Variable für inset füllen).
HTML SCSS Ergebnis
.box {
box-shadow
0 2.8px 2.2px rgba(0, 0, 0, 0.034),
0 6.7px 5.3px rgba(0, 0, 0, 0.048),
0 12.5px 10px rgba(0, 0, 0, 0.06),
0 22.3px 17.9px rgba(0, 0, 0, 0.072),
0 41.8px 33.4px rgba(0, 0, 0, 0.086),
0 100px 80px rgba(0, 0, 0, 0.12)
;
min-height: 200px;
width: 50vw;
margin: 100px auto;
background: white;
border-radius: 5px;
}
Körper {
background: #EEF2F7;
}
Hallo, zuerst muss ich sagen, dass ich Ihre Seite liebe und sie mir schon oft geholfen hat.
Eine Sache, die ich bei Box-Schatten bemerkt habe, ist, dass es Unterschiede zwischen FF und Chrome bezüglich des Abstands gibt.
Was ich meine ist, wenn man diesen Code verwendet
In FF wird ein schöner Schatten unter der Box angezeigt, aber in Chrome nicht. Um ihn anzuzeigen, muss ich ihn zu diesem ändern
Ich würde gerne hören, was Sie dazu sagen.
Danke
Ich mag CSS3 und Ihre Seite :) aber ich hasse INTERNET EXPLORER :@
Süß
Hier ist eine Testseite zum Vergleich. Sehen Sie sich diese Seite in Chrome, IE und dann in FireFox (aktuelle Versionen) an.
http://www.danwenjiang.com/box_shadow_compare.php
Beachten Sie, dass Chrome und IE (wow!) es korrekt anzeigen, während FireFox es nicht auf die gleiche Weise rendert.
Hier ist das CSS
td.greybutton {
background: #696059;
}
td.greybutton:hover {
background: #944F1B;
}
.unselected {
color:#fff;
}
Hier ist der Markup
Menüpunkt 1
Menüpunkt 2
Menüpunkt 3
Irgendwelche Ideen, wie man FireFox dazu bringt, mitzuspielen?
Übrigens – Safari scheint auch in Ordnung zu sein, aber Opera rendert ähnlich wie FireFox.
Könnten Sie den Code für Effekt 2 posten? Ich kann ihn nicht herausfinden und verstehe auch nicht, was Sie mit Pseudoelementen meinten?
Ok, ich fühle mich wie ein Idiot lol. Habe gefunden, wo HTML und CSS waren lol. Aber ich habe es ausprobiert und es tut sich nichts? Ich werde eine Weile damit spielen, vielleicht mache ich etwas falsch
Vielen Dank für das Teilen, die Effekte sind sehr cool.
Bei der Regel für Effekt 7 verstehe ich nicht wirklich, wie der Code funktioniert
Warum verändern die anschließende Verzerrung und Drehung den Schatten auf diese Weise?
Ich auch…
@Chris Coyier
Würden Sie bitte einen Vorschlag/ein Kompliment auf meiner Website @leftree.webs.com hinterlassen? Ja, ich habe den Sitebuilder benutzt, aber ich habe ein ziemlich gutes Wissen über HTML5 & CSS3, wie hier demonstriert werden kann: http://www.codecademy.com/kerpoof/codebits/NsulFX/edit
Wie: Klicken Sie einfach auf die grüne Glühbirne unten links. Danke!
Diese Seite ist jenseits der Grenzen. Siehe oben, unter „Das Beispiel zeigt, wie Sie dies zur Erstellung mehrerer Ränder verwenden können“... Was für eine unglaubliche HTML/CSS/VORSCHAU-App. Sicher, div id=“init-data“ ist eine haarige Übersetzung der Browser-Oberfläche. Aber das ist das erste Mal, dass ich eine solche Sache sehe. Das ist es, was Browser-Programmierer mit Staunen (und Stolz) betrachten. In 10 Jahren wird diese Inspiration vielleicht in einem buchstäblichen DOM auftauchen. So können wir diese Art von Inhalten in einfachem Englisch schreiben. Noch eine gute Sache, Leute! Diese Post-Box hat Schreib- und Vorschau-Tabs, die ebenfalls fehlerfrei funktionieren. Wir alle haben gesehen, wie diese Seite kämpft. Heute strahlen Sie alle. CSS-Tricks, erstaunlich!
Ich versuche, Effekt 3 auf mein eigenes div anzuwenden, aber es funktioniert nicht,
PS: Wenn ich mein div außerhalb aller Container lege, funktioniert der Effekt
Kannst du mir bitte helfen!
Das PlaceKitten-Bild in Ihrem Beispiel für mehrere Ränder wird in meinen Browsern nicht angezeigt (getestet in Chrome und FF bisher). Nach der Recherche zu PlaceKitten habe ich jedoch festgestellt, dass das Hinzufügen eines „g-Modifikators“ die Graustufenversion anzeigen würde, und tatsächlich, als ich das Bild in Chrome inspizierte und seine Quelle von http://placekitten.com/200/200 zu http://placekitten.com/g/200/200 änderte, wurde es einwandfrei angezeigt. Daher gehe ich davon aus, dass es keine Farbversion dieses Bildes gibt.
Wie auch immer, der Artikel ist sehr nützlich und lesenswert.
Beste Grüße
In Kombination mit Bootstrap bricht Bootstrap den Schatten, wie kann das sein?
Hallo! Coole Snippets auf Ihrer Seite, vielen Dank!
Ich habe ein Problem mit dem Schatten. Wenn ich diese Werte eingebe, lädt die Seite sehr langsam und bleibt in Chrome hängen. Sind die Werte zu hoch?
body{
-moz-box-shadow: inset 0 200px 430px #000000;
-webkit-box-shadow: inset 0 200px 430px #000000;
box-shadow: inset 0 200px 430px #000000;
}
Mit freundlichen Grüßen, Felix
Hallo Felix,
Das Testen Ihrer Regel lokal in Chrome 40.0.2214.91 m auf meinem Windows XP Professional-Desktop verursachte keine Probleme. Könnten Sie einen Link zur problematischen Seite angeben? Es könnte eine Art Konflikt mit anderem Code dort geben, da die Seite, auf der ich sie getestet habe, nur den HTML5-Boilerplate-Code enthielt, der unter http://csswizardry.com/2011/01/the-real-html5-boilerplate/ zu finden ist.
Beste Grüße
Hallo Wayne, vielen Dank für das Testen und die Antwort. Am Ende habe ich die Schatten einfach entfernt. Ich bin auch so glücklich; kein weiterer Bedarf, weiter zu suchen. Hier ist die Seite: http://www.empiresofevil.tv
Ja, danke dir auch!
Ich verwende den Schatten-Effekt 5 und ich mag all die verschiedenen Schatten-Effekte sehr. Aber ich kann nicht herausfinden, wie ich den Körper meiner Webseite eine andere Farbe geben und die weiße Farbe in meinem Wrapper beibehalten kann. Wenn ich versuche, dies zu tun, verliere ich den Schatten vollständig. Ich habe versucht, einen z-index zu meinem Wrapper hinzuzufügen, aber das hat nichts geändert. Haben Sie Ideen oder Vorschläge, wie das gehen könnte? Das wäre sehr dankbar.
Hier ist mein Wrapper-Code für den Wrapper…
.wrapper {
background-color: #ffffff;
color: #000000;
margin: 0 auto;
padding: 0;
text-align: left;
box-shadow: 0 0 30px rgba(0, 0, 0, 0.4);
}
Johnna
Ich hatte das gleiche Problem, hier ist, was ich getan habe
Holen Sie sich den übergeordneten Container mit BG-Farbe.
Geben Sie ihm „position: relative“ und „z-index: -1“
Das hat bei mir funktioniert.
Es ist gut
Mehrere Ränder... Das gefällt mir wirklich gut
Sehr gut, danke
Hallo Leute von der Erde, ich bin von einem anderen Planeten. Aber ich möchte HTML und CSS lernen =P
Meine Frage bezieht sich auf Effekt 2. Ist es möglich, das mit einem YouTube-Videoplayer zu machen? Vielen Dank im Voraus! xD
Hallo, ich verwende diesen Code auf meiner Website, um Bilder beim Überfahren mit der Maus hervorzuheben, aber einige der Boxen werden nicht richtig angezeigt. Vielleicht, weil sie unterschiedliche Größen haben??
Hier ist der Code, den ich verwende,
und hier ist der Rest des Codes... es tut genau das, was ich will, wenn es eine quadratische Box ist. Wenn es funktioniert, wäre es großartig.
Gibt es eine einfache Möglichkeit, den Schatten an die Größe der Box anzupassen? Das passiert wahrscheinlich, weil ich eine feste Breite habe, und wenn die Box eine andere Größe hat, funktioniert der Schatten vielleicht nicht... bitte schweben Sie über
weavekingdom.com, wo Sie den Effekt sehen können, wenn Sie über die Bilder im Raster schweben (Bilder unter der Diashow und unter den Kategorien schweben).
Wie bekomme ich den 4. Effekt auf der festen oberen Navigationsleiste?
Das passiert, wenn Sie die Position von relativ auf fix ändern
Hey Keith, du kannst diesen Artikel lesen (https://fluentthemes.com/create-box-shadow-css/), den ich sehr hilfreich fand, um Box-Shadow im Detail zu lernen. Besonders die dort bereitgestellte Syntax ist sehr praktisch.
Versuchte Effekt 2, z-index:-1 auf Pseudoelementen zeigte nichts, z-index:0 funktioniert, aber es ist oben. Vielleicht etwas mit Ancestor-Stacking-Kontext? Ich kann die Ancestors nicht wirklich ändern, nur das Element & den Parent :(