Ist es möglich, irgendwie nur einen eingebauten Kastenschatten auf einer Seite eines Div zu haben? Beachten Sie, dass es sich hier um einen eingebauten Kastenschatten handelt, nicht um den normalen äußeren Kastenschatten.
In der folgenden JSFiddle sehen Sie beispielsweise, dass der eingefügte Schatten auf allen vier Seiten in unterschiedlichem Maße angezeigt wird.
Wie kann ich es NUR oben anzeigen lassen? Oder höchstens oben und unten?
JSFiddle: http://jsfiddle.net/ahmadka/KFrun/
.box {
-webkit-box-shadow: inset 0px 5px 10px 1px #000000;
box-shadow: inset 0px 5px 10px 1px #000000;
}
.text {
padding: 20px;
}
<div class="box">
<div class="text">
Lorem ipsum ....
</div>
</div>
Antworten:
Das ist was Sie suchen. Es enthält Beispiele für jede gewünschte Seite mit einem Schatten.
Weitere Beispiele finden Sie im Snippet:
Code-Snippet anzeigen
quelle
Der Trick ist eine Sekunde im
.box-inner
Inneren, die breiter als das Original ist.box
, und die daraufbox-shadow
angewendet wird.Fügen Sie dann mehr Polster hinzu
.text
, um die hinzugefügte Breite auszugleichen.So sieht die Logik aus:
Und so geht's in CSS:
Verwenden Sie die maximale Breite, um
.inner-box
nicht.box
breiter zu werden undoverflow
um sicherzustellen, dass der Rest abgeschnitten wird:110% sind breiter als das Elternteil, was im Kontext eines Kindes 100% ist (sollte dasselbe sein, wenn das Elternteil beispielsweise
.box
eine feste Breite hat). Negative Ränder gleichen die Breite aus und bewirken, dass das Element zentriert wird (anstatt nur den rechten Teil auszublenden):Fügen Sie auf der X-Achse eine Polsterung hinzu, um die Breite auszugleichen
.inner-box
:Hier ist eine funktionierende Geige.
Wenn Sie die Geige inspizieren, werden Sie sehen:
quelle
div
, um den Schatten zu verbergen ... jsfiddle.net/KFrun/19Ziemlich spät, aber eine doppelte Antwort, bei der das Auffüllen nicht geändert oder zusätzliche Divs hinzugefügt werden müssen, finden Sie hier: Es liegt nur ein Problem mit dem Box-Shadow-Inset-Boden vor . Es heißt: "Verwenden Sie einen negativen Wert für die vierte Länge, der die Ausbreitungsentfernung definiert. Dies wird oft übersehen, aber von allen gängigen Browsern unterstützt."
Aus der Geige des Antwortenden :
quelle
Das kommt ein wenig näher.
quelle
versuchen Sie es, vielleicht nützlich ...
oben,
CSS
weil Sie unten einen Kastenschatten haben.Sie können mehr rot Hier
quelle
Dies könnte nicht die genaue Sache, die Sie suchen, aber Sie können mit einem sehr ähnlichen Effekt erzeugen
rgba
in Kombination mitlinear-gradient
:Dies erzeugt einen linearen Farbverlauf von Schwarz mit 50% Deckkraft (
rgba(0,0,0,.5)
) zu transparent (rgba(0,0,0,0)
), der 30% von oben kompetent transparent wird. Sie können mit diesen Werten spielen, um den gewünschten Effekt zu erzielen. Sie können es auf einer anderen Seite haben, indem Sie einen Grad-Wert (linear-gradient(90deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,0) 30%)
) hinzufügen oder die Farben vertauschen. Wenn Sie wirklich komplexe Schatten wie verschiedene Winkel auf verschiedenen Seiten wünschen, können Sie sogar mit der Überlagerung beginnenlinear-gradient
.Hier ist ein Ausschnitt, um es in Aktion zu sehen:
quelle
Inset Box Shadow nur auf der Oberseite?
quelle