我有一个JPEG文件,我使用CSS来设置它,因为我在Backbone.js contexts中工作:
background-image: url("whatever.jpg");
我想将CSS 3模糊滤镜仅应用于背景,但我不确定如何设置这一个元素的样式 . 如果我尝试:
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
就在我的CSS中的 background-image
下面,它调整了整个页面的样式,而不仅仅是背景 . 有没有办法只选择图像并应用过滤器?或者,有没有办法只为页面上的每个其他元素关闭模糊?
14 回答
我没有写这个,但我注意到使用CSS SASS编译器对部分支持的
backdrop-filter
有一个polyfill,所以如果你有一个编译管道,它可以很好地实现:(也使用typescript)https://codepen.io/mixal_bl4/pen/EwPMWo
看看这个pen .
您将不得不使用两个不同的容器,一个用于背景图像,另一个用于您的内容 .
在示例中,我创建了两个容器
.background-image
和.content
.它们都放在
position: fixed
和left: 0; right: 0;
. 显示它们的区别来自z-index
值,这些值已经为元素设置不同 .HTML
CSS
为Lorem Ipsum文本道歉 .
更新
感谢Matthew Wilcoxson使用
.content:before
http://codepen.io/akademy/pen/FlkzB进行更好的实施纯粹css中现代浏览器的简单解决方案,带有'before'伪元素,如Matthew Wilcoxson的解决方案 . 为了避免访问用于更改java脚本中的图像和其他属性的伪元素,简单地使用继承作为值并通过父元素(此处为body)访问它们 .
这个答案适用于具有动态高度和图像的Material Design水平卡布局 .
为防止由于卡的动态高度导致的图像失真,您可以使用带有模糊的背景占位符图像来调整高度的变化 .
解释
该卡包含在
<div>
中,类为 wrapper ,这是一个弹性箱 .该卡由2个元素组成,图像也是链接和内容 .
链接
<a>
,类 link ,位于相对位置 .该链接由2个子元素组成,占位符
<div>
class blur 和<img>
class pic ,即清晰图像 .两者都是绝对的并且具有
width: 100%
,但是类 pic 具有更高的堆栈顺序,即z-index: 2
,它将其置于占位符之上 .模糊占位符的背景图像通过HTML中的内联样式设置 .
代码
所有你真正需要的是“过滤器:模糊(«WhatEverYouWantInPx);”
当然,这不是CSS解决方案,但你可以使用带过滤器的CDN Proton:
来自https://developer.wordpress.com/docs/photon/api/#filter
pen
消除了对额外元素的需求,同时使内容适合文档流程,而不是像其他解决方案那样固定/绝对 .
实现了使用
需要溢出自动,否则背景将偏移顶部的几个像素 .
在此之后你只需要
EDIT 如果您有兴趣去除边缘处的白色边框,请使用
110%
的宽度和高度以及-5%
的左侧和顶部 . 这会使你的背景有点扩大 - 但是边缘应该没有明显的颜色渗透 .在这里更新笔:https://codepen.io/anon/pen/QgyewB - 感谢Chad Fawcett提出的建议 .
请检查以下代码: -
尽管提到的所有解决方案都非常聪明,但是当我尝试使用它们时,所有解决方案似乎都有小问题或可能会对页面上的其他元素造成影响 .
最后为了节省时间,我简单地回到了我原来的解决方案:我使用了Paint.NET并使用半径为5到10像素的效果,高斯模糊并将其保存为页面图像 . :-)
HTML:
CSS:
EDIT:
我终于让它工作了,但解决方案绝不是直截了当的!看这里:
在CSS的
.content
选项卡中,将其更改为position:absolute
. 否则,呈现的页面将不可滚动 .只是让pep知道,如果这已经没说了 . 如果要将内容设置为可滚动,请将内容的位置设置为绝对:
我不知道这是否只适合我,但如果不是那就是修复!
Also 自背景修复后,意味着你有'Parallax'效果!因此,不仅要知道这个人教你如何制作模糊的背景,还要知道视差背景效果!
您需要重新构建HTML才能执行此操作 . 您必须模糊整个元素才能模糊背景 . 因此,如果您只想模糊背景,它必须是它自己的元素 .
如其他答案中所述,这可以实现有:
模糊图像的副本作为背景 .
可以过滤然后定位在内容后面的伪元素 .
您也可以使用背景滤镜
有一个名为
backdrop-filter
的受支持属性,它目前是supported in Edge,Safari和iOS Safari(统计数据见caniuse.com) .来自Mozilla devdocs:
你会像这样使用它:
有关统计数据,请参阅caniuse.com