当前位置:   article > 正文

解决全屏Blur白边问题_ue spiralblur 模糊白边

ue spiralblur 模糊白边

还是在写vtuber-music时候遇到的这个问题,背景的全屏图片需要模糊,但是反复论证filter: blur()只能作用于窗口范围,不能通过margin或者top,left的方式顶出去,而backdrop的方式性能差而且兼容性又不好,所以试来试去找到个办法

效果图

 

Vue特别方法(css伪类)

vue遇到的问题是需要动态刷新背景,而在vue里的css刷新图片url部分是不会携带background-size这个属性的,所以图片变更的代码里带了background-size如下

  1. xxx.background = 'url(' + background.src + ') no-repeat center center/cover fixed'
  2. // 这里/cover就是background-size

而我刚刚说到blur只作用于窗口内,所以无论backfround怎么移动,白边始终都会有,而伪类会解决这个问题,代码如下:

  1. .bg {
  2. position: absolute;
  3. margin: 0;
  4. padding: 0;
  5. width: 100%;
  6. height: 100%;
  7. top: 0;
  8. left: 0;
  9. user-select: none;
  10. transition: background 0.5s;
  11. overflow: hidden;
  12. z-index: 0;
  13. &:after{
  14. content: '';
  15. position: absolute;
  16. width: 130%;
  17. height: 130%;
  18. left: 0;
  19. top: 0;
  20. z-index: 1;
  21. /*backdrop-filter: blur(3rem);*/
  22. filter: blur(2rem);
  23. transform: translate(-3rem,-3rem);
  24. background: inherit;
  25. background-size: 200% 200%;
  26. }
  27. }
  28. /* 这里的 width,height 130% 只是个估算值,要想精细控制建议用 calc() */

用top和left顶住去

这就很简单易懂了

  1. .bg {
  2. position: absolute;
  3. margin: 0;
  4. padding: 0;
  5. width: 130%;
  6. height: 130%;
  7. top: -3rem;
  8. left: -3rem;
  9. user-select: none;
  10. filter: blur(3rem);
  11. /*transform: translate(-3rem,-3rem);*/ // 用这里的transform也行
  12. transition: background 0.5s;
  13. overflow: hidden;
  14. }

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/107559
推荐阅读
相关标签
  

闽ICP备14008679号