滤镜(filter)可改造元素的视觉呈现,CSS内置的滤镜有10种,通过SVG文件还能自定义滤镜。

一、调色滤镜

  调色滤镜可控制元素的模糊、颜色、亮度等变化,并且多个滤镜可组合在一起使用。这些滤镜大部分既能接收百分数,也能接收数值。当传入的值大于上限值时,会以上限值来处理。

1)模糊

  blur()滤镜会对元素进行高斯模糊的处理,它能接收一个模糊半径的长度值。注意,不能向其传递负数。在下图中,右侧是调用了blur()滤镜后的效果。

div {
filter: blur(5px);
}

2)透明

  opacity()滤镜可控制元素的透明度,其默认值为1或100%(表示不透明),最小值为0。opacity()滤镜与opacity属性类似,但两者不是互斥关系,可同时应用于同一个元素,不过opacity属性会在执行完所有的滤镜后再起作用。在下图中,右侧是调用了opacity()滤镜后的效果。

div {
filter: opacity(.5);
}

3)阴影

  drop-shadow()滤镜可为元素的透明部分提供阴影,其取值与text-shadow属性类似,也是X轴与Y轴的偏移、模糊半径以及颜色。下图使用了一张透明的五角星图,右侧调用了drop-shadow()滤镜,阴影会沿着透明轮廓渲染。

div {
filter: drop-shadow(5px 5px 5px #F60);
}

4)灰度

  grayscale()滤镜能转换元素的灰度,当值为1或100%时,元素会转换成完全的灰度。在下图中,右侧是调用了grayscale()滤镜后的效果。

div {
filter: grayscale(100%);
}

5)褐色

  sepia()滤镜能指定元素褐色的比例,即用褐色为元素上色。当值为1或100%时,元素会转换成完全的深褐色。在下图中,右侧是调用了sepia()滤镜后的效果。

div {
filter: sepia(100%);
}

6)反转

  invert()滤镜能将元素的颜色反转处理,即用255或100%减去颜色的R、G和B通道的值。在下图中,右侧是调用了invert()滤镜后的效果。

div {
filter: invert(100%);
}

7)色相旋转

  hue-rotate()滤镜能接收一个角度值,参照标准色轮(如下图)旋转元素的整体色相。

  在下图中,右侧是调用了hue-rotate()滤镜旋转90°后的效果。

div {
filter: hue-rotate(90deg);
}

8)亮度

  brightness()滤镜能调整元素的明暗程度,值越小,元素越暗。在下图中,右侧是调用了brightness()滤镜后的效果。

div {
filter: brightness(50%);
}

9)对比度

  contrast()滤镜能调整元素颜色的对比度,对比度越低,颜色越接近。在下图中,右侧是调用了contrast()滤镜后的效果。

div {
filter: contrast(30%);
}

10)饱和度

  saturate()滤镜能调整元素颜色的饱和度,饱和度越低,颜色越暗。在下图中,右侧是调用了saturate()滤镜后的效果。

div {
filter: saturate(50%);
}

11)组合

  在声明filter属性时,可定义多个滤镜函数,用空格分隔,如下所示。在下图中,右侧是调用了多个滤镜后的效果。

div {
filter: drop-shadow(5px 5px 5px #F60) sepia(100%) saturate(50%);
}

二、SVG滤镜

  所有的CSS滤镜都能通过SVG滤镜实现。以blur(5px)为例,首先用一个名为filter.svg的文件描绘模糊的效果,其内容如下所示。

<svg height="0" xmlns="http://www.w3.org/2000/svg">
<filter id="blur" x="-5%" y="-5%" width="110%" height="110%">
<feGaussianBlur in="SourceGraphic" stdDeviation="5"/>
</filter>
</svg>

  然后通过url()函数引用SVG文件中的滤镜,注意,井号后面跟着的是filter元素的id属性值,效果如下图所示。

div {
filter: url(./filter.svg#blur);
}

  通过SVG文件的方式就能创造出各种功能的滤镜,以适应更多的复杂场景。

CSS躬行记(6)——滤镜的更多相关文章

  1. CSS躬行记(8)——裁剪和遮罩

    一. 裁剪 裁剪(clipping)能让元素显示指定形状的区域,在布局时可起点缀的作用,丰富了视觉呈现.注意,裁剪本质上只是让元素的部分区域透明,由此可知,裁剪完后元素所占的空间仍旧会保留.裁剪最早是 ...

  2. CSS躬行记(1)——CSS基础拾遗

    一.box-decoration-break CSS3新增的box-decoration-break属性可指定行内非替换元素在跨行.跨列或跨页时的样式渲染,它包含两个值: (1)slice:默认值,盒 ...

  3. CSS躬行记(2)——伪类和伪元素

    一.伪类选择器 伪选择器弥补了常规选择器的不足,能够实现一些特殊情况下的样式,例如在鼠标悬停时或只给字符串中的第一个字符指定样式.与类选择器类似,可以从HTML元素的class属性中查看到,但伪选择器 ...

  4. CSS躬行记(9)——网格布局

    网格布局(Grid Layout)也叫栅格布局,与表格布局类似,也依赖行和列.但与之不同的是,网格布局能直接控制HTML文档中元素的顺序.位置和大小等,而不用再借助辅助元素. 一.术语 下图展示了CS ...

  5. CSS躬行记(3)——CSS属性拾遗

    一.粘滞定位 粘滞定位(sticky)与相对定位类似,既不会脱离正常流,也不会改变元素盒类型,并且会保留原先所占的空间.它会相对于包含块偏移,它的包含块分为两种,第一种和绝对定位一样:第二种是最近的滚 ...

  6. CSS躬行记(4)——浮动形状

    CSS规范新增了一个模块:CSS Shapes,shape-outside属性属于该模块,它能影响浮动元素周边内容流的形状(即浮动形状),可接收三类值:形状盒子.函数和图像. 一.形状盒子 形状盒子( ...

  7. CSS躬行记(7)——合成

    在图形编辑软件中,可以按特定地方式处理不同图层的合成,最新的CSS规范也引入了该功能,并提供了mix-blend-mode和background-blend-mode两个属性.混合模式(blendin ...

  8. CSS躬行记(10)——CSS方法论

    方法论是一个哲学术语,会对一系列具体的方法进行分析研究.系统总结并最终提出较为一般性的原则.CSS方法论是一种面向CSS.由个人和组织设计.已被诸多项目检验且公认有效的最佳实践.这些方法论都会涉及结构 ...

  9. CSS躬行记(11)——管理后台响应式改造

    为了提升业务人员操作管理后台的体验,花了点时间进行响应式的改造,紧急情况时,掏出手机就能工作. 利用CSS3的媒体查询,就能根据不同屏幕的尺寸采用不同的样式来渲染,目前使用的移动端屏幕阈值为750px ...

随机推荐

  1. 用docker搭建selenium grid分布式环境实践之路

    最近需要测试zoom视频会议,同时模拟100个人加入会议.经过了解,zoom提供了直接通过url链接加入会议的方式(只能通过chrome浏览器或者FireFox浏览器,因为用的协议是webrtc). ...

  2. [Docker8]Dockerfiles

    Comment INSTRUCTION arguments FROM 基于哪个base镜像 RUN 执行命令并创建新的镜像层,run经常用于安装软件包 MAINTAINER 镜像创建者 copy 将文 ...

  3. leetcode之820. 单词的压缩编码 | python极简实现字典树

    题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...

  4. 【分布式锁】06-Zookeeper实现分布式锁:可重入锁源码分析

    前言 前面已经讲解了Redis的客户端Redission是怎么实现分布式锁的,大多都深入到源码级别. 在分布式系统中,常见的分布式锁实现方案还有Zookeeper,接下来会深入研究Zookeeper是 ...

  5. [简单路径] Useful Decomposition

    Ramesses knows a lot about problems involving trees (undirected connected graphs without cycles)! He ...

  6. TorchScript简介

    本教程是对TorchScript的简介,TorchScript是PyTorch模型(nn.Module的子类)的中间表示,可以在高性能环境(例如C )中运行. 在本教程中,我们将介绍: PyTorch ...

  7. 一个完整的机器学习项目在Python中演练(三)

    大家往往会选择一本数据科学相关书籍或者完成一门在线课程来学习和掌握机器学习.但是,实际情况往往是,学完之后反而并不清楚这些技术怎样才能被用在实际的项目流程中.就像你的脑海中已经有了一块块"拼 ...

  8. coding++:RateLimiter 限流算法之漏桶算法、令牌桶算法--简介

    RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类 <dependency> <groupId>com.google.guava</g ...

  9. iOS pch

    Xcode6 之前会在 Supporting Files 文件夹下自动生成一个"工程名-PrefixHeader.pch"的预编译头文件,pch 头文件的内容能被项目中的其他所有源 ...

  10. 【cs224w】Lecture 1 & 2 - 图的性质 及 随机图

    目录 Lecture 1: Introduction Lecture 2: Properties and Random Graph Degree Distribution Path Length Cl ...