父子组件之间互相影响backdrop-filter的css效果

一、遇见的问题:

父组件使用了backdrop-filter的设置,子组件也想配置这个属性的时候,效果会受到影响,我遇到的是子组件不生效,不知道会不会出现别的情况。

UI现在很爱使用backdrop-filter这个设计,以前没发现啥问题,开始做地图以后,面板后面挂了一张地图,父子组件之间关于这个效果的影响就格外明显了。

如图:

很明显预警模块这个子组件的backdrop-filter并没有生效。

二、解决方案:
  1. 简单粗暴的拆开他们的父子组件关系,就不得相互影响了。但是这个得涉及到改一些布局,有时候改起来会觉得有点烦躁。
  2. 在子组件上使用使用伪元素,将backdrop-filter的毛玻璃效果使用到伪元素上,这样子组件的背景就不会受到影响。
  3. 完美方案: 让UI别用这个效果了,又消耗性能~

第二个解决方案,我在使用的过程中出现了,子组件的所有内容都被毛玻璃覆盖。如图:

这个的解决方案是在伪元素上调整z-index保证确保它在内容后面渲染

代码如下

.leftPanel { // 父组件
    width: 335px;
    height: calc(100% - 40px);
    box-sizing: border-box;
    position: absolute;
    top: 24px;
    left: 24px;
    box-shadow: 0px 0px 16px 0px rgba(127, 135, 151, 0.13);
    border-radius: 8px;
    background: var(--cardBg);
    color: var(--cardColor) !important;

    backdrop-filter: blur(10px);


    // 子组件
    .alert-info-wrapper {
        position: absolute;
        left: 360px;
        top: 70px;
        z-index: 0;
    }
    .alert-info-wrapper::before {
        content: '';
        width: 100%;
        height: 100%;
        position: absolute;
        background: var(--cardBg);
        top: 0;
        right: 0;
        backdrop-filter: blur(10px);
        z-index: -1;
    }
}

三、最后效果:

### 回答1: 可能是以下原因导致backdrop-filter: blur不生效: 1.浏览器不支持该属性。请检查您的浏览器是否支持backdrop-filter属性。 2.元素没有设置position属性。backdrop-filter属性只能在position属性设置为fixed或absolute的元素上生效。 3.元素没有设置背景。backdrop-filter属性需要在有背景的元素上才能生效。 4.元素的z-index值太低。请检查元素的z-index值是否低于其他元素,这可能会导致backdrop-filter属性不生效。 5.元素的父级元素设置了overflow:hidden属性。如果元素的父级元素设置了overflow:hidden属性,那么backdrop-filter属性可能会被裁剪掉。 希望以上解答能够帮助您解决问题。 ### 回答2: Backdrop-filter:blur是一种CSS属性,它允许开发人员为一个元素添加一个模糊化的背景效果。使用这个属性可以在某些情况下为网站带来一些独特的视觉效果。 当使用这个属性时,有几个问题可能会导致它不生效。以下是一些常见的原因及其解决方案。 1. 浏览器兼容性问题 Backdrop-filter:blur是一个比较新的CSS属性,不是所有的浏览器都支持它。如果你的网站的大部分访问者使用的是旧版的浏览器,那么这个属性可能不会生效。在这种情况下,你可以考虑使用其他的CSS属性或者检查是否有可以使用的Polyfill。如果你确信这一点是原因,你可以通过在代码中添加一个浏览器前缀来尝试解决这个问题。 2. 使用了不正确的语法 Backdrop-filter:blur是一个相对易于使用的CSS属性,但是在使用它时仍然需要注意语法的正确性。如果在使用时出错了,它可能会导致属性效果不生效。你可以检查你的CSS代码是否使用了正确的语法。如果你不确定正确的语法是什么,可以参考CSS规范或查找一些相关的CSS属性教程。 3. 非透明元素 如果你要为一个非透明元素添加Backdrop-filter:blur效果,那么这个属性可能不生效。这是因为Backdrop-filter属性只能在透明元素上生效。在这种情况下,你可以尝试设置元素的opacity属性以使元素变得半透明从而使Backdrop-filter:blur属性生效。 4. 动画效果影响 请注意,Backdrop-filter:blur属性是一个比较昂贵的属性,会消耗更多的计算资源,尤其是在有动画效果的时候。如果你在网站上使用Backdrop-filter:blur属性的同时有其他的动画效果,则可能导致这个属性不生效。在这种情况下,你可能需要考虑进行优化或重新设计一下你的网站。 总之,Backdrop-filter:blur是一个非常有用和独特的CSS属性,但是在使用时需要注意一些细节。如果你遇到了这个属性不生效的问题,可以尝试检查浏览器兼容性、语法正确性、元素透明性和动画效果是否存在问题。 ### 回答3: backdrop-filter: blur 是CSS3新增加的一个功能,它可以对一个元素的背景进行模糊处理,让前景元素更加突出,从而提升页面的可视性。但是,在实际使用中可能会遇到background-filter: blur不生效的问题,下面就来探讨一下可能的原因和解决方法。 首先,要注意的是,backdrop-filter: blur 是一个比较新的样式属性,不是所有的浏览器都支持,尤其是老旧浏览器,如IE浏览器,就不支持这个属性。因此,在使用这个属性的时候,要针对不同的浏览器做兼容性处理。可以通过使用兼容性前缀或者检测浏览器是否支持该属性来解决这个问题。 其次,backdrop-filter: blur 模糊度的效果还与背景色、透明度等相关属性值有较大关系。一些颜色比较浅或者透明度比较高的背景色,会使得backdrop-filter: blur 样式的效果不明显。此时,可以尝试改变背景色或者调整透明度值来达到更好的效果。 还有一种情况是,可能是其他元素遮挡了背景元素,导致backdrop-filter: blur 样式无法生效。此时,可以在需要模糊的元素之前添加一个“空白”的元素,并设置position为absolute或fixed来避免其他元素遮挡。 最后,也是最常见的问题之一,就是在样式表中写错了属性名或值。在使用backdrop-filter: blur 样式时,要注意正确的写法,如拼写、大小写、参数等有没有错误,否则也会导致样式效果无法生效。 总之,backdrop-filter: blur 样式虽然使用起来非常方便和美观,但是要千方百计地去解决一些可能出现的问题,以确保样式生效。要根据具体情况,从多个方面出发,进行调试和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值