iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >CSS filter中有什么用
  • 387
分享到

CSS filter中有什么用

2023-06-15 06:06:19 387人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关CSS filter中有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景基本概念CSS filter 属性将模糊或颜色偏移等图形效果应用于元素形成滤镜,滤镜通常用于调整图像,背景

这篇文章给大家分享的是有关CSS filter中有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

背景

基本概念

CSS filter 属性将模糊或颜色偏移等图形效果应用于元素形成滤镜,滤镜通常用于调整图像,背景和边框的渲染。它的值可以为 filter 函数 <filter-function> 或使用 url 添加的svg滤镜。

filter: <filter-function> [<filter-function>]* | nonefilter: url(file.svg#filter-element-id)

<filter-function> 可以用于 filterbackdrop-filter 属性。它的数据类型由下列过滤器函数之一指定。每个函数需要一个参数,如果参数无效,则滤镜不会生效。以下是对滤镜函数含义的解释:

  • blur():模糊图像

  • brightness() :让图像更明亮或更暗淡

  • contrast():增加或减少图像的对比度

  • drop-shadow():在图像后方应用投影

  • grayscale():将图像转为灰度图

  • hue-rotate():改变图像的整体色调

  • invert():反转图像颜色

  • opacity():改变图像透明度

  • saturate():超饱和或去饱和输入的图像

  • sepia():将图像转为棕褐色

用法示例

filter: url("filters.svg#filter-id");filter: blur(5px);filter: brightness(0.4);filter: contrast(200%);filter: drop-shadow(16px 16px 20px blue);filter: grayscale(50%);filter: hue-rotate(90deg);filter: invert(75%);filter: opacity(25%);filter: saturate(30%);filter: sepia(60%);filter: contrast(175%) brightness(3%);filter: none;filter: inherit;filter: initial;filter: unset;

CSS filter中有什么用

应用案例

更加智能的阴影效果

在给元素添加阴影的时候,我们一般采用 box-shadow 属性,通过 box-shadow(x偏移, y偏移, 模糊大小, 阴影大小, 色值, inset) 的语法形式很容易为元素添加阴影效果,但 box-shadow 也有一个缺点,就是在给透明图片添加阴影效果时,无法穿透元素,只能添加到透明图片元素的盒模型上。这个时候,filter 属性的 drop-shadow 方法就能很好的解决这个问题,用它添加的阴影可以穿透元素,而不是添加到元素的盒模型边框上。

drop-shadow 添加的阴影除了可以穿透透明元素外,阴影效果和 box-shadow 是相同的,如果浏览器支持硬件加速的话,使用 filter 添加的阴影效果会更加逼真。

drop-shadow 语法如下(它除了不支持设置 inset,其他和 box-shadow 是完全相同的):

filter: drop-shadow(x偏移, y偏移, 模糊大小, 色值);

如:

filter: drop-shadow(1px 1px 15px rgba(0, 0, 0, .5));

下图是分别使用 box-shadowfilter: drop-shadow 为透明元素添加阴影的对比:

CSS filter中有什么用

<img class="box-shadow" src="futurama.png" /><img class="drop-shadow" src="futurama.png" />
.box-shadow {  box-shadow: 1px 1px 15px rgba(0, 0, 0, .5);}.drop-shadow {  filter: drop-shadow(1px 1px 15px rgba(0, 0, 0, .5));}

元素、网页置灰

发生重大灾害事故或其他哀悼日时,国企政府网站往往有网页全部置灰的需求。或者很多网页中有鼠标 hover 悬浮到灰色元素上时变成彩色的样式效果。此时就可以使用 filter 属性的 grayscale 方法实现,它可以调整元素灰度,通过给页面元素设置 filter: grayscale(100%) 就可将页面元素置灰。以下示例中,body 标签下有 h2img 标签,未添加 filter 样式前如下所示。

<body>  <h2 class="title">FUTURAMA</h2>  <img class="img" width="500" src="./images/futurama.png" /></body>

CSS filter中有什么用

现在我们给 body 元素添加一个 .gray 类,<body class="gray"> 就可实现整个网页置灰效果。

.gray {  filter: grayscale(100%);}

CSS filter中有什么用

为了兼容 IE8 等其他低版本浏览器,我们可以加上浏览器前缀和 svg 滤镜。

.gray {  -WEBkit-filter: grayscale(1);  -webkit-filter: grayscale(100%);  -moz-filter: grayscale(100%);  -ms-filter: grayscale(100%);  -o-filter: grayscale(100%);  filter: url("data:image/svg+xml;utf8,<svg xmlns=\'Http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColORMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");  filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);  filter: grayscale(100%);}

在做紧急置灰网页需求时,上线一段时间往往需要撤掉这个功能,我们还可以在首次上线时添加以下类似的方法,来控制置灰效果的自动上下线时间,这样到达预定时间就可自动撤去,不用走两次施工流程。

(function setGray() {  var endTime = Date.parse("Apr 06 2077 00:00:01");  var timestamp = Date.parse(new Date());  if (timestamp <= endTime) {    document.querySelector('html').classList.add('gray');  }})();

元素强调、高亮

brightness 方法实现元素高亮的效果,可以应用到菜单栏、图片列表 hover 效果,来强调鼠标当前悬浮或选中的内容。下面是对一组按钮菜单栏添加 brightnesssaturate 两个方法,通过改变亮度和饱和度来高亮元素。

CSS filter中有什么用

CSS filter中有什么用

.container {  margin: 40px;}.button {  padding: 0.5em 0.5em;  background: #E0E0E0;  border-radius: 3px;}.button.dark {  background: #333;}.button:hover:not(.disabled) {  cursor: pointer;  border-radius: 3px;  filter: brightness(110%) saturate(140%);}.button.disabled {  filter: grayscale(100%);}

毛玻璃效果

毛玻璃(Frosted glass)效果,顾名思义就是类似半透明毛玻璃的效果,在 iOS 系统、windows 10 等系统 UI 中有广泛应用,使用毛玻璃效果可以增强视觉体验。在 《CSS揭秘》 等著作中也有系统讲解,下面是我对分别使用 filter: blurbackdrop-filter: blur两种方法实现这种效果的总结

有两个含有相同类名 glassp 元素,它们分别被添加两个类 glass-by-filterglass-by-backdrop-filter 来区分两种方法。

<div class="glass glass-by-filter"></div><div class="glass glass-by-backdrop-filter"></div>

通用样式,设置毛玻璃元素的大小、圆角等基本样式:

.glass {  height: 300px;  width: 300px;  border: 1px groove #EFEFEF;  border-radius: 12px;  background: rgba(242, 242, 242, 0.5);  box-shadow: 0 0.3px 0.7px rgba(0, 0, 0, 0.126),    0 0.9px 1.7px rgba(0, 0, 0, 0.179), 0 1.8px 3.5px rgba(0, 0, 0, 0.224),    0 3.7px 7.3px rgba(0, 0, 0, 0.277), 0 10px 20px rgba(0, 0, 0, 0.4);}

filter: blur 方法,给元素添加了一个 ::before 伪类设置 blur 方法并将其置于底层实现毛玻璃效果。

.glass-by-filter {  z-index: 1;  box-sizing: border-box;  position: relative;}.glass-by-filter::before {  content: "";  position: absolute;  top: 0; right: 0; bottom: 0; left: 0;  z-index: -1;  background: inherit;  filter: blur(10px);}

backdrop-filter: blur 直接在元素上添加 blur 方法实现毛玻璃效果。

.glass-by-backdrop-filter {  backdrop-filter: blur(10px);}

实现效果如下图所示(左:filter、右:backdrop-filter):

CSS filter中有什么用

阅读扩展:毛玻璃边框效果:https://css-tricks.com/blurred-borders-in-css

CSS filter中有什么用

艺术照!甚至可以实现简易版 insatagram

复古、版画、油画、漫画、液化、老照片、性冷淡、莫兰迪、赛博朋克、旺达幻视风格通通都可以实现!

通过结合使用 filter 的所有方法,可以搭配出任意自己想要的效果。以下是一个简单的 filter 方法调节器,可以调整每个方法的值,同时实时展示图片的滤镜效果。如下图所示。

CSS filter中有什么用

页面主要代码如下,控制区 #imageEditor 是一个 form 表单,表单每一行分别控制一种filter方法的值,展示区 #imageContainer 内部包含一个 img 元素,产生的 filter 滤镜作用在该元素上。

<form id="imageEditor">  <p>    <label for="gs">Grayscale</label>    <input id="gs" name="gs" type="range" min="0" max="100" value="0">  </p>  <p>    <label for="blur">Blur</label>    <input id="blur" name="blur" type="range" min="0" max="10" value="0">  </p>  <p>    <label for="br">Exposure</label>    <input id="br" name="br" type="range" min="0" max="200" value="100">  </p>  <p>    <label for="ct">Contrast</label>    <input id="ct" name="ct" type="range" min="0" max="200" value="100">  </p>  <p>    <label for="huer">Hue Rotate</label>    <input id="huer" name="huer" type="range" min="0" max="360" value="0">  </p>  <p>    <label for="opacity">Opacity</label>    <input id="opacity" name="opacity" type="range" min="0" max="100" value="100">  </p>  <p>    <label for="invert">Invert</label>    <input id="invert" name="invert" type="range" min="0" max="100" value="0">  </p>  <p>    <label for="saturate">Saturate</label>    <input id="saturate" name="saturate" type="range" min="0" max="500" value="100">  </p>  <p>    <label for="sepia">Sepia</label>    <input id="sepia" name="sepia" type="range" min="0" max="100" value="0">  </p>  <input type="reset" form="imageEditor" id="reset" value="Reset" /></form><div id="imageContainer" class="center">  <img src="futurama.png"></div>
function editImage() {  var gs = $("#gs").val();                // grayscale  var blur = $("#blur").val();            // blur  var br = $("#br").val();                // brightness  var ct = $("#ct").val();                // contrast  var huer = $("#huer").val();            // hue-rotate  var opacity = $("#opacity").val();      // opacity  var invert = $("#invert").val();        // invert  var saturate = $("#saturate").val();    // saturate  var sepia = $("#sepia").val();          // sepia  $("#imageContainer img").css(    "filter", 'grayscale(' + gs+    '%) blur(' + blur +    'px) brightness(' + br +    '%) contrast(' + ct +    '%) hue-rotate(' + huer +    'deg) opacity(' + opacity +    '%) invert(' + invert +    '%) saturate(' + saturate +    '%) sepia(' + sepia + '%)'  );  $("#imageContainer img").css(    "-webkit-filter", 'grayscale(' + gs+    '%) blur(' + blur +    'px) brightness(' + br +    '%) contrast(' + ct +    '%) hue-rotate(' + huer +    'deg) opacity(' + opacity +    '%) invert(' + invert +    '%) saturate(' + saturate +    '%) sepia(' + sepia + '%)'  );}// 当input值发生变化时即时应用滤镜$("input[type=range]").change(editImage).mousemove(editImage);

现在只是实现了滤镜的实时预览,后续待实现功能包括支持复杂的 svg 滤镜模版、导出下载等,完成这些步骤,以后照片添加滤镜再也不用下载其他 APP了。实例完整版代码:https://codepen.io/draGonir/pen/abJMQxM

节省空间,提高网页加载速度

实践证明,同一图片减小亮度和对比度及色相饱和度之后的体积与原图相比,可以减小很大一部分体积空间 2M 左右的图片经过弱化后保存,就可以压缩到 1M 左右。在网页中我们可以使用经过 弱化 的图片,然后通过 CSS filter 将其还原。这样就可以达到压缩资源体积,提升网页加载速度、提高用户体验的目的。

具体操作可阅读以下教程

对比度交换技术:使用 CSS filter 提高图像性能

https://css-tricks.com/contrast-swap-technique-improved-image-performance-css-filters

兼容性

caniuse 查询结果可以看出,css filter 属性在现代浏览器中的支持性已经很好了,除了 IE 浏览器之外,其他浏览器中大多可以正常使用,必要时可添加浏览器内核前缀。但是官网也有以下3个issue 提示,相信后续随着浏览器的升级,这些问题也会被逐步修复:

  • 在 Safari 浏览器中,如果子元素具有动画效果,则不会被应用滤镜。

  • 目前没有浏览器支持 drop-shadow 滤镜的 spread-radius 方法。

  • Edge 浏览器中如果元素或子元素被设置了 负值z-index,则无法应用滤镜。

CSS filter中有什么用

总结

本篇文章只是简单列举了几种使用 CSS filter 常用的页面效果,其实 filter 的每一种内置方法都可以有无限可能的扩展应用,如 invert 反转色同样也可以应用到 hover 效果上、调整网页sepia 褐色值可以实现护眼效果等。只要发挥想象力和创造力,filter 都可以在实践中得到很好的应用。

以下一些例子就是很好的应用,大家有兴趣可以拓展阅读学习

  • 毛玻璃效果 https://codepen.io/KazuyoshiGoto/pen/nhstF

  • 破碎玻璃效果 https://codepen.io/bajjy/pen/vwrKk

  • 使用filter实现的hover效果 https://codepen.io/nxworld/details/ZYNOBZ

  • 反色按钮 https://codepen.io/monkey-company/pen/zZZvRp

  • 老照片 https://codepen.io/dudleystorey/pen/pKoqa

  • 高级版filter编辑器:https://codepen.io/stoumann/pen/MWeNmyb

最后附上一张用上面滤镜编辑器调出来的 复古莫兰迪色性冷淡油画效果 滤镜图片。(哇塞,这也太哇塞了吧,CSS 绝绝子 yyds

CSS filter中有什么用

感谢各位的阅读!关于“CSS filter中有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: CSS filter中有什么用

本文链接: https://www.lsjlt.com/news/278462.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CSS filter中有什么用
    这篇文章给大家分享的是有关CSS filter中有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景基本概念CSS filter 属性将模糊或颜色偏移等图形效果应用于元素形成滤镜,滤镜通常用于调整图像,背景...
    99+
    2023-06-15
  • css中filter属性和backdrop-filter对比有什么区别
    这篇文章主要为大家展示了css中filter属性和backdrop-filter对比有什么区别,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“css中filter属性和backdrop-filter...
    99+
    2023-06-08
  • JavaScript中filter()方法有什么用
    小编给大家分享一下JavaScript中filter()方法有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!filter(...
    99+
    2024-04-02
  • python中Filter函数有什么用
    小编给大家分享一下python中Filter函数有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Filter 函数filt...
    99+
    2024-04-02
  • python中filter()函数有什么用
    这篇文章主要为大家展示了“python中filter()函数有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中filter()函数有什么用”这篇文章吧。filter()filt...
    99+
    2023-06-03
  • python中filter()方法有什么用
    这篇文章主要为大家展示了“python中filter()方法有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中filter()方法有什么用”这篇文章吧。filter()方法(过...
    99+
    2023-06-17
  • python中filter函数有什么作用
    在Python中,filter()函数用于过滤序列中的元素,返回一个符合条件的新序列。 filter()函数接受两个参数,第一个参数...
    99+
    2024-02-29
    python
  • CSS filter属性的作用是什么
    CSS filter属性用于对元素的视觉效果进行处理,可以改变元素的外观。它可以应用一系列滤镜效果,如模糊、饱和度、对比度、亮度、透...
    99+
    2023-09-22
    CSS
  • CSS3中filter滤镜属性有什么用
    这篇文章主要为大家展示了“CSS3中filter滤镜属性有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS3中filter滤镜属性有什么用”这篇文章吧...
    99+
    2024-04-02
  • filter属性怎么在CSS中使用
    这篇文章给大家介绍filter属性怎么在CSS中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。filter 属性定义了元素的可视效果blur给图像设置高斯模糊。"radius"一值设定高斯函数的...
    99+
    2023-06-08
  • CSS filter使用小技巧有哪些
    本篇文章给大家分享的是有关CSS filter使用小技巧有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我们在处理图片时,经常使用的一个功...
    99+
    2024-04-02
  • CSS filter属性的作用有哪些
    CSS filter属性用于对元素进行图像处理,可以改变图像的颜色、亮度、对比度、饱和度等。具体的作用包括:1. blur:模糊图像...
    99+
    2023-09-05
    CSS
  • jquery中find和filter有什么区别
    今天就跟大家聊聊有关jquery中find和filter有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。jquery是什么jquery是一个简洁而快速的JavaScript库...
    99+
    2023-06-14
  • CSS中Selector有什么用
    这篇文章主要介绍了CSS中Selector有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。CSS1 中定义的选择器类型选择器用于选择指...
    99+
    2024-04-02
  • css中@import有什么用
    小编给大家分享一下css中@import有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!@import@import用于导...
    99+
    2024-04-02
  • css中@viewport有什么用
    小编给大家分享一下css中@viewport有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!@viewport@viewp...
    99+
    2024-04-02
  • css中padding有什么用
    这篇文章主要介绍了css中padding有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在css中,padding的意思为“填充”或“内边距”,用于定义元素边框与元素内...
    99+
    2023-06-15
  • css中Anima有什么用
    这篇文章主要为大家展示了“css中Anima有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css中Anima有什么用”这篇文章吧。 轻量级(当 gzi...
    99+
    2024-04-02
  • css中@keyframes有什么用
    这篇文章主要介绍css中@keyframes有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   css@keyframes   作用:通过@keyframes规则,您能够...
    99+
    2024-04-02
  • css中@namespace有什么用
    这篇文章给大家分享的是有关css中@namespace有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。@namespace@namespace是用来定义使用在CSS样式表中...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作