Ответ 1
Лучше, если вы просто прикроете нижнюю часть другим div, и вы получите устойчивую тень по всей доске.
#servicesContainer {
/*your css*/
position: relative;
}
и исправлено! как волшебство!
Привет,
Я пытаюсь применить тень окна CSS3 только к верхней, правой и левой части DIV с радиусом, который соответствует результату следующего CSS (минус нижняя тень)
#div {
-webkit-box-shadow: 0px 0px 10px #000;
-moz-box-shadow: 0px 0px 10px #000;
box-shadow: 0px 0px 10px #000;
}
Каким будет лучший способ достичь этого?
Спасибо!
UPDATE Эта тень будет применена к навигационной панели на странице, панель расположена в верхней части основного контейнера DIV. То, что я пытаюсь выполнить, - это продолжить тень окна основного DIV на навигационную панель, которая находится над ней, но без нижней тени на панели навигации. Посмотрите на сайт, чтобы узнать, о чем я говорю, проще, чем добавлять сюда все HTML и CSS.
ОБНОВЛЕНИЕ 2 Поскольку DIV, с которым я работаю, является единственным, вместо того, чтобы пытаться помещать тень на каждый nav li, я решил изменить его на следующее:
-webkit-box-shadow: 0px -4px 7px #e6e6e6;
-moz-box-shadow: 0px -4px 7px #e6e6e6;
box-shadow: 0px -4px 7px #e6e6e6;
Это делает верхнюю часть тени очень заметной, но это то, что я пытаюсь выполнить - если кто-то знает способ сохранить тень по внешнему виду в контейнере DIV, сообщите мне. Спасибо!
Лучше, если вы просто прикроете нижнюю часть другим div, и вы получите устойчивую тень по всей доске.
#servicesContainer {
/*your css*/
position: relative;
}
и исправлено! как волшебство!
используйте значение распространения...
box-shadow имеет следующие значения
box-shadow: x y blur spread color;
чтобы вы могли использовать что-то вроде..
box-shadow: 0px -10px 10px -10px black;
UPDATE: Я добавляю jsfiddle
Вы можете указать несколько значений для свойства box-shadow
например,
-moz-box-shadow: 0px 10px 12px 0px #000,
0px -10px 12px 0px #000;
-webkit-box-shadow: 0px 10px 12px 0px #000,
0px -10px 12px 0px #000;
box-shadow: 0px 10px 12px 0px #000,
0px -10px 12px 0px #000;
это тень от слева и справа, вы можете адаптировать ее к своим требованиям
Я нашел способ покрыть тень ": after", вот мой код:
#div:after {
content:"";
position:absolute;
width:5px;
background:#fff;
height:38px;
top:1px;
right:-5px;
}
Следующий код сделал для меня создание теневой вставки правой стороны:
-moz-box-shadow: inset -10px 0px 10px -10px #000;
-webkit-box-shadow: inset -10px 0px 10px -10px #000;
box-shadow: inset -10px 0px 10px -10px #000;
Надеюсь, это поможет!!!!
Добавление отдельного ответа, потому что он радикально отличается.
Вы можете использовать rgba и установить альфа-канал на низком уровне (чтобы получить прозрачность), чтобы сделать вашу тень менее заметной.
Попробуйте что-нибудь подобное (играйте с .5)
-webkit-box-shadow: 0px -4px 7px rbga(230, 230, 230, .5);
-moz-box-shadow: 0px -4px 7px rbga(230, 230, 230, .5);
box-shadow: 0px -4px 7px rbga(230, 230, 230, .5);
Надеюсь, это поможет!
У меня была такая же проблема, и я искал возможную идею для решения этой проблемы.
У меня был CSS-код уже для моих вкладок, и это помогло мне:
(Обратите внимание, что padding-bottom: 2px;
внутри #tabs #selected a {
. Это скрывает нижний box-shadow
и отлично работает со мной со следующим CSS.)
#tabs {
margin-top: 1em;
margin-left: 0.5em;
}
#tabs li a {
padding: 1 1em;
position: relative;
top: 1px;
background: #FFFFFF;
}
#tabs #selected {
/* For the "selected" tab */
box-shadow: 0 0 3px #666666;
background: #FFFFFF;
}
#tabs #selected a {
position: relative;
top: 1px;
background: #FFFFFF;
padding-bottom: 2px;
}
#tabs ul {
list-style: none;
padding: 0;
margin: 0;
}
#tabs li {
float: left;
border: 1px solid;
border-bottom-width: 0;
margin: 0 0.5em 0 0;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
Думал, что я поставил бы это в качестве другого возможного решения для тех, кто просматривал SO для этого.
Я знаю, что это очень старый, но ни один из этих ответов не помог мне, поэтому я добавляю свой ответ. Это, как и ответ @yichengliu, использует элемент Pseudo ::after
.
#div {
position: relative;
}
#div::after {
content: '';
position: absolute;
right: 0;
width: 1px;
height: 100%;
z-index: -1;
-webkit-box-shadow: 0px 0px 5px 0px rgba(0,0,0,1);
-moz-box-shadow: 0px 0px 5px 0px rgba(0,0,0,1);
box-shadow: 0px 0px 5px 0px rgba(0,0,0,1);
}
/*or*/
.filter.right::after {
content: '';
position: absolute;
right: 0;
top: 0;
width: 1px;
height: 100%;
background: white;
z-index: -1;
-webkit-filter: drop-shadow(0px 0px 1px rgba(0, 0, 0, 1));
filter: drop-shadow(0px 0px 1px rgba(0, 0, 0, 1));
}
Если вы решите изменить X тени (измерение первого пикселя drop-shadow
или box-shadow
), изменение ширины поможет, так что не похоже, что существует белый промежуток между div и тень.
Если вы решите изменить Y тени (измерение второго пикселя drop-shadow
или box-shadow
), изменение высоты поможет по той же причине, что и выше.
#div:before {
content:"";
position:absolute;
width:100%;
background:#fff;
height:38px;
top:1px;
right:-5px;
}