我正在尝试使用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>
我希望对#main-view
的前20像素水平应用类似于-webkit-filter: blur(5px)
的效果。
如果CSS被修改为#partial-overlay { width: 20px; height: 100%; ...}
,那么我需要在前20个垂直像素上应用-webkit-filter: blur(5px)
。
明显的解决方案是使用JavaScript克隆#main-view
,设置overflow:hidden
,然后根据需要更改宽度/高度,但我认为这很难普遍适用于更复杂的页面/CSS结构。
有没有更好的方法来实现这一点,以最小化性能损失和最大化通用性?
编辑:这是我想要实现的例子:
:first-line
伪元素。 - cimmanonwebkit-filter:blur
似乎不能与first-line
一起使用,看起来这个伪类只允许使用一些样式。 - Subhas