问候,
我正在尝试将CSS3框阴影仅应用于DIV的顶部,右侧和左侧,其半径与以下CSS的结果相匹配(减去底部阴影)
#div {
-webkit-box-shadow: 0px 0px 10px #000;
-moz-box-shadow: 0px 0px 10px #000;
box-shadow: 0px 0px 10px #000;
}
实现这一目标的最佳方法是什么?
谢谢!
更新 此阴影将应用于页面上的导航栏,该栏位于主容器DIV的顶部。我想要完成的是将主DIV的盒子阴影继续放在位于其上方的导航栏上,但导航栏上没有底部阴影。看一下site itself,看看我在说什么,比在这里添加所有HTML和CSS更容易。
更新2 由于与我合作的DIV是单数,而不是试图在每个导航上留下阴影,我选择将其更改为以下内容:
-webkit-box-shadow: 0px -4px 7px #e6e6e6;
-moz-box-shadow: 0px -4px 7px #e6e6e6;
box-shadow: 0px -4px 7px #e6e6e6;
这使阴影的顶部非常明显,但这是我想要完成的 - 如果有人知道如何保持阴影在容器DIV外观相同,请告诉我。谢谢!
答案 0 :(得分:26)
使用价差......
box-shadow具有以下值
box-shadow: x y blur spread color;
所以你可以使用像..
这样的东西box-shadow: 0px -10px 10px -10px black;
更新:我正在添加jsfiddle
答案 1 :(得分:18)
如果你只用另一个div覆盖底部部分会更好,你会得到一致的阴影。
#servicesContainer {
/*your css*/
position: relative;
}
它已经修复了!像魔术一样!
答案 2 :(得分:14)
您可以为 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;
只有左和右的投影,您可以根据您的要求进行调整
答案 3 :(得分:7)
我找到了用“:after”覆盖阴影的方法,这是我的代码:
#div:after {
content:"";
position:absolute;
width:5px;
background:#fff;
height:38px;
top:1px;
right:-5px;
}
答案 4 :(得分:4)
以下代码为我制作了右侧的阴影插图:
-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;
希望它会有所帮助!!!!
答案 5 :(得分:1)
添加单独的答案,因为它完全不同。
您可以使用rgba并将Alpha通道设置为低(以获得透明度),以使您的投影不太明显。
尝试这样的事情(使用.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);
希望这有帮助!
答案 6 :(得分:1)
我遇到了同样的问题,正在寻找解决这个问题的可能想法。
我的标签已经有了一些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;
}
我认为我会把它作为另一个可能的解决方案,让任何人都为此深思熟虑。
答案 7 :(得分:1)
我知道这是非常古老的,但这些答案都没有帮助我,所以我正在添加我的答案。这与@ yichengliu的答案一样,使用伪::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
的第二个像素测量值),更改高度将有助于出于与上述相同的原因。
答案 8 :(得分:0)
#div:before {
content:"";
position:absolute;
width:100%;
background:#fff;
height:38px;
top:1px;
right:-5px;
}
答案 9 :(得分:0)
我通过将div放在导航链接上解决了此类问题
<div [ngClass]="{'nav-div': tab['active']}"></div>
,然后将此CSS赋予它。
.nav-div {
width: inherit;
position: relative;
height: 8px;
background: white;
top: 4px
}
和导航链接css为
.nav-link {
position: relative;
top: 8px;
&.active {
box-shadow: rgba(0, 0, 0, 0.3) 0 1px 4px -1px;
}
}
希望这会有所帮助!