Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 315|回复: 0

解决css3毛玻璃效果(blur)有白边问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-5-9 12:54:47 | 显示全部楼层 |阅读模式
    做一个登录页,全屏背景图毛玻璃效果,实现方法如下:
    
    HTML:
    
    <body>
    
      <div class="login-wrap">
         <div class="login-mask"></div>
         <div class="login-box"></div>
       </div>
    
      <script>
         var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
         var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
    
        $('.login-mask').css("height", h);
    
        $('.login-mask').css("width", w);
       </script>
    
    </body>
    
    CSS:
    
    
    
    .login-wrap {
       overflow: hidden;
    }
    
    .login-mask {
       /* IE6~IE9 */
       filter: progid: DXImageTransform.Microsoft.Blur(PixelRadius=100, MakeShadow=false);
       -webkit-filter: blur(100px);
       -moz-filter: blur(100px);
       -ms-filter: blur(100px);
       filter: blur(100px);
       background-image: url(../../../img/background/home-bg-3.jpg);
       background-repeat: no-repeat;
       background-size: cover;
       background-attachment: fixed;
       background-position: center;
       position: absolute;
       z-index: 1;
    }
    
    .login-box {
       width: 300px;
       height: 400px;
       background-color: rgba(255, 255, 255, 0.5);
       display: block;
       border: 1px solid rgba(183, 183, 183, 0.47);
       border-radius: 6px;
       position: absolute;
       left: 50%;
       margin-right: auto;
       margin-left: -150px;
       margin-top: 10%;
       z-index: 2;
    }
    
    效果如下:
    
    

    可以发现边上是有白边的,这是一种blur的值很大的情况下。此时的解决方法是直接将background-size:cover;改成background-size:150% 150%;就行了。效果图如下:
    
    

    仔细看可以发现白边不那么明显了。
    
    另外一种就是在blur的值比较小的情况下,比如将上述的blur值改成20,效果如下:
    
    

    可以看出白边很明显,这时候如果给body添加同样的背景图的话,白边就会消失:
    
    body{
      background-image: url(../../../img/background/home-bg-3.jpg);
      background-repeat: no-repeat;
      background-size: cover;
      background-attachment: fixed;
      background-position: center;
    }
    
    效果图如下:
    
    

    可以看到边缘的区别很明显。但是对比有点明显,效果并不好,将blur的值再改小一点,改成5,效果图如下:
    
    

    边缘的白边去掉了,并且看起来不是那么违和了。
    
    如果你觉得按照第一个方法做出来的效果背景太亮的话,可以使用滤镜来变暗一点:
    
    background-color: rgba(141, 141, 141, 0.35);
    background-blend-mode: darken;
    
    效果如下:
    
    

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-19 00:26 , Processed in 0.063199 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表