Ответ 1
Это то, что сработало для меня:
box-shadow: inset 1px 4px 9px -6px;
Пример: http://jsfiddle.net/23Egu/
Мне интересно о поддержке сторонних внутренних теней в css3.
Я знаю, что это отлично работает на поддерживаемых браузерах.
div { box-shadow:inset 0px 1px 5px black; }
Мне просто интересно, есть ли способ добиться чего-то вроде:
div { box-shadow-top:inset 0px 1px 5px black; }
Это то, что сработало для меня:
box-shadow: inset 1px 4px 9px -6px;
Пример: http://jsfiddle.net/23Egu/
Я не думаю, что вам действительно нужно box-shadow-top
, потому что если вы установите offsetx
на 0 и offsety
на любое положительное значение, только оставшаяся тень будет сверху.
если вы хотите иметь тень сверху и тень внизу, вы просто можете просто использовать два div:
<div style="box-shadow:inset 0 1px 5px black;">
<div style="box-shadow:inset 0 -1px 5px black;">
some content
</div>
</div>
если вы хотите избавиться от тени по сторонам, используйте rgba
вместо цвета hex
и установите более крупный offsety
:
box-shadow:inset 0 5px 5px rgba(0,0,0,.5)
таким образом вы даете тени больше непрозрачности, поэтому стороны остаются скрытыми и с более высокой смещенностью вы получите меньше непрозрачности
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style type="text/css">
body {
background: #1C1C1C;
}
div {
margin: 50px auto;
width: 200px;
height: 200px;
background: #fff;
-webkit-border-radius: 20px;
-khtml-border-radiust: 20px;
-moz-border-radius: 20px;
-o-border-radius: 20px;
border-radius: 20px;
box-shadow:inset 0px 5px 5px rgba(0,0,0,.5);
}
div > div {
background:none;
box-shadow:inset 0px -5px 5px rgba(0,0,0,.5);
}
</style>
</head>
<body>
<div><div></div></div>
</body>
</html>
используя элементы :before
и after
с регулярными тенями, вырезанными на overflow:hidden
в родительском поле, как в этом примере: http://dabblet.com/gist/2585782
/**
* Top and Bottom inset shadow
*/
#element{
background-color: #E3F2F7;
height: 55px;
position: relative; /* to position pseudo absolute*/
overflow: hidden; /* to cut of overflow shadow*/
margin-top: 200px;
}
#element:before , #element:after{
content: "\0020";
display: block;
position: absolute;
width: 100%;
height: 1px; /* when 0 no shadow is displayed*/
box-shadow: #696c5c 0 0 8px 0;
}
#element:before { top: -1px} /* because of height: 1*/
#element:after { bottom: -1px} /* because of height: 1*/
<div id="element"></div>
В большинстве случаев вы можете использовать градиент фона для работы:
Пример SCSS (с компасом):
@include background(linear-gradient(top, #666 1%, #999 3%, #ddd 6%, #f6f6f6 9%, #f6f6f6 92%, #ddd 94%, #999 97%, #666 99%) );
box-shadow: inset 5px 0 5px -5px rgba(0,0,0,0.5),inset -5px 0 5px -5px rgba(0,0,0,0.5);
-moz-box-shadow: inset 5px 0 5px -5px rgba(0,0,0,0.5),inset -5px 0 5px -5px rgba(0,0,0,0.5);
-webkit-box-shadow: inset 5px 0 5px -5px rgba(0,0,0,0.5),inset -5px 0 5px -5px rgba(0,0,0,0.5);
-o-box-shadow: inset 5px 0 5px -5px rgba(0,0,0,0.5),inset -5px 0 5px -5px rgba(0,0,0,0.5);
Это работает просто прекрасно:)
Вот код, иллюстрирующий это: http://codepen.io/poopsplat/pen/cGBLy
Нет, не напрямую, но вы можете обрезать части, которые вам не нужны, поместив их в div с помощью overflow: hidden
:
Для той же тени, но только сверху:
box-shadow: inset 0px 6px 5px -5px black;
Чтобы иметь тень в одном направлении, вы должны отменить параметр "размытие" параметром "спред", а затем настроить параметры "h-pos" и/или "v-pos" на это же значение. Он не работает с противоположной границей или тройной границей. Вы должны добавить еще одно определение.
Другие примеры здесь: http://codepen.io/GBMan/pen/rVXgqP
box-shadow
для всех четырех сторон. Вы не можете изменить это (пока?). 4 размера в определении box-shadow
: OffsetX
, offsetY
, Blur
и Spread
.
Вы можете выполнить одностороннюю внутреннюю тень, установив свой div на overflow:hidden
и добавив теневые элементы вдоль границ.
Установите внутреннюю тень на верхнюю и нижнюю границы деления:
HTML
<div id="innerShadow">
<div id="innerShadowTop">
Content...
<div id="innerShadowBottom">
</div>
CSS
#innerShadow
{
position: relative;
overflow: hidden;
}
#innerShadowTop
{
width: 100%;
height: 1px;
margin: 0;
padding: 0;
position: absolute;
top: -1px;
-moz-box-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.65);
-webkit-box-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.65);
-o-box-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.65);
box-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.65);
}
#bannerShadowBottom
{
width: 100%;
height: 1px;
margin: 0;
padding: 0;
position: absolute;
bottom: -1px;
-moz-box-shadow: 0px -1px 6px 1px rgba(0, 0, 0, 0.65);
-webkit-box-shadow: 0px -1px 6px 1px rgba(0, 0, 0, 0.65);
-o-box-shadow: 0px -1px 6px 1px rgba(0, 0, 0, 0.65);
box-shadow: 0px -1px 6px 1px rgba(0, 0, 0, 0.65);
}
Множественные тени теней сделали трюк для меня.
box-shadow:
inset 0 -8px 4px 4px rgb(255,255,255),
inset 0 2px 4px 0px rgba(50, 50, 50, 0.75);