CSS色调旋转滤镜
一 关于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色调旋转滤镜的更多相关文章
- 【转载】CSS filter:hue-rotate色调旋转滤镜实现按钮批量生产
文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/ 原文链接:https://www.zhangxinxu.com/wordpress/2018/11/css-f ...
- css中的滤镜
前几天在做一个app应用的时候,用到了滤镜.在之前我只是知道有这么个东西,但是具体的知识点其实我是不太清楚的,所以为了让自己能深刻记忆,专门把它来记录一下.. 一.滤镜的标识符:“filter”;语法 ...
- CSS之旋转立方体
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- css钻石旋转实现
css钻石旋转实现: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- css做旋转相册效果
css做旋转相册效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- js+css立体旋转
纯 CSS3 制作可口可乐罐 这个效果相信大家很多人看过了,纯css实现的立体可口可乐罐,看起来相当高大上~ 于是今天我这小菜鸟试着研究下,稍微遗憾的是,没有看到源码,还是直接F12吧,貌似实现也不 ...
- CSS 3D旋转 hover 后设置transform 是相对于正常位置
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS中filter滤镜学习笔记
1.CSS静态滤镜样式 (filter)(只有IE4.0以上支持) CSS静态滤镜样式的使用方法:{ filter : filtername( parameters1, parameters2, . ...
- ie旋转滤镜Matrix
旋转一个元素算是一个比较常见的需求了吧,在支持CSS3的浏览器中可以使用transform很容易地实现,这里有介绍:http://www.css88.com/archives/2168,这里有演示ht ...
随机推荐
- 使用RS485串口服务器的方法
1.为什么设备使用RS-485串口通信? RS-485设备可以连接到计算机,并在网络样式配置中的多个位置进行多次丢弃.在需要中继器之前,设备可以距离最远4000英尺(1220米),最多可以连接32个节 ...
- python机器学习的开发流程
标准机器学习的开发编程流程 关注公众号"轻松学编程"了解更多. 一.流程 标准机器学习的开发编程流程: 1.获取数据(爬虫.数据加载.业务部门获取) 2.数据建模(摘选样本数据(特 ...
- 云服务器部署Python项目(nginx+uwsgi+mysql+项目)
python项目部署到云服务器 关注公众号"轻松学编程"了解更多. 一.硬件准备 云服务器,系统ubuntu_16_04 . 注意:要在安全组中开放Http的80端口. 二.软件准 ...
- sync_with_stdio(false)的副作用
sync_with_stdio()的一个特性 水一篇随笔 其实对于用快读的大佬来说没什么用,但还是提一下 ios::sync_with_stdio(false)用处是"关闭同步", ...
- [论文阅读] RNN 在阿里DIEN中的应用
[论文阅读] RNN 在阿里DIEN中的应用 0x00 摘要 本文基于阿里推荐DIEN代码,梳理了下RNN一些概念,以及TensorFlow中的部分源码.本博客旨在帮助小伙伴们详细了解每一步骤以及为什 ...
- Kafka_2.12-2.5.1集群搭建与参数调优
Kafka是目前业界使用最广泛的消息队列.数据流转常见这样的业务场景,客户端把采集到的日志推送给Kafka,业务方可以消费Kafka的数据落地HDFS,用于离线分析,也可以使用Spark或Flink消 ...
- fasd
基本排序算法 冒泡排序 没什么可说的, 改进方法就是加一个标志位防止有序后重复遍历. 由于需要遍历两次, 所以时间复杂度O(N^2) 传送门 --> 冒泡排序 选择排序 外层从0开始默认oute ...
- SVG--D3--血缘关系树
最近的工作与可视化有关,有展示血缘关系树的需求 ,类似于这样: 碰巧搜到 D3(用于可视化的js库,作者吕之华),瞬间无法自拔,它的树状图功能基于SVG.js ,暴露的可操作入口也简洁恰当,能帮助你快 ...
- python爬虫07BeautifulSoup
有一个高效的网页解析库 它的名字叫做 BeautifulSoup 它 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库 首先我们要安装一下这个库 pip install be ...
- 程序员注意【自verycd.com的JavaAmg77 】
展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的1 ...