我正在尝试使用 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>
我想将 a-webkit-filter: blur(5px)
之类的东西水平应用到#main-view
.
如果 CSS 被修改为,#partial-overlay { width: 20px; height: 100%; ...}
那么我需要将其-webkit-filter: blur(5px)
垂直应用到前 20px。
显而易见的解决方案是使用 javascript 克隆#main-view
, 设置overflow: hidden
然后根据需要更改宽度/高度,但在我看来这似乎很难推广到更复杂的页面/CSS 结构。
有没有更好的方法以最小的性能损失和最大的泛化性来实现这一点?
编辑:这是我想要实现的一个例子: