【发布时间】:2011-04-14 15:07:57
【问题描述】:
现在当我这样做时:
-moz-box-shadow: 0 0 200px #00C0FF;
-webkit-box-shadow: 0 0 200px #00C0FF;
box-shadow: 0 0 200px #00C0FF;
它在所有侧面都给出了一个盒子阴影。我想要它在 3 个侧面,但不是顶部。如何防止阴影出现在顶部?
【问题讨论】:
标签: css
现在当我这样做时:
-moz-box-shadow: 0 0 200px #00C0FF;
-webkit-box-shadow: 0 0 200px #00C0FF;
box-shadow: 0 0 200px #00C0FF;
它在所有侧面都给出了一个盒子阴影。我想要它在 3 个侧面,但不是顶部。如何防止阴影出现在顶部?
【问题讨论】:
标签: css
box-shadow 支持多个逗号,这意味着这是可能的,可以像下面这样完成:
box-shadow: 2px 2px 3px #888, -2px 2px 3px #888;
第一组将阴影带到右侧和底部,而第二组将阴影带到左侧(使用负值)和底部。
跨浏览器支持的完整代码是:
-moz-box-shadow: 2px 2px 3px #888, -2px 2px 3px #888;
-webkit-box-shadow: 2px 2px 3px #888, -2px 2px 3px #888;
box-shadow: 2px 2px 3px #888, -2px 2px 3px #888;
【讨论】:
如果您可以嵌套两个 div,那么您应该能够使用边距和overflow:hidden 的组合来“切掉”顶部阴影,而不会失去其他边缘所需的效果。
例如这个标记:
<div class="outer">
<div class="inner">hello</div>
</div>
还有这个 CSS
.outer {
margin-top: 200px;
overflow: hidden;
}
.inner {
width:200px;
height: 200px;
margin: 0 200px 200px 200px;
-moz-box-shadow: 0px 5px 200px #00C0FF;
-webkit-box-shadow: 0px 5px 200px #00C0FF;
box-shadow: 0px 5px 200px #00C0FF;
}
给出这个结果 - http://jsfiddle.net/ajcw/SLTE7/2/
【讨论】:
只要有一个vertical offset only:
.shadow {
-moz-box-shadow: 0px 5px 200px #00C0FF;
-webkit-box-shadow: 0px 5px 200px #00C0FF;
box-shadow: 0px 5px 200px #00C0FF;
}
这会将阴影向下移动,以减少顶部的阴影。您将不得不使用它才能在您的情况下以您想要的方式获得它。 This site 还提供了一些关于盒子阴影的重要信息,例如分层以及浏览器支持。
【讨论】:
使用伪元素覆盖你不想有阴影的元素的边缘。这类似于 ajcw 的方法,但不需要每次都手动添加额外的元素——只需一次,在你的 CSS 中——并且使用绝对定位,我认为这更简洁。
.nav-link.active {
position: relative;
box-shadow: 0 0 5px #888;
}
.nav-link.active::after {
position: absolute;
content: ' ';
height: 7px;
bottom: -8px;
left: -5px;
right: -5px;
background-color: white;
/*this one's only needed because we don't want this pseudo-element to be clickable*/
pointer-events: none;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="p-4">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Tab 1</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Tab 2</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Tab 3</a>
</li>
</ul>
</div>
【讨论】: