Cień tylko na dole CSS3

Czy jest sposób, aby rzucić cień tylko na dno?. Mam menu z 2 obrazkami obok siebie. Nie chcę prawego cienia, bo nakłada się na właściwy obraz. Nie lubię używać do tego zdjęć, więc jest sposób, aby upuścić go tylko na dole, jak:

box-shadow-bottom: 10px #FFF; lub podobne?

-moz-box-shadow: 0px 3px 3px #000;
-webkit-box-shadow: 0px 3px 3px #000;
box-shadow-bottom: 5px #000;
/* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000')";
/* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000');
 201
Author: Hristo, 2011-03-28

11 answers

UPDATE 4

Tak samo jak update 3, ale z nowoczesnym css (=less rules) tak, że nie jest wymagane specjalne pozycjonowanie na pseudo elemencie.

#box {
    background-color: #3D6AA2;
    width: 160px;
    height: 90px;
    position: absolute;
    top: calc(10% - 10px);
    left: calc(50% - 80px);
}

.box-shadow:after {
    content:"";
    position:absolute;
    width:100%;
    bottom:1px;
    z-index:-1;
    transform:scale(.9);
    box-shadow: 0px 0px 8px 2px #000000;
}
<div id="box" class="box-shadow"></div>

UPDATE 3

Wszystkie moje poprzednie odpowiedzi używały dodatkowych znaczników, aby uzyskać ten efekt, który niekoniecznie jest potrzebny. Myślę, że to dużo czystszego roztworu... jedyną sztuczką jest zabawa z wartościami, aby uzyskać właściwe pozycjonowanie cienia, a także prawo Siła / nieprzezroczystość cienia. Oto nowe skrzypce, używając pseudo-elementów :

Http://jsfiddle.net/UnsungHero97/ARRRZ/2/

HTML

<div id="box" class="box-shadow"></div>

CSS

#box {
    background-color: #3D6AA2;
    width: 160px;
    height: 90px;
    margin-top: -45px;
    margin-left: -80px;
    position: absolute;
    top: 50%;
    left: 50%;
}

.box-shadow:after {
    content: "";
    width: 150px;
    height: 1px;
    margin-top: 88px;
    margin-left: -75px;
    display: block;
    position: absolute;
    left: 50%;
    z-index: -1;
    -webkit-box-shadow: 0px 0px 8px 2px #000000;
       -moz-box-shadow: 0px 0px 8px 2px #000000;
            box-shadow: 0px 0px 8px 2px #000000;
}

UPDATE 2

Najwyraźniej możesz to zrobić za pomocą dodatkowego parametru do CSS box-shadow, jak wszyscy inni właśnie zauważyli. Oto demo:

Http://jsfiddle.net/K88H9/821/

CSS

-webkit-box-shadow: 0 4px 4px -2px #000000;
   -moz-box-shadow: 0 4px 4px -2px #000000;
        box-shadow: 0 4px 4px -2px #000000;
To byłoby lepsze rozwiązanie. Dodatkowy parametr, który jest dodawany, jest opisany jako:

Czwarta długość jest rozłożona odległość. Wartości dodatnie powodują kształt cienia rozszerzający się we wszystkich kierunki o określony promień. Wartości ujemne powodują kształt cienia do umowy.

UPDATE

Zobacz demo w jsFiddle: http://jsfiddle.net/K88H9/4/

To, co zrobiłem, to stworzenie "elementu cienia", który ukryłby się za rzeczywistym elementem, który chciałbyś mieć cień. Zrobiłem szerokość "shadow element" być dokładnie mniej szeroki niż rzeczywisty element o 2 razy Cień podać; następnie wyrównałem go poprawnie.

HTML

<div id="wrapper">
    <div id="element"></div>
    <div id="shadow"></div>
</div>

CSS

#wrapper {
    width: 84px;
    position: relative;
}
#element {
    background-color: #3D668F;
    height: 54px;
    width: 100%;
    position: relative;
    z-index: 10;
}
#shadow {
    background-color: #3D668F;
    height: 8px;
    width: 80px;
    margin-left: -40px;
    position: absolute;
    bottom: 0px;
    left: 50%;
    z-index: 5;
    -webkit-box-shadow: 0px 2px 4px #000000;
       -moz-box-shadow: 0px 2px 4px #000000;
            box-shadow: 0px 2px 4px #000000;
}

Oryginalna Odpowiedź

Tak, możesz to zrobić z tą samą składnią, którą masz pod warunkiem. Pierwsza wartość kontroluje pozycjonowanie poziome, a druga wartość kontroluje pozycjonowanie pionowe. Więc po prostu ustaw pierwszą wartość na 0px, a drugą na dowolne przesunięcie w następujący sposób:

-webkit-box-shadow: 0px 5px #000000;
   -moz-box-shadow: 0px 5px #000000;
        box-shadow: 0px 5px #000000;

Aby uzyskać więcej informacji na temat cieni pudełkowych, sprawdź te:

Mam nadzieję, że to pomoże.
 215
Author: Hristo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 21:26:00

Wystarczy użyć parametru spread, aby cień był mniejszy:

.shadow {
  -webkit-box-shadow: 0 6px 4px -4px black;
  -moz-box-shadow: 0 6px 4px -4px black;
  box-shadow: 0 6px 4px -4px black;
}
<div class="shadow">Some content</div>

Live demo: http://dabblet.com/gist/a8f8ba527f5cff607327

Aby nie widzieć cienia po bokach, (wartość bezwzględna) promień rozsyłu (4. parametr) musi być taka sama jak promień rozmycia (3.parametr).

 61
Author: Lea Verou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 19:44:23

Jeśli masz stały kolor tła, możesz ukryć efekt cienia bocznego za pomocą dwóch cieni maskujących o tym samym kolorze tła i rozmyciu = 0, przykład:

box-shadow: 
    -6px 0 white,         /*Left masking shadow*/
    6px 0 white,          /*Right masking shadow*/
    0 7px 4px -3px black; /*The real (slim) shadow*/

Zauważ, że czarny cień musi być ostatni i ma ujemny spread (- 3px), aby zapobiec jego rozciągnięciu poza rogi.

Tutaj fiddle (Zmień kolor cieni maskujących, aby zobaczyć, jak naprawdę działa ).

Tutaj wpisz opis obrazka

 20
Author: T30,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-29 08:36:54

Zawsze lepiej przeczytać specyfikacje . Nie ma box-shadow-bottom właściwości i jak wskazuje Lea, powinieneś zawsze umieszczać nie-prefiksowaną właściwość na dole, po prefiksach.

Więc jest:

.shadow {
  -webkit-box-shadow: 0px 2px 4px #000000;
  -moz-box-shadow: 0px 2px 4px #000000;
  box-shadow: 0px 2px 4px #000000;
}
<div class="shadow">Some content</div>
 5
Author: Misha Reyzlin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 15:02:31

Myślę, że o to ci chodzi?

.shadow {
  -webkit-box-shadow: 0 0 0 4px white, 0 6px 4px black;
  -moz-box-shadow: 0 0 0 4px white, 0 6px 4px black;
  box-shadow: 0 0 0 4px white, 0 6px 4px black;
}
<div class="shadow">wefwefwef</div>
 5
Author: James T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 15:02:51

A może po prostu użyć zawierającego div, który ma overflow ustawiony na hidden i jakieś wyściółki na dole? To chyba najprostsze rozwiązanie.

Przepraszam, że nie pomyślałem o tym, ale zobaczyłem to gdzie indziej .

Używanie elementu do zawijania elementu, który otrzymuje Cień pudełka i przepełnienie: Ukryty na opakowaniu może sprawić, że dodatkowy cień pudełka zniknie i nadal będzie miał użyteczną obramowanie. Rozwiązuje to również problem, w którym element jest mniejszy jak się wydaje, z powodu rozprzestrzeniania się.

Tak:

#wrapper { padding-bottom: 10px; overflow: hidden; }
#elem { box-shadow: 0 0 10px black; }

Treść idzie tutaj

Wciąż sprytne rozwiązanie, gdy trzeba to zrobić w czystym CSS!

Jak powiedział Jorgen Evens .

 2
Author: Ben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 20:59:31

Potrzebowałem również cienia, ale tylko pod obrazem i ustawię go lekko w lewo i w prawo. To mi się udało:

.box-shadow {
   -webkit-box-shadow: 5px 35px 30px -25px #888888;
      -moz-box-shadow: 5px 35px 30px -25px #888888;
           box-shadow: 5px 35px 30px -25px #888888;
}

Element, do którego zostanie zastosowany, to obraz na całej stronie (980px x 300px).

Jeśli to pomaga podczas majstrowania z ustawieniami, działają one w następujący sposób:

Cień poziomy, Cień pionowy, odległość rozmycia, rozprzestrzenianie (tj. rozmiar cienia) i kolor.

 1
Author: Chris9,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-06 02:37:19

Jeśli Twoje tło jest stałe (lub możesz je odtworzyć za pomocą CSS), możesz użyć gradientu liniowego w ten sposób:

div {
  background-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 5px, #fff 5px, #fff 100%)
}
<div>
<p>Foobar</p>
<p>test</p>
</div>

Spowoduje to wygenerowanie gradientu 5px u dołu elementu, od czerni przy 30% kryciu do całkowicie przezroczystego. Reszta elementu ma białe tło. Oczywiście, zmieniając ostatnie 2 przystanki kolorów gradientu liniowego, możesz sprawić, że tło będzie całkowicie przezroczyste.

 0
Author: Tibo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-18 00:04:01

Lepiej poszukać Cienia:

.header{
    -webkit-box-shadow: 0 -8px 73px 0 rgba(0,0,0,0.2);
    -moz-box-shadow: 0 -8px 73px 0 rgba(0,0,0,0.2);
    box-shadow: 0 -8px 73px 0 rgba(0,0,0,0.2);
}

Ten kod jest obecnie używany w sieci stackoverflow.

 0
Author: Kamlesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-04 12:42:20

Update on someone else his answer transparant sides instead then white so it works on other color background too.

body {
  background: url(http://s1.picswalls.com/wallpapers/2016/03/29/beautiful-nature-backgrounds_042320876_304.jpg)
}

div {
  background: url(https://www.w3schools.com/w3css/img_avatar3.png) center center;
  background-size: contain;
  width: 100px;
  height: 100px;
  margin: 50px;
  border: 5px solid white;
  box-shadow: 0px 0 rgba(0, 0, 0, 0), 0px 0 rgba(0, 0, 0, 0), 0 7px 7px -5px black;
}
<div>
</div>
 -1
Author: Jaron Koopmans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-03 14:39:32

Wewnętrzny Cień

 .shadow {
   -webkit-box-shadow: inset 0 0 9px #000;
   -moz-box-shadow: inset 0 0 9px #000;
   box-shadow: inset 0 0 9px #000;
 }
<div class="shadow">wefwefwef</div>
 -3
Author: Raji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-18 23:23:36