Jakikolwiek sposób, aby uzyskać cień z lewej i prawej strony (poziomy?) Bez hacków i obrazów. Ja używam:
box-shadow: 0 0 15px 5px rgba(31, 73, 125, 0.8);
Ale daje cień dookoła.
Nie mam granic wokół elementów.
UWAGA: Sugeruję sprawdzenie odpowiedzi @ Hamish poniżej; nie obejmuje niedoskonałego „maskowania” w opisanym tutaj rozwiązaniu.
Możesz zbliżyć się za pomocą wielu cieni; jeden na każdą stronę
box-shadow: 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 8px -4px rgba(31, 73, 125, 0.8);
Edytować
Dodaj jeszcze 2 cienie dla górnego i dolnego przodu, aby zamaskować krwawienie.
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);
Nie byłem zadowolony z zaokrąglonego górnego i dolnego cienia obecnego w rozwiązaniu Deefour, więc stworzyłem swój własny.
inset
box-shadow
tworzy ładny jednolity cień z odciętą górną i dolną częścią.Aby użyć tego efektu po bokach elementu, utwórz dwa pseudoelementy
:before
i:after
umieść je absolutnie po bokach oryginalnego elementu.Edytować
W zależności od projektu możesz być w stanie używać
clip-path
, jak pokazano w odpowiedzi @ Luke'a. Pamiętaj jednak, że w wielu przypadkach nadal powoduje to, że cień zwęża się u góry iu dołu, jak widać w tym przykładzie:źródło
:after
potrzebytop: 0
.display: inline-block
do pseudo klas, żeby twój przykład działał. W sumie: fajne rozwiązanie. +1not
pomocniczych<div>
. :-)Wypróbuj to, działa dla mnie:
źródło
Podejście klasyczne: spread ujemny
CSS box-shadow używa 4 parametrów: h-shadow, v-shadow, blur, spread:
V cieni (shadow verical) jest ustawiony na 0.
Rozmycie parametr dodaje efekt gradientu, ale także dodaje trochę cienia na granicach pionowych (jeden chcemy się pozbyć).
Negatywne rozproszenie zmniejsza cień na wszystkich granicach: możesz się nim bawić, próbując usunąć ten mały pionowy cień bez wpływu na zbyt duży na bokach (łatwiej jest dla małych cieni, od 5 do 10 pikseli).
Oto przykład skrzypiec .
Drugie podejście: Absolutny div z boku
Dodaj pusty element div do elementu i nadaj mu styl absolutnego położenia, aby nie wpływał na zawartość elementu.
Oto skrzypce z przykładem lewego cienia.
Po trzecie: maskowanie cienia
Jeśli masz stałe tło, możesz ukryć efekt cienia bocznego za pomocą dwóch cieni maskujących o tym samym kolorze tła i rozmycia = 0, przykład:
Ponownie dodałem ujemny spread (-3px) do czarnego cienia, aby nie rozciągał się poza narożniki.
Oto skrzypce .
źródło
Działa to dobrze dla wszystkich przeglądarek:
źródło
PRÓBNY
Musisz użyć wielokrotności
box-shadow;
. Właściwość wstawki sprawia, że wygląda ładnie i wewnątrzźródło
Innym sposobem jest:
overflow-y:hidden
na rodzicu z wypełnieniem.http://jsfiddle.net/qqx221c8/
źródło
clip-path
jest teraz (2020) najlepszym sposobem, w jaki udało mi się uzyskać cienie ramek na określonych bokach elementów, szczególnie gdy wymaganym efektem jest cień „czystego cięcia” na poszczególnych krawędziach , taki jak ten:... w przeciwieństwie do osłabionego / zmniejszonego / przerzedzającego się cienia:
Po prostu zastosuj następujący CSS do danego elementu:
Gdzie:
Apx
ustawia widoczność cienia dla górnej krawędziBpx
dobrzeCpx
DolnyDpx
lewoWprowadź wartość 0 dla wszystkich krawędzi, na których cień powinien być ukryty, oraz wartość ujemną (taką samą jak łączny wynik promienia rozmycia + wartości rozproszenia -
Xpx + Ypx
) na wszystkich krawędziach, na których cień powinien zostać wyświetlony.źródło
clip-path
przykład? Istnieją 2 fragmenty kodu. Pierwsze użycieclip-path
i ma całkowicie czyste odcięcie bez „górnego i dolnego rogu zakrzywionego w” - bardzo podobnie do twojego rozwiązania (ale z dużo mniej wymaganym CSS). Drugi fragment kodu jest przykładem wyłącznie do porównania - wiele rozwiązań powoduje rozproszenie cienia, które często nie jest tym, co ludzie chcą osiągnąć.box-shadow
właściwość na coś podobnego0 0 10px 5px rgba(0,0,0,0.75);
. Zwróć uwagę naspread
wartość dodaną i zmniejszonąblur-radius
.Działa po mojej stronie. Mam nadzieję, że ci to pomaga.
źródło
ŁADNY CIENEK WEWNĘTRZNY NA LEWEJ I PRAWEJ STRONIE DLA NURKÓW, OBRAZÓW LUB TREŚCI WEWNĘTRZNYCH
Aby uzyskać ładny wstawkowy cień po prawej i lewej stronie na obrazach lub innej zawartości, użyj go w ten sposób
*** Indeks Z: -1 to niezła sztuczka, gdy wyświetla się obrazy lub obiekty wewnętrzne z wypustkami
źródło
W niektórych sytuacjach możesz ukryć cień przy innym pojemniku. Na przykład, jeśli DIV znajduje się powyżej i poniżej DIV z cieniem, możesz użyć
position: relative; z-index: 1;
na otaczających DIV.źródło
Tylko w poziomie, możesz oszukać cień pola za pomocą przepełnienia jego rodzica div:
źródło
Innym pomysłem może być stworzenie ciemnego, zamazanego pseudoelementu, ostatecznie z przezroczystością imitującą cień. Zrób to z nieco mniejszą wysokością i większą szerokością ig
źródło
Możesz użyć 1 div wewnątrz, aby „wymazać” cień:
Możesz grać z „height:%;” i „szerokość:%;” aby usunąć pożądany cień.
źródło
Z jakiegokolwiek powodu podane tutaj odpowiedzi po prostu nie działałyby w moim przypadku. Mam kreatywność. Oto nowe rozwiązanie dla Ciebie, które używa
linear-gradient()
zamiastbox-shadow
.Chociaż nie zamierzam kłócić się o to, nie jest to tak naprawdę „pudełko”, które ty (my) próbujemy stworzyć, więc przypuszczam, że można powiedzieć, że
box-shadow
nie miało to sensu na początek.źródło
Próbowałem skopiować bootstrap shadow-sm po prawej stronie, oto mój kod:
źródło