【发布时间】:2013-11-03 23:31:24
【问题描述】:
我希望减少外部依赖——尤其是尽可能用 CSS 效果替换图像,例如在这种情况下:
HTML 和 CSS (as this fiddle shows) 如下。
HTML
<div id="one">
<div></div>
</div>
CSS
#one{
width: 940px;
height: 350px;
padding: 0 10px;
margin: 10px 0;
position: relative;
}
#one{
background-image: url("http://webhost.ischool.uw.edu/~joatwood/portfolio/images/slider-shadow.png");
}
#one > div{
background-color: purple;
width: 100%;
height: 100%;
}
我想要实现的是获得这三样东西:
- 仅在左右边缘从元素上脱落的倾斜阴影(否则无法隐藏溢出,该元素内的其他伪元素必须超出其边缘)
- 阴影应该从黑色渐变为白色,因为它在垂直方向上离中间更远
- 阴影不应该使用直边 - 它应该有点模糊,就像你应用
box-shadow: 5px 5px 5px时的阴影一样
到目前为止,我已经尝试了两种方法,但都没有完全成功:
-
I used
transform: skewXon two container-sized pseudo-elements 带有渐变背景 - 它在 #1 和 #2 上完全成功,但我想不出用它实现 #3 的方法。 -
I used
transform: rotateon the afore-mentioned pseudo-elements 并尝试应用一些框阴影来模拟模糊 - 这种尝试仅在 #3 上成功,就 #1 和 #2 而言根本不起作用。
我可以使用 CSS3,只要它适用于当前的主流浏览器(Firefox、Chrome),但是我不能将任何伪元素应用于内部 <div>,因为它们'重新用于页面上的另一个设计元素。
【问题讨论】:
-
添加一个
box-shadow,并通过:before/:after覆盖三角形来掩盖它? -
@JoshC Like this?除了看起来很奇怪的
box-shadow的剪裁(奇怪的深黑线),我不能限制box-shadow垂直延伸,也不能让阴影更暗/更亮,因为它离容器中间更近/更远垂直。 -
是的,这看起来不太好。不过我发现了一篇有趣的文章。我没有意识到你可以有多个
box-shadow行.. nicolasgallagher.com/css-drop-shadows-without-images/demo -
@JoshC 嗯,可能很有用。如果以后没人弄明白,我会考虑其中的一些例子再试一次。
标签: html css pseudo-element