利用 background 和 filter 模糊指定区域

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

难题:

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

<header>
  <div class="content"></div>
</header>  
header {
  width:100vw;
  height:100vh;
  background:url('https://xianshenglu.github.io/css/img-displayed/frosted-glass-tiger.jpg') no-repeat 0/cover fixed;
}
.content {
  width:50%; 
  height:50%;
  background:pink;
}

能不能只模糊 .content区域呢?
1065633-20180429124010494-600193081.png

尝试:

  • 通过半透明的背景和filter:blur来实现
.content {
  width:50%; 
  height:50%;
  background:rgba(255,255,255,0.5);
  filter:blur(20px)
}

当然效果是不太好的:
1065633-20180429124704043-1766348423.png

方案:

  • .content 的背景换成和父元素一样,再使用 filter:blur()即:
.content {
  width:50%; 
  height:50%;
  background:url('https://xianshenglu.github.io/css/img-displayed/frosted-glass-tiger.jpg') no-repeat 0/cover fixed;
  filter:blur(20px)
}

效果:
1065633-20180429125634057-1293178595.png

原理:

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

margin-left:200px;

改变了位置,背景图还是重合的,这个时候模糊子元素就像是模糊了父元素背景的某一部分一样,如图:
1065633-20180429130101720-549157121.png
这是因为:
background-size:coverbackground-attachment:fixed 一起被设置时,这就好比给视口设置了一个position:fixed定位的背景图,然后之前设置背景图的元素可以从它的背景中看到一部分视口的背景图,但是其他元素看不到,譬如:

header {
  width:100vw;
  height:100vh;
  margin-top:200px;
  background:url('https://xianshenglu.github.io/css/img-displayed/frosted-glass-tiger.jpg') no-repeat 0 0/cover fixed;
}

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

参考文档:

CSS background-size: cover + background-attachment: fixed clipping background images

转载于:https://www.cnblogs.com/xianshenglu/p/8970836.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS的background-filter属性用于创建背景模糊效果。通过设置backdrop-filter: blur(x)属性,其中x是一个模糊半径的像素值,可以调整背景元素的模糊程度。例如,backdrop-filter: blur(5px)将创建一个5像素的模糊效果。 如果想要为一个元素添加多个background-filter属性,只需要将它们用空格分开即可。但需要注意的是,并不是所有的背景滤镜效果都能同时使用。在添加多个滤镜效果时,需要小心处理,确保它们能够兼容并产生预期的效果。 以下是一个使用backdrop-filter属性创建背景模糊的示例代码: .background { background-image: url(https://source.unsplash.com/Q7PclNhVRI0); background-position: bottom; background-repeat: no-repeat; background-size: cover; height: 100vh; width: 100%; } .blur { background: rgba(255, 255, 255, 0.2); backdrop-filter: blur(8px); height: 100vh; width: 50%; } .multiple-filters { backdrop-filter: blur(20px) saturate(120%) contrast(200%); } 通过以上代码,可以创建一个具有背景模糊效果的元素。在.blur类中,通过设置rgba颜色和backdrop-filter: blur属性,实现了一个具有模糊效果的背景。在.multiple-filters类中,展示了如何同时应用多个背景滤镜效果,包括模糊、饱和度和对比度调整。 总结来说,background filter css是用于设置背景模糊效果的CSS属性,可以通过backdrop-filter: blur(x)来定义模糊程度,同时也可以添加多个背景滤镜效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [css背景模糊用什么属性_如何用一行代码在css中使背景模糊](https://blog.csdn.net/weixin_26715991/article/details/108898849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值