去掉模糊背景或图片的白边

栏目: Html · 发布时间: 5年前

内容简介:文章目录有时候我们会对页面的背景或者某个图片使用
  • Home
  • Programming >Front end >CSS
  • 去掉模糊背景或图片的白边

文章目录

前言

有时候我们会对页面的背景或者某个图片使用 blur 属性来达到模糊的毛玻璃效果,这样会让我们的内容更突出,不会被背景图片而干扰。但是使用模糊背景的一个问题是,在模糊的图片边缘,由于模糊效果会让底层的颜色露出来,比如我们对我们页面的背景进行模糊的时候会把 body 的背景色透出来,一般我们的 body 是白色的,所以会有一圈模糊的白边,下面来分享几种解决问题的方法。

去掉模糊背景或图片的白边

查看代码点击页面

小图片

铺满全屏的背景和页面上的小图片的处理方法的不同的,对于页面上的小图片我们只需要给它的包含元素添加一个 overflow: hidden 就可以。

<style>
    html, body {
        height: 100%;
        width: 100%;
        margin: 0;
        padding: 0;
    }

    .wrap {
        height: 300px;
        width: 450px;
        margin: 20px auto;
    }
    .wrap.s2 {
        overflow: hidden;
    }
    .wrap img {
        height: 300px;
        width: 450px;
        filter: blur(5px);
    }
</style>
<div class="wrap s1"><img src="https://img.clloz.com/blog/writing/totoro.jpg" alt=""></div>
<div class="wrap s2"><img src="https://img.clloz.com/blog/writing/totoro.jpg" alt=""></div>

我们可以明显的看出第一个图片的边缘也是模糊效果, body 的白色透出,而第二张图片虽然也是模糊的,但是边缘却很清晰。

去掉模糊背景或图片的白边

查看代码点击页面

全屏背景处理

处理小图片的方式非常简单,但是这个方法在页面背景上却不生效,至于为什么我也不太清楚,不过我尝试了多次,只使用 overflow: hidden 并不能让页面的背景边缘变清晰。

只能另辟蹊径了,大家的解决方法虽然代码有所不同,不过手段都差不多,都是通过扩大背景所在元素的大小来实现的,也就是说把模糊的那部分移动到可视范围之外,具体有如下几种做法。

transform: scale() 扩大

既然要改变大小,自然会想到 transform 属性,使用这个属性需要注意的是,扩大的比例。如果你的图片不需要考虑细节,那么你可以把比例调大一点。如果图片细节比较重要,那么就要选择适当的比例,还要考虑在不同大小的屏幕上的效果。

<style>
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    html, body {
        height: 100%;
        width: 100%;
    }
    .cover {
        height: 100%;
        width: 100%;
        background: url("https://img.clloz.com/blog/writing/totoro.jpg");
        background-size: cover;
        filter: blur(5px) brightness(0.5);
        transform: scale(1.02)
    }
</style>
<div class="cover"></div>

去掉模糊背景或图片的白边

查看代码点击页面

绝对定位

不设置背景所在元素的大小,用绝对定位的定位属性来设置图片的大小也可以达到效果。

<style>
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    html, body {
        height: 100%;
        width: 100%;
    }
    .cover {
        position: absolute;
        top: -8px;
        right: -8px;
        bottom: -8px;
        left: -8px;
        background: url("https://img.clloz.com/blog/writing/totoro.jpg");
        background-size: cover;
        filter: blur(5px) brightness(0.5);
    }
</style>
<div class="cover"></div>

查看代码点击页面

总结

可能还有其他更好的方法,这几个方法都需要设置 bodyoverflowhideen ,不过这也不算什么问题,需要滚动的话再包一层就可以了。如果你有更好的办法欢迎回复。

参考文章

  1. 知乎回答:大漠

  2. CSS Background Image Blur without blurry edges


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

jQuery 技术内幕

jQuery 技术内幕

高云 / 机械工业出版社 / 2014-1-1 / 99元

本书首先通过“总体架构”梳理了各个模块的分类、功能和依赖关系,让大家对jQuery的工作原理有大致的印象;进而通过“构造 jQuery 对象”章节分析了构造函数 jQuery() 的各种用法和内部构造过程;接着详细分析了底层支持模块的源码实现,包括:选择器 Sizzle、异步队列 Deferred、数据缓存 Data、队列 Queue、浏览器功能测试 Support;最后详细分析了功能模块的源码实......一起来看看 《jQuery 技术内幕》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试