HINWEIS: Ich schlage vor, die Antwort von @ Hamish unten zu lesen. es beinhaltet nicht die unvollständige "Maskierung" in der hier beschriebenen Lösung.
Sie können mit mehreren Kastenschatten nah kommen; eine für jede Seite
box-shadow: 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 8px -4px rgba(31, 73, 125, 0.8);
http://jsfiddle.net/YJDdp/
Bearbeiten
Fügen Sie 2 weitere Box-Schatten für die Ober- und Unterseite vorne hinzu, um das Durchbluten auszublenden.
box-shadow: 0 9px 0px 0px white, 0 -9px 0px 0px white, 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 15px -4px rgba(31, 73, 125, 0.8);
http://jsfiddle.net/LE6Lz/
Ich war nicht zufrieden mit der abgerundeten Ober- und Unterseite des Schattens in Deefours Lösung, also schuf ich meine eigene.
inset
box-shadow
erzeugt einen schönen gleichmäßigen Schatten, wobei Ober- und Unterseite abgeschnitten sind.Um diesen Effekt an den Seiten Ihres Elements zu verwenden, erstellen Sie zwei Pseudoelemente
:before
und:after
positionieren Sie sie absolut an den Seiten des ursprünglichen Elements.Bearbeiten
Abhängig von Ihrem Design können Sie möglicherweise verwenden
clip-path
, wie in der Antwort von @ Luke gezeigt. Beachten Sie jedoch, dass dies in vielen Fällen immer noch dazu führt, dass sich der Schatten oben und unten verjüngt, wie Sie in diesem Beispiel sehen können:quelle
:after
Bedürfnissetop: 0
.display: inline-block
, damit Ihr Beispiel funktioniert. Alles in allem: schöne Lösung. +1not
Hilfselemente erfordert<div>
. :-)Versuchen Sie dies, es funktioniert für mich:
quelle
Klassischer Ansatz: Negativer Spread
CSS Box-Shadow verwendet 4 Parameter: H-Shadow, V-Shadow, Blur, Spread:
Der V-Schatten (verischer Schatten) wird auf 0 gesetzt.
Der Parameter " Unschärfe" fügt den Verlaufseffekt hinzu, fügt aber auch einen kleinen Schatten an vertikalen Rändern hinzu (den, den wir entfernen möchten).
Negative Streuung reduziert den Schatten an allen Rändern: Sie können damit spielen und versuchen, diesen kleinen vertikalen Schatten zu entfernen, ohne den an den Seiten zu stark zu beeinflussen (es ist einfacher für kleine Schatten, 5 bis 10 Pixel).
Hier ein Geigenbeispiel .
Zweiter Ansatz: Absolute Div auf der Seite
Fügen Sie Ihrem Element ein leeres Div hinzu und formatieren Sie es mit absoluter Positionierung, damit es den Elementinhalt nicht beeinflusst.
Hier die Geige mit einem Beispiel für linken Schatten.
Drittens: Schatten maskieren
Wenn Sie einen festen Hintergrund haben, können Sie den Seitenschatteneffekt mit zwei Maskierungsschatten ausblenden, die dieselbe Hintergrundfarbe und Unschärfe = 0 haben. Beispiel:
Ich habe dem schwarzen Schatten erneut einen negativen Spread (-3px) hinzugefügt, damit er sich nicht über die Ecken hinaus erstreckt.
Hier die Geige .
quelle
Dies funktioniert gut für alle Browser:
quelle
DEMO
Sie müssen das Vielfache verwenden
box-shadow;
. Eingefügte Eigenschaft lassen es schön und innen aussehenquelle
Ein anderer Weg ist mit:
overflow-y:hidden
auf dem Elternteil mit Polsterung.http://jsfiddle.net/qqx221c8/
quelle
clip-path
ist jetzt (2020) der beste Weg, um Box-Schatten auf bestimmten Seiten von Elementen zu erzielen, insbesondere wenn der erforderliche Effekt ein "sauber geschnittener" Schatten an bestimmten Kanten ist , wie folgt :... im Gegensatz zu einem abgeschwächten / reduzierten / dünner werdenden Schatten wie diesem:
Wenden Sie einfach das folgende CSS auf das betreffende Element an:
Wo:
Apx
Legt die Schattensichtbarkeit für die Oberkante festBpx
richtigCpx
UnterseiteDpx
linksGeben Sie für alle Kanten, an denen der Schatten ausgeblendet werden soll, den Wert 0 und für alle Kanten, an denen der Schatten
Xpx + Ypx
angezeigt werden soll, einen negativen Wert (der dem kombinierten Ergebnis aus dem Unschärferadius + den Spreizwerten - entspricht ) ein.quelle
clip-path
Beispiel an? Es gibt 2 Codefragmente. Der erste verwendetclip-path
und hat einen völlig sauberen Schnitt ohne "obere und untere Ecken krümmen sich" - sehr ähnlich wie Ihre Lösung (aber mit viel weniger CSS erforderlich). Das zweite Code-Snippet ist nur zum Vergleich ein Beispiel - viele Lösungen führen zu einem sich zerstreuenden Kastenschatten, den die Leute oft nicht erreichen wollen.box-shadow
Eigenschaft einfach in etwas wie ändern0 0 10px 5px rgba(0,0,0,0.75);
. Beachten Sie denspread
Mehrwert und reduzieren Sieblur-radius
.Es funktioniert auf meiner Seite. Hoffe, es hilft dir.
quelle
NICE INSET SHADOW LINKS UND RECHTS FÜR DIVS, BILDER ODER INNENINHALT
Verwenden Sie diese Methode, um einen schönen Schatten auf der rechten und linken Seite von Bildern oder anderen Inhalten zu erhalten
*** Der Z-Index: -1 macht einen schönen Trick, wenn Bilder oder innere Objekte mit Einschüben angezeigt werden
quelle
In einigen Situationen können Sie den Schatten durch einen anderen Container ausblenden. Wenn sich beispielsweise über und unter dem DIV ein DIV mit dem Schatten befindet, können Sie ihn
position: relative; z-index: 1;
für die umgebenden DIVs verwenden.quelle
Nur für Horizontale können Sie den Kastenschatten mit einem Überlauf auf dem übergeordneten Div austricksen:
quelle
Eine andere Idee könnte darin bestehen, ein dunkel verschwommenes Pseudoelement mit Transparenz zu erzeugen, um Schatten zu imitieren. Machen Sie es mit etwas weniger Höhe und mehr Breite ig
quelle
Sie können 1 div darin verwenden, um den Schatten zu "löschen":
Sie können mit "height:%;" und "width:%;" um den gewünschten Schatten zu löschen.
quelle
Aus irgendeinem Grund würden die hier gegebenen Antworten in meinem Fall einfach nicht funktionieren. Also wurde ich kreativ. Hier ist eine neue Lösung für Sie, die alles
linear-gradient()
anstelle von verwendetbox-shadow
.Obwohl ich nicht über den Punkt streiten möchte, ist dies nicht wirklich eine "Box", die Sie (wir) zu formen versuchen, also könnte man sagen, dass
box-shadow
dies zunächst keinen Sinn ergab.quelle
Ich habe versucht, den Bootstrap Shadow-Sm genau auf der rechten Seite zu kopieren. Hier ist mein Code:
quelle