Снять правую сторону тени коробки
Я нашел много сообщений, похожих на то, о чем я прошу, и работал над этим часами, и, наконец, решил, что я, вероятно, должен обратиться к внешнему совету:).
Я пытаюсь затенять 3 стороны div, используя box-shadow. Я хочу, чтобы правая сторона была без тени, но не может понять, что есть много сообщений о том, как отменить тень, но после бесчисленных усилий я не мог даже примените это.
Ответы
Ответ 1
Я думаю, у вас есть 2 варианта:
1) Установите горизонтальное выравнивание тени влево (отрицательные значения).
box-shadow: -30px 0px 10px 10px #888888;
Хотя таким образом у вас не будет такого же размера тени сверху и снизу.
2) Используйте div внутри div и применяйте тень к каждому.
.div1
{
box-shadow: -30px 10px 20px 10px #888888;
}
.div2
{
box-shadow: -30px -10px 20px 10px #888888;
}
Затем вам нужно будет выбрать размер, который вы хотите.
Здесь есть jsfiddle: http://jsfiddle.net/EwgKF/19/
Ответ 2
Если вы хотите использовать экспериментальную технологию только с частичной поддержкой, вы можете использовать clip path
свойство.
Это даст вам именно тот эффект, который, как я полагаю, после вас: обычная тень на верхнем, левом и нижнем краях и чистое отсечение на правом краю. Многие другие решения SO для этой проблемы приводят к тени, которые "рассеиваются", когда они приближаются к краю, который не должен иметь тени.
В вашем случае вы будете использовать clip-path: inset (px px px px); где значения пикселей вычисляются из рассматриваемого края (см. ниже).
#container {
box-shadow: 0 0 5px rgba(0,0,0,0.8);
clip-path: inset(-5px 0px -5px -5px);
}
Это закроет div в вопросе:
- 5 пикселей над верхним краем (чтобы включить тень)
- 0 пикселей от правого края (чтобы скрыть тень)
- 5 пикселей над нижним краем (чтобы включить тень)
- 5 пикселей за пределами левого края (для включения тени)
Обратите внимание, что между значениями пикселей не требуются никакие запятые.
Размер div может быть гибким.
Ответ 3
Используйте :after
псевдоэлемент: http://jsfiddle.net/romiguelangel/YCh6F/
HTML
<ul>
<li><a href="#">item</a></li>
<li class="hello"><a href="#">item with after element</a></li>
</ul>
CSS
li {
display: block;
position: relative;
-webkit-box-shadow: 0 0 2px 1px gray
}
.hello:after{
display: block;
background-color: #f3f5f6;
width: 20px;
height: 38px;
content: " ";
position: absolute;
top: 0;
right: -10px
}
Ответ 4
попробуйте использовать этот пример, не имеет правой границы:
JsBin Demo