【发布时间】:2013-06-10 03:32:13
【问题描述】:
我正在尝试使用 HTML5、CSS3 和 JavaScript 创建一个 iOS 7 风格的磨砂外观,它可以在 webkit 浏览器上运行。
技术上,给定以下 HTML:
<style>
#partial-overlay {
width: 100%;
height: 20px;
background: rgba(255, 255, 255, .2); /* TODO frost */
position: fixed;
top: 0;
left: 0;
}
</style>
<div id="main-view">
<div style="width: 50px; height: 50px; background: #f00"></div>
To my left is a red box<br>
Now there is just text<br>
Text that goes on for a few pixels <br>
or even more
</div>
<div id="partial-overlay">
Here is some content
</div>
我想将-webkit-filter: blur(5px) 之类的东西应用到#main-view 水平方向的前20px。
如果 CSS 被修改为 #partial-overlay { width: 20px; height: 100%; ...},那么我需要将 -webkit-filter: blur(5px) 垂直应用到前 20 像素。
显而易见的解决方案是使用 javascript 克隆 #main-view,设置 overflow: hidden,然后根据需要更改宽度/高度,但在我看来这很难推广到更复杂的页面/CSS 结构。
有没有更好的方法以最小的性能损失和最大的泛化性来实现这一目标?
编辑:这是我想要实现的一个示例:
【问题讨论】:
-
CSS 是全有或全无的东西。您不能只将属性应用于它的任意部分。最接近“仅前 20px”的方法是使用
:first-line伪元素。 -
@cimmanon 查看已编辑的“明显解决方案”
-
您能否展示一个图像示例来说明您要做什么?如果我正确阅读了这个问题,您可以尝试使用 css 的多背景功能来实现这一点。编辑:另外,对于任何回答这个问题并想要测试的人来说,这是他的示例的 JSFIDDLE:jsfiddle.net/c6Lwf
-
@Askanison4 有帮助吗?
-
@cimmanon,刚刚尝试过,
webkit-filter: blur似乎不适用于first-line,看起来 only some styles 允许用于该伪类
标签: javascript html css webkit