我找不到任何示例来说明如何做到这一点,但如何才能只在元素的顶部和底部添加框阴影?
实际上阴影就是盒子的形状偏移到实际盒子的后面。为了隐藏阴影的部分,您需要创建额外的 div 并将它们的 z 索引设置在阴影框的上方,以便阴影不可见。
如果你想对你的阴影有非常明确的控制,那么把它们构建成图像,并且创建一个带有适量填充和边距的容器 div。.然后使用 png 修复程序来确保阴影在所有浏览器中正确呈现
正如克里斯蒂安所指出的,对 z 值的良好控制通常会解决您的问题。
如果这不工作,你可以看看 只有阴影底部上使用溢出隐藏隐藏多余的阴影。
我还会考虑到,box-shadow 属性可以接受以逗号分隔的阴影列表,如下所示:
box-shadow: 0px 10px 5px #888, 0px -10px 5px #888;
这将给你一些控制在每个方向的“数量”的阴影。
查看 http://www.css3.info/preview/box-shadow/了解更多关于盒子阴影的信息。
希望这就是你要找的!
我已经试过了,我想我有办法了。下面的示例演示如何设置 Box-Shadow,以便它只显示元素顶部和底部插入的阴影。
图例 : insetOption left 位置顶部模糊力量传播力量颜色
描述 实现这一点的关键是将模糊值设置为 < = 传播值的负值(如。插入0px 5 px-?Px 5px # 000; 模糊值应该是 -5或更低) ,并且当从主定位值中减去模糊值时,模糊值应该保持 > 0(例如。使用上面的例子,模糊值应该是 -9或者更高,这样我们就得到了一个模糊值在 -5和 -9之间的最佳值。
解决方案
.styleName { /* for IE 8 and lower */ background-color:#888; filter: progid:DXImageTransform.Microsoft.dropShadow(color=#FFFFCC, offX=0, offY=0, positive=true); /* for IE 9 */ box-shadow: inset 0px 2px -2px 2px rgba(255,255,204,0.7), inset 0px -2px -2px 2px rgba(255,255,204,0.7); /* for webkit browsers */ -webkit-box-shadow: inset 0px 2px -2px 2px rgba(255,255,204,0.7), inset 0px -2px -2px 2px rgba(255,255,204,0.7); /* for firefox 3.6+ */ -moz-box-shadow: inset 0px 2px -2px 2px rgba(255,255,204,0.7), inset 0px -2px -2px 2px rgba(255,255,204,0.7); }
经过一些实验,我发现第四个值在线控制传播(至少在 FF 10)。我反对垂直偏移,给他们一个负的价差。
这是工作笔: http://codepen.io/gillytech/pen/dlbsx
<html> <head> <style type="text/css"> #test { width: 500px; border: 1px #CCC solid; height: 200px; box-shadow: inset 0px 11px 8px -10px #CCC, inset 0px -11px 8px -10px #CCC; } </style> </head> <body> <div id="test"></div> </body> </html>
这对我来说再合适不过了!
所以这是我的第一个答案,因为我需要类似的东西,我做了伪元素2内阴影,和一个额外的 DIV 为上外阴影。不知道这是否是最好的解决方案,但也许它会帮助某人。
超文本标示语言
<div class="shadow-block"> <div class="shadow"></div> <div class="overlay"> <div class="overlay-inner"> content here </div> </div> </div>
CSS
.overlay { background: #f7f7f4; height: 185px; overflow: hidden; position: relative; width: 100%; } .overlay:before { border-radius: 50% 50% 50% 50%; box-shadow: 0 0 50px 2px rgba(1, 1, 1, 0.6); content: " "; display: block; margin: 0 auto; width: 80%; } .overlay:after { border-radius: 50% 50% 50% 50%; box-shadow: 0 0 70px 5px rgba(1, 1, 1, 0.5); content: "-"; display: block; margin: 0 auto; position: absolute; bottom: -65px; left: -50%; right: -50%; width: 80%; } .shadow { position: relative; width:100%; height:8px; margin: 0 0 -22px 0; -webkit-box-shadow: 0px 0px 50px 3px rgba(1, 1, 1, 0.6); box-shadow: 0px 0px 50px 3px rgba(1, 1, 1, 0.6); border-radius: 50%; }