css3 box тени только в одном направлении? - PullRequest
48 голосов
/ 21 января 2011

У меня есть элемент с вложенными тенями, но я хочу, чтобы тень была только сверху.

Нет ли способа установить только верхнюю тень?Нужно ли прибегать к созданию дополнительных элементов для наложения боковых теней?

Ответы [ 7 ]

121 голосов
/ 21 января 2011

Технически это тот же ответ, что и @ChrisJ, с некоторыми подробностями о том, как заставить box-shadow делать ваши ставки:

для справки элементы * необязательны :

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

<spread-radius> должен быть отрицательным <blur-radius> (чтобы не было видно ни одной из других размытых сторон), а затем вам нужно уменьшить <offset-y> на ту же величину:

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

Это даст вам одну градиентную полосу на вершине элемента.

9 голосов
/ 21 января 2011

box-shadow смещает тень на заданную величину в каждом направлении. Поэтому вам нужно, чтобы смещение по оси x было равно 0, а по оси y - что-то отрицательное.

Кроме того, вы должны поиграть с радиусом размытия и радиусом распространения, чтобы тень не была видна слева и справа.

Пример:

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

См. Описание в Mozilla Developer Network .

2 голосов
/ 06 августа 2012

Пример:

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

Первый параметр и второй параметр задают смещение тени в направлении x и направлении y соответственно.Третий параметр указывает расстояние размытия.Наконец, четвертый параметр задает расстояние разброса.

Указание только второго параметра с требуемым смещением дает верхнюю тень без боковых теней.

Здесь можно найти демонстрацию: http://jsfiddle.net/rEdBy/

Очень хороший урок по CSS3 Box shadows - http://www.css3.info/preview/box-shadow/

2 голосов
/ 21 января 2011

Лучше было бы использовать градиент фона, здесь обе стороны в сторону.

http://jsfiddle.net/wh3L8/

1 голос
/ 02 августа 2013

Вот мой пример, пожалуйста, попробуйте один раз

-webkit-box-shadow: 0 8px 6px -6px black;
-moz-box-shadow: 0 8px 6px -6px black;
box-shadow: 0 8px 6px -6px black;
0 голосов
/ 17 января 2013

Возможно, попробуйте использовать box-shadow:

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

с переполнением-x:

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

используйте overflow-x: hidden; иbox-shadow: 0px 10px 16px -10px #000;

0 голосов
/ 08 июня 2012

Вот небольшой взлом, который я сделал.

<div id="element"><!--element that I want an one-sided inset shadow from the bottom--></div> 
<div class="one_side_shadow"></div>
  1. Создайте <div class="one_side_shadow"></div> прямо под элементом, для которого я хочу создать одностороннюю тень от коробки (в этом случае я хочу одностороннюю тень для id="element", идущую снизу)

  2. Затем я создал обычную теневую рамку, используя отрицательное вертикальное смещение, чтобы подтолкнуть тень вверх в одну сторону.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...