码迷,mamicode.com
首页 > 其他好文 > 详细

利用 background 和 filter 模糊指定区域

时间:2018-04-29 14:38:29      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:ros   header   img   技术   hub   导致   html   改变   位置   

背景知识: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区域呢?
技术分享图片

尝试:

  • 通过半透明的背景和filter:blur来实现

    .content {
      width:50%; 
      height:50%;
      background:rgba(255,255,255,0.5);
      filter:blur(20px)
    }

    当然效果是不太好的:
    技术分享图片

方案:

  • .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)
    }

    效果:
    技术分享图片

原理:

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

margin-left:200px;

改变了位置,背景图还是重合的,这个时候模糊子元素就像是模糊了父元素背景的某一部分一样,如图:
技术分享图片

利用 background 和 filter 模糊指定区域

标签:ros   header   img   技术   hub   导致   html   改变   位置   

原文地址:https://www.cnblogs.com/xianshenglu/p/8970836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!