有没有办法让阴影只落在底部?我有一个菜单,两个图像彼此相邻。我不想要一个正确的阴影,因为它重叠了正确的图像。我不喜欢使用图像,所以有没有一种方法只把它放在底部,比如:
box-shadow-bottom: 10px #FFF;或类似的吗?
-moz-box-shadow: 0px 3px 3px #000;
-webkit-box-shadow: 0px 3px 3px #000;
box-shadow-bottom: 5px #000;
/* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000')";
/* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000');
更新别人的答案是透明的,而不是白色的,所以它也适用于其他颜色的背景。
身体{
背景:url (http://s1.picswalls.com/wallpapers/2016/03/29/beautiful-nature-backgrounds_042320876_304.jpg)
}
div {
后台:url(https://www.w3schools.com/w3css/img_avatar3.png) center center;
background-size:包含;
宽度:100 px;
身高:100 px;
保证金:50 px;
边框:5px纯白色;
Box-shadow: 0px 0 rgba(0,0,0,0), 0px 0 rgba(0,0,0,0), 0 7px 7px -5px黑色;
}
< div >
< / div >
最好是查影子:
.header{
-webkit-box-shadow: 0 -8px 73px 0 rgba(0,0,0,0.2);
-moz-box-shadow: 0 -8px 73px 0 rgba(0,0,0,0.2);
box-shadow: 0 -8px 73px 0 rgba(0,0,0,0.2);
}
此代码目前在stackoverflow web上使用。
另一个想法是基于@theengineear的回答,我将使用inset而不是polygon。它更容易,因为它的工作方式与边距或填充相同。我还将依靠CSS变量来轻松定义所有不同的情况。
.shadow {
box-shadow: 0 0 8px 5px rgba(200, 0, 0, 0.5);
clip-path:inset(var(--t,0) var(--r,0) var(--b,0) var(--l,0))
}
.top { --t:-100%; }
.right { --r:-100%;}
.bottom { --b:-100%; }
.left { --l:-100%;}
/* layout for example */
.box {
display: inline-block;
vertical-align: top;
background: #338484;
color: #fff;
width: 4em;
height: 2em;
margin: 1em;
padding: 1em;
}
<div class="box">none</div>
<div class="box shadow top right left bottom">all</div>
<div class="box shadow top">top</div>
<div class="box shadow right">right</div>
<div class="box shadow bottom">bottom</div>
<div class="box shadow left">left</div>
<div class="box shadow bottom right">bottom right</div>
<div class="box shadow bottom top">top bottom</div>
<div class="box shadow left top right">top left right</div>
<div class="box shadow left right"> left right</div>