CSS3实现指定区域模糊背景效果思路

 浆糊之家   2018-06-11 16:48   2,653 views 热度值

背景知识:background-size: cover;background-attachment:fixed;filter:blur()

难题:

通常,我们会通过filter:blur()去实现背景高斯模糊,但是缺点很明显,整个背景都模糊了,能不能模糊其中指定的一块呢?比如:

 

能不能只模糊 .content区域呢?

CSS3实现指定区域模糊背景效果思路

尝试:

  • 通过半透明的背景和filter:blur来实现

 

  • 当然效果是不太好的:

方案:

  • .content 的背景换成和父元素一样,再使用 filter:blur()即:

 

  • 效果:

原理:

background-size:coverbackground-attachment:fixed,这两个属性搭配导致了,父子元素虽然大小不一样,但是背景是重合的,即使加上

改变了位置,背景图还是重合的,这个时候模糊子元素就像是模糊了父元素背景的某一部分一样,如图:

CSS3实现指定区域模糊背景效果思路

这是因为:
background-size:coverbackground-attachment:fixed 一起被设置时,这就好比给视口设置了一个position:fixed定位的背景图,然后之前设置背景图的元素可以从它的背景中看到一部分视口的背景图,但是其他元素看不到,譬如:

仔细看下面的 gif:

CSS3实现指定区域模糊背景效果思路

header元素上方的margin-top:200px;导致了空白,但是滚动的时候,背景并没有滚动,我们透过元素的滚动可以看到剩余的背景图。

 发表评论


表情