任何方法得到盒影在左和右(水平?)边只有没有黑客或图像。我正在使用:
box-shadow: 0 0 15px 5px rgba(31, 73, 125, 0.8);
但周围都是阴影。
我在元素周围没有边界。
任何方法得到盒影在左和右(水平?)边只有没有黑客或图像。我正在使用:
box-shadow: 0 0 15px 5px rgba(31, 73, 125, 0.8);
但周围都是阴影。
我在元素周围没有边界。
当前回答
负扩散和掩蔽阴影
CSS box-shadow使用4个参数:h-shadow, v-shadow, blur, spread:
box-shadow: 10px 0 8px -8px black;
模糊参数增加了渐变效果,但也增加了顶部和底部边界的阴影。为了消除这种副作用,我们可以使用:
负扩散减少了所有边界上的阴影:你可以尝试去除小的垂直阴影,而不影响侧面的阴影(对于小阴影更容易,5到10px)。 掩蔽与背景相同颜色的阴影(在本例中为白色),这允许出现标记阴影。注意,这个掩蔽阴影需要有blur = 0来完全覆盖副作用。
这里有两个例子,第二个使用掩蔽阴影:
div { 宽度:100 px; 身高:100 px; 边框:1px纯绿色; 保证金:10 px; 浮:左; } 例二号{ 盒子阴影:-10px 0 8px -8px黑色,10px 0 8px -8px黑色; } # example2 { 不必: 0 -6px白色, 0 6px白色, -7px 0 4px -3px黑色 7px 0 4px -3px黑色; } < div id = "例二" > < / div > < div id = " example2 " > < / div >
如果这些方法都不能满足您的需求,您还可以在任何现有div的旁边添加一个绝对div。
只需要记住将容器div设置为position: relative,这样绝对div就会留在里面。
#青年们{ 位置:相对; 宽度:100 px; 身高:100 px; 保证金:10 px; 边框:1px纯绿色; } .shadow { 位置:绝对的; 高度:100%; 宽度:4 px; 左:0 px; 上图:0 px; Box-shadow: -4px 0 3px黑色; } < div id = "青年们" > 内容在这里 < div class = "影子" > < / div > < / div >
其他回答
clip-path现在(2020)是我发现的在元素的特定侧面实现盒阴影的最佳方法,特别是当所需的效果是在特定边缘的“干净切割”阴影时,就像这样:
.shadow-element { 宽度:100 px; 身高:100 px; background - color: # FFC300; Box-shadow: 0 0 10px 5px rgba(0,0,0,0.75); 剪辑路径:插入(0px -15px 0px -15px); /*位置和左属性需要将元素从父元素的边缘带出来 这样影子就能被看见;左边距也可以实现相同的功能*/ 位置:相对; 左:15 px; } < div class = " shadow-element " > < / div >
...而不是像这样减弱/减少/变薄的阴影:
.shadow-element { 宽度:100 px; 身高:100 px; background - color: # FFC300; 盒影:15px 0 15px -10px rgba(0,0,0,0.75), -15px 0 15px -10px rgba(0,0,0,0.75); /*位置和左属性需要将元素从父元素的边缘带出来 这样影子就能被看见;左边距也可以实现相同的功能*/ 位置:相对; 左:15 px; } < div class = " shadow-element " > < / div >
简单地将以下CSS应用到有问题的元素:
box-shadow: 0 0 Xpx Ypx [hex/rgba]; /* note 0 offset values */
clip-path: inset(Apx Bpx Cpx Dpx);
地点:
Apx为顶部边缘设置阴影可见性 Bpx正确 Cpx底部 Dpx左
对于任何应该隐藏阴影的边,输入一个0的值,对于任何应该显示阴影的边,输入一个负值(与模糊半径+扩展值- Xpx + Ypx的组合结果相同)。
负扩散和掩蔽阴影
CSS box-shadow使用4个参数:h-shadow, v-shadow, blur, spread:
box-shadow: 10px 0 8px -8px black;
模糊参数增加了渐变效果,但也增加了顶部和底部边界的阴影。为了消除这种副作用,我们可以使用:
负扩散减少了所有边界上的阴影:你可以尝试去除小的垂直阴影,而不影响侧面的阴影(对于小阴影更容易,5到10px)。 掩蔽与背景相同颜色的阴影(在本例中为白色),这允许出现标记阴影。注意,这个掩蔽阴影需要有blur = 0来完全覆盖副作用。
这里有两个例子,第二个使用掩蔽阴影:
div { 宽度:100 px; 身高:100 px; 边框:1px纯绿色; 保证金:10 px; 浮:左; } 例二号{ 盒子阴影:-10px 0 8px -8px黑色,10px 0 8px -8px黑色; } # example2 { 不必: 0 -6px白色, 0 6px白色, -7px 0 4px -3px黑色 7px 0 4px -3px黑色; } < div id = "例二" > < / div > < div id = " example2 " > < / div >
如果这些方法都不能满足您的需求,您还可以在任何现有div的旁边添加一个绝对div。
只需要记住将容器div设置为position: relative,这样绝对div就会留在里面。
#青年们{ 位置:相对; 宽度:100 px; 身高:100 px; 保证金:10 px; 边框:1px纯绿色; } .shadow { 位置:绝对的; 高度:100%; 宽度:4 px; 左:0 px; 上图:0 px; Box-shadow: -4px 0 3px黑色; } < div id = "青年们" > 内容在这里 < div class = "影子" > < / div > < / div >
对于水平,你可以在它的父div上使用overflow欺骗box-shadow:
.parent { 溢出:隐藏; } .box-shadow { Box-shadow: 0 5px 5px 0 #000; } < div class = "父" > < div class = "不必“>内容div > < / < / div >
我不满意Deefour的解决方案中圆形的顶部和底部的阴影,所以创建了我自己的解决方案。
插入盒阴影创建一个漂亮的统一的阴影与顶部和底部切断。
要在元素的两侧使用此效果,请创建两个伪元素:before和:after,它们完全位于原始元素的两侧。
Div:之前,Div:之后{ 内容:“”; 高度:100%; 位置:绝对的; 上图:0; 宽度:15 px; } div:{之前 盒子阴影:-15px 0 15px -15px插入; 左:-15 px; } div:{后 盒子阴影:15px 0 15px -15px插入; 右:-15 px; } div { 背景:继续; 身高:100 px; Margin: 0 50px; 宽度:100 px; 位置:相对; } < div > < / div >
Edit
根据您的设计,您可以使用剪辑路径,如@Luke的回答所示。但是,请注意,在很多情况下,这仍然会导致阴影在顶部和底部逐渐减少,就像你在这个例子中看到的那样:
div { 宽度:100 px; 身高:100 px; 背景:# EEE; Box-shadow: 00 15px 0px #000; 剪辑路径:插入(0px -15px 0px -15px); 位置:相对; Margin: 0 50px; } < div > < / div >
如果你想在你的div上面有一个箭头,使用这个:
box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.1);