2011-01-21 7 views
48

Mam element, który ma cienie w formie wstawki, ale chcę cień tylko na górze.cienie w pudełku css3 tylko w jednym kierunku?

Czy nie można ustawić tylko górnego cienia? Czy muszę uciekać się do tworzenia dodatkowych elementów nakładających się na boczne cienie?

Odpowiedz

119

To jest technicznie taka sama odpowiedź jak @ChrisJ, z kilkoma więcej szczegółów na temat jak zrobić box-shadow wykonać rozkazy:

odsyłające te * elementy są opcjonalne:

box-shadow: <inset*> <offset-x> <offset-y> <blur-radius*> <spread-radius*> <color*>; 

Numer <spread-radius> musi być ujemny <blur-radius> (aby nie pojawił się żaden z niewyraźnych boków), a następnie trzeba podnieść <offset-y> dół o tę samą kwotę:

box-shadow: inset 0 20px 20px -20px #000000; 

To daje pojedynczy prążek gradientu w poprzek górnej części elementu.

+20

Dziękuję za Twój Snippet, bardzo mi pomógł. Tylko dla leniwych tutaj jest pełna kodesz dla każdej strony: 'box-shadow: wstawka 15px 0 15px -15px czarny; // zostawiona box-shadow: wstawka -15px 0 15px -15px czarna; // prawidłowa box-shadow : wstawka 0 15px 15px -15px czarny; // top box-shadow: wstawka 0 -15px 15px -15px czarny; // dół 'edit: Niestety, nie udało się poprawnie sformatować, nie wiem dlaczego, dodano dwa spacje. Byłoby miło, gdyby administrator mógł sformatować to we właściwy sposób. – Dominik

+4

dziękuję za to, że pozwoliłeś mi być leniwym :) – Zhanger

+0

Aby utworzyć cień na dole, wystarczy przesunąć y -20px –

9

box-shadow przesuwa cień o określoną kwotę w każdym kierunku. Tak więc potrzebujesz przesunięcia x na 0, a przesunięcia na y na coś negatywnego.

Dodatkowo musisz grać z rozmyciem i promieniem rozsyłu, aby cień nie był widoczny po lewej i prawej stronie.

przykład:

box-shadow: #777 0px -10px 5px -2px; 

Patrz opis na Mozilla Developer Network.

+0

Nie, to nie działa. przesunięcia to x i y nie są lewe i prawe. – Mark

+0

Nie powiedziałem, że: x-offset jest przesunięciem w poziomie; y-offset jest przesunięciem pionowym. Aby mieć cień na górze, musisz mieć offset Y <0. – ChrisJ

+0

@ Mark to działa, jeśli rozumiesz jak używać zzzzBov

0

Oto mały hack, który zrobiłem.

<div id="element"><!--element that I want an one-sided inset shadow from the bottom--></div> 
<div class="one_side_shadow"></div> 
  1. Create a <div class="one_side_shadow"></div> tuż poniżej elementu, który chcę, aby utworzyć pole cień jednego boku (w tym przypadku chcę jednostronna wkładka cień na id="element" pochodzący z dołu)

  2. Następnie utworzyłem zwykły cień w ramce, używając ujemnego przesunięcia w pionie, aby przesunąć cień w jedną stronę.

    box-shadow: 0 -8px 20px 2px # DEDEE3;

2

przykład:

box-shadow: 0 2px 0px 0px red inset; 

pierwszego parametru i drugiego parametru określa przesunięcie cień do osi x i y odpowiednio kierunku. Trzeci parametr określa odległość rozmycia. Wreszcie czwarty parametr określa odległość rozrzutu.

Podanie tylko drugiego parametru z wybranym offsetem daje górny cień bez cieni.

Demo można znaleźć tutaj: http://jsfiddle.net/rEdBy/

Bardzo ładny tutorial CSS3 Box cieni - http://www.css3.info/preview/box-shadow/

0

Może spróbuj box-shadow:

box-shadow: h-shadow v-shadow blur spread color inset;

z przelewem-x:

overflow-x: visible|hidden|scroll|auto|no-display|no-content;

użycie overflow-x: hidden; i box-shadow: 0px 10px 16px -10px #000;

1

Oto mój przykład spróbuj raz

-webkit-box-shadow: 0 8px 6px -6px black; 
-moz-box-shadow: 0 8px 6px -6px black; 
box-shadow: 0 8px 6px -6px black; 
Powiązane problemy