Возможно ли каким-то образом иметь вставку box-shadow только с одной стороны div? Обратите внимание, что здесь я говорю о вставке box-shadow, а не о нормальной внешней box-shadow.
Например, в следующем JSFiddle вы увидите, что внутренняя тень появляется со всех 4 сторон в разной степени.
Как сделать так, чтобы он отображался ТОЛЬКО вверху? Или самое большее ТОЛЬКО вверху и внизу?
JSFiddle: http://jsfiddle.net/ahmadka/KFrun/
.box {
-webkit-box-shadow: inset 0px 5px 10px 1px #000000;
box-shadow: inset 0px 5px 10px 1px #000000;
}
.text {
padding: 20px;
}
<div class="box">
<div class="text">
Lorem ipsum ....
</div>
</div>
Ответы:
Это то, что вы ищете. У него есть примеры для каждой стороны, которую вы хотите с тенью.
Смотрите во фрагменте больше примеров:
Показать фрагмент кода
источник
Хитрость заключается в том, что вторая
.box-inner
внутренняя часть больше по ширине, чем оригинал.box
, и к нейbox-shadow
применяется.Затем добавил дополнительные отступы, чтобы
.text
компенсировать добавленную ширину.Вот как выглядит логика:
А вот как это делается в CSS:
Используйте максимальную ширину,
.inner-box
чтобы не увеличивать ширину.box
иoverflow
чтобы оставшаяся часть была обрезана:110% шире, чем родительский элемент, который составляет 100% в дочернем контексте (например, должно быть таким же, если родительский
.box
элемент имеет фиксированную ширину). Отрицательные поля компенсируют ширину и приводят к центрированию элемента (вместо того, чтобы скрывать только правую часть):И добавьте отступ по оси X, чтобы компенсировать ширину
.inner-box
:Вот рабочий Fiddle.
Если вы посмотрите на Fiddle, вы увидите:
источник
div
чтобы скрыть тень ... jsfiddle.net/KFrun/19Немного поздно, но дублирующий ответ, который не требует изменения отступов или добавления дополнительных div, можно найти здесь: Есть проблема только с нижней частью вставки box-shadow . В нем говорится: «Используйте отрицательное значение для четвертой длины, которая определяет расстояние распространения. Это часто упускается из виду, но поддерживается всеми основными браузерами».
Из скрипки ответчика :
источник
Это немного близко.
источник
попробуй, может пригодится ...
выше,
CSS
потому что у вас есть тень блока внизу.Вы можете больше красного здесь
источник
Возможно, это не совсем то, что вы ищете, но вы можете создать очень похожий эффект, используя
rgba
в сочетании сlinear-gradient
:Это создает линейный градиент от черного с непрозрачностью 50% (
rgba(0,0,0,.5)
) до прозрачного (rgba(0,0,0,0)
), который начинает быть полностью прозрачным на 30% сверху. Вы можете поиграть с этими значениями, чтобы создать желаемый эффект. Вы можете сделать это с другой стороны, добавив deg-value (linear-gradient(90deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,0) 30%)
) или переключая цвета. Если вам нужны действительно сложные тени, такие как разные углы с разных сторон, вы можете даже начать наслоениеlinear-gradient
.Вот фрагмент, чтобы увидеть его в действии:
источник
Вставить тень коробки только на верхней стороне?
источник