一 关于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. 使用RS485串口服务器的方法

    1.为什么设备使用RS-485串口通信? RS-485设备可以连接到计算机,并在网络样式配置中的多个位置进行多次丢弃.在需要中继器之前,设备可以距离最远4000英尺(1220米),最多可以连接32个节 ...

  2. python机器学习的开发流程

    标准机器学习的开发编程流程 关注公众号"轻松学编程"了解更多. 一.流程 标准机器学习的开发编程流程: 1.获取数据(爬虫.数据加载.业务部门获取) 2.数据建模(摘选样本数据(特 ...

  3. 云服务器部署Python项目(nginx+uwsgi+mysql+项目)

    python项目部署到云服务器 关注公众号"轻松学编程"了解更多. 一.硬件准备 云服务器,系统ubuntu_16_04 . 注意:要在安全组中开放Http的80端口. 二.软件准 ...

  4. sync_with_stdio(false)的副作用

    sync_with_stdio()的一个特性 水一篇随笔 其实对于用快读的大佬来说没什么用,但还是提一下 ios::sync_with_stdio(false)用处是"关闭同步", ...

  5. [论文阅读] RNN 在阿里DIEN中的应用

    [论文阅读] RNN 在阿里DIEN中的应用 0x00 摘要 本文基于阿里推荐DIEN代码,梳理了下RNN一些概念,以及TensorFlow中的部分源码.本博客旨在帮助小伙伴们详细了解每一步骤以及为什 ...

  6. Kafka_2.12-2.5.1集群搭建与参数调优

    Kafka是目前业界使用最广泛的消息队列.数据流转常见这样的业务场景,客户端把采集到的日志推送给Kafka,业务方可以消费Kafka的数据落地HDFS,用于离线分析,也可以使用Spark或Flink消 ...

  7. fasd

    基本排序算法 冒泡排序 没什么可说的, 改进方法就是加一个标志位防止有序后重复遍历. 由于需要遍历两次, 所以时间复杂度O(N^2) 传送门 --> 冒泡排序 选择排序 外层从0开始默认oute ...

  8. SVG--D3--血缘关系树

    最近的工作与可视化有关,有展示血缘关系树的需求 ,类似于这样: 碰巧搜到 D3(用于可视化的js库,作者吕之华),瞬间无法自拔,它的树状图功能基于SVG.js ,暴露的可操作入口也简洁恰当,能帮助你快 ...

  9. python爬虫07BeautifulSoup

    有一个高效的网页解析库 它的名字叫做 BeautifulSoup 它   是一个可以从 HTML 或 XML 文件中提取数据的 Python 库 首先我们要安装一下这个库 pip install be ...

  10. 程序员注意【自verycd.com的JavaAmg77 】

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的1 ...