一 关于filter

首先看一下官方对于CSS的filter属性的定义:

CSS属性将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像,背景和边框的渲染。

本文主要讲的是filter中的一个属性:hue-rotate。官方定义是:

给图像应用色相旋转。“angle”一值设定图像会被调整的色环角度值。值为0deg,则图像无变化。若值未设置,默认值是0deg。该值虽然没有最大值,超过360deg的值相当于又绕一圈。

本文主要是通过一些demo和思考来讲述其强大和便捷之处。

二 代码差异

首先来写一个带有hover特效的button组件吧~代码如下:

<button class="btn btn-primary">primary</button>
<button class="btn btn-primary-filter">primary-filter</button>
.btn{
padding: 4px 15px;
outline: none;
border: none;
border-radius: 3px;
margin: 10px 20px;
cursor: pointer;
color: #fff;
background: #1890ff;
border-color: #1890ff;
box-shadow: 0 2px 0 rgba(0,0,0,.045);
}
.btn-primary:hover{
background-color: #096dd9;
border-color: #096dd9;
color: #fff;
}
.btn-primary-filter:hover{
filter: hue-rotate(15deg);
}

效果如下:

<a href="https://sm.ms/image/CG3pI65XRWOrNA4" target="_blank"><img src="https://i.loli.net/2020/12/01/CG3pI65XRWOrNA4.gif" ></a>

通过动图可以看到,两个button组件的效果基本类似,但是代码量是有一定的差距的,目前我们只写了hover的特效,当我们加上其余的状态以后,代码量的差距会更大。

开胃菜我们吃的差不多了,我们搞点事情:

我们经常看到进度条,但是更多时候的动画效果都是通过js实现的,我们这次可以做一个根据进度而时刻变化颜色的进度条,走起走起:

首先我们要有一个进度条:

其次我们要让它动起来,根据我们的进度保持颜色的递进变化,代码如下:

<div class="main">
<div class="demo"></div>
</div>
.main{
margin: 100px auto;
width: 600px;
height: 60px;
position: relative;
}
.demo{
height: 100%;
box-sizing: border-box;
border-radius: 15px 30px 30px 15px;
filter: drop-shadow(0 1px 3px rgba(0,0,0,0.22)); // 阴影效果
background: #fff;
} .demo::after {
content: "";
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 100%;
// 背景颜色给个渐变效果
background: linear-gradient(to bottom, #7abcff 0%, #00BCD4 44%, #2196F3 100%);
border-radius: 0px 0px 5px 5px;
box-shadow: 0 14px 28px rgba(33, 150, 243, 0), 0 10px 10px rgba(9, 188, 215, 0.08);
animation: charging 5s linear infinite;
filter: hue-rotate(110deg);
} @keyframes charging {
50% {
box-shadow: 0 14px 28px rgba(0, 150, 136, 0.83), 0px 4px 10px rgba(9, 188, 215, 0.4);
} 95% {
right: 5%;
filter: hue-rotate(0deg);
border-radius: 0 0 5px 5px;
box-shadow: 0 14px 28px rgba(4, 188, 213, .2), 0 10px 10px rgba(9, 188, 215, 0.08);
}
100% {
right: 0%;
filter: hue-rotate(0deg);
border-radius: 15px 15px 5px 5px;
box-shadow: 0 14px 28px rgba(4, 188, 213, 0), 0 10px 10px rgba(9, 188, 215, 0.4);
}
}

效果如下:

如上,我们这里有一个小小的暗箱操作,就是我们无法对一个渐变色进行动画animation,但是我们可以通过hue-rotate的方式,利用滤镜进行颜色的变化,从而实现当前的效果。

三 总结

举一反三,该属性玩得顺了的话,其实可以做到很多让人眼前一亮的效果,最直接的就是我们可以将我们的个人博客首页,做根据当前时区和时间而变化的背景色。当然了,安卓手机现在的充电效果也可以做到,但是想要做出来肯定需要一定的css熟练度。我们在使用过程中,通过不断的调节filter里面属性的数据,可以得到差异效果很大的动画,当然了,好的效果需要不断的调试,但是这样会使我们的业务开发变得更加的有乐趣~

最后,欢迎指正和修改本文~

CSS色调旋转滤镜的更多相关文章

  1. 【转载】CSS filter:hue-rotate色调旋转滤镜实现按钮批量生产

    文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/ 原文链接:https://www.zhangxinxu.com/wordpress/2018/11/css-f ...

  2. css中的滤镜

    前几天在做一个app应用的时候,用到了滤镜.在之前我只是知道有这么个东西,但是具体的知识点其实我是不太清楚的,所以为了让自己能深刻记忆,专门把它来记录一下.. 一.滤镜的标识符:“filter”;语法 ...

  3. CSS之旋转立方体

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. css钻石旋转实现

    css钻石旋转实现: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  5. css做旋转相册效果

    css做旋转相册效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  6. js+css立体旋转

    纯 CSS3 制作可口可乐罐  这个效果相信大家很多人看过了,纯css实现的立体可口可乐罐,看起来相当高大上~ 于是今天我这小菜鸟试着研究下,稍微遗憾的是,没有看到源码,还是直接F12吧,貌似实现也不 ...

  7. CSS 3D旋转 hover 后设置transform 是相对于正常位置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. CSS中filter滤镜学习笔记

    1.CSS静态滤镜样式 (filter)(只有IE4.0以上支持)  CSS静态滤镜样式的使用方法:{ filter : filtername( parameters1, parameters2, . ...

  9. ie旋转滤镜Matrix

    旋转一个元素算是一个比较常见的需求了吧,在支持CSS3的浏览器中可以使用transform很容易地实现,这里有介绍:http://www.css88.com/archives/2168,这里有演示ht ...

随机推荐

  1. IOCP三层结构

    iocp三层架构服务器模型 分类: GameEngine专题之IOCP(完成端口)2010-04-06 14:44 2611人阅读 评论(0) 收藏 举报 服务器socket工作测试应用服务器性能优化 ...

  2. 由python工作区导致的python代码能运行,但是PyCharm画红线的问题

    原文:https://www.zhihu.com/question/63028700 PyCharm在遇到模块找不到时,会使用红色波浪线提醒开发者. Python有一个工作区的概念,在默认情况下,当你 ...

  3. Blazor 准备好为企业服务了吗?

    如果您正在编写 .NET Web 应用程序,您很可能已经意识最近一年在.NET Web开发领域的热点都是 Blazor 的.如果你还没有了解Blazor,它允许您使用 C# 来编写 Web UIs,传 ...

  4. JavaScript ES 模块:现代化前端编程必备技能

    自从 ES 模块被添加到规范中后,JavaScript 中的模块就更加简单了.模块按文件分开,异步加载.导出是用 export 关键字定义的:值可以用 import 关键字导入. 虽然导入和导出单个值 ...

  5. -bash: bash_profile: command not found问题

    这个问题一般就是.bash_profile 文件内容错误,里面内容没加注释之内的,vi .bash_profile打开文件检查一下,然后:wq!保存退出 我的错误就是红圈处没有注释造成的

  6. XCTF-crypto---转轮机加密

    转轮密码机是由一个输入键盘和一组转轮组成的,每个转轮上标有26个字母,字母的顺序随意,转轮之间由齿轮进行连接,当一个转轮转动时,可以讲一个字母转化为另一个字母. 工作原理: 转轮机由多个转轮构成,每个 ...

  7. HashMap 链表插入方式 → 头插为何改成尾插 ?

    开心一刻 一天,楼主在路上碰到了一个很久没见的朋友,找了个餐馆,坐下聊了起来 楼主:在哪上班了 ? 朋友:火葬场啊 楼主:在那上班,一个月多少钱啊 ? 朋友:两万多啊 楼主(不可思议):多少 ? 朋友 ...

  8. gdb调试子进程

    gdb默认情况下,父进程fork一个子进程,gdb只会继续调试父进程而不会管子进程的运行. 在一部分系统中(基于2.6内核的CentOS,支持follow-fork和detach-on-fork模式) ...

  9. 【涂鸦物联网足迹】涂鸦云平台消息服务—顺带Pulsar简单介绍

    前序系列文章>>> [涂鸦物联网足迹]涂鸦云平台标准指令集 开放消息平台主要通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求. 一 ...

  10. 利用CSS3实现div页面淡入动画特效

    利用CSS3实现页面淡入动画特效   摘要 利用CSS3动画属性"@keyframes "可实现一些动态特效,具体语法和参数可以网上自行学习.这篇文章主要是实践应用一下这个动画属性 ...