CSS系列(11)-- 滤镜与混合模式详解
前端技术探索系列:CSS 滤镜与混合模式详解 🎨
致读者:探索视觉效果的艺术 👋
前端开发者们,
今天我们将深入探讨 CSS 滤镜与混合模式,学习如何创建独特的视觉效果。
滤镜效果详解 🚀
基础滤镜
/* 基础滤镜效果 */
.filter-basic {/* 模糊 */filter: blur(5px);/* 亮度 */filter: brightness(150%);/* 对比度 */filter: contrast(200%);/* 灰度 */filter: grayscale(100%);/* 色相旋转 */filter: hue-rotate(90deg);/* 反相 */filter: invert(100%);/* 透明度 */filter: opacity(50%);/* 饱和度 */filter: saturate(200%);/* 褐色 */filter: sepia(100%);/* 阴影 */filter: drop-shadow(2px 4px 6px black);
}/* 组合滤镜 */
.filter-combined {filter: contrast(150%) brightness(110%) saturate(120%)hue-rotate(10deg);
}
创意滤镜效果
/* 毛玻璃效果 */
.frosted-glass {background: rgba(255, 255, 255, 0.2);backdrop-filter: blur(10px);
}/* 动态滤镜 */
.hover-filter {transition: filter 0.3s ease;
}.hover-filter:hover {filter: brightness(110%) contrast(110%) saturate(120%);
}/* 图片滤镜预设 */
.filter-preset {/* Instagram-like 效果 */&.nashville {filter: sepia(20%)contrast(150%)brightness(110%)hue-rotate(-10deg);}/* 复古效果 */&.vintage {filter:grayscale(50%)sepia(40%)brightness(90%)contrast(120%);}
}
混合模式详解 🎯
基础混合模式
/* 混合模式基础 */
.blend-basic {/* 背景混合 */background-blend-mode: multiply;/* 元素混合 */mix-blend-mode: overlay;
}/* 常用混合模式 */
.blend-modes {/* 正片叠底 */mix-blend-mode: multiply;/* 叠加 */mix-blend-mode: overlay;/* 滤色 */mix-blend-mode: screen;/* 柔光 */mix-blend-mode: soft-light;/* 强光 */mix-blend-mode: hard-light;/* 差值 */mix-blend-mode: difference;/* 排除 */mix-blend-mode: exclusion;
}
创意混合效果
/* 双重曝光效果 */
.double-exposure {position: relative;&::before {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 100%;background-image: url('texture.jpg');mix-blend-mode: multiply;}
}/* 文字混合效果 */
.blend-text {position: relative;color: white;mix-blend-mode: difference;&::before {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 100%;background: white;mix-blend-mode: difference;}
}
实践项目:图片效果处理器 🛠️
class ImageEffectProcessor {constructor(options = {}) {this.options = {presets: {vintage: {filters: [{ type: 'grayscale', value: 50 },{ type: 'sepia', value: 40 },{ type: 'brightness', value: 90 },{ type: 'contrast', value: 120 }],blend: 'multiply'},dramatic: {filters: [{ type: 'contrast', value: 150 },{ type: 'brightness', value: 110 },{ type: 'saturate', value: 120 }],blend: 'overlay'}},...options};this.init();}init() {this.createStyles();this.setupControls();}createStyles() {const style = document.createElement('style');style.textContent = this.generateStyles();document.head.appendChild(style);}generateStyles() {return `${this.generatePresetStyles()}${this.generateUtilityStyles()}`;}generatePresetStyles() {let styles = '';Object.entries(this.options.presets).forEach(([name, preset]) => {styles += `.preset-${name} {filter: ${this.createFilterString(preset.filters)};mix-blend-mode: ${preset.blend};}`;});return styles;}createFilterString(filters) {return filters.map(filter => `${filter.type}(${filter.value}${this.getUnit(filter.type)})`).join(' ');}getUnit(filterType) {const units = {blur: 'px',brightness: '%',contrast: '%',grayscale: '%',hue-rotate: 'deg',invert: '%',opacity: '%',saturate: '%',sepia: '%'};return units[filterType] || '';}applyEffect(element, preset) {const presetConfig = this.options.presets[preset];if (!presetConfig) return;element.style.filter = this.createFilterString(presetConfig.filters);element.style.mixBlendMode = presetConfig.blend;}setupControls() {const controls = document.createElement('div');controls.className = 'effect-controls';Object.keys(this.options.presets).forEach(preset => {const button = document.createElement('button');button.textContent = preset;button.onclick = () => this.applyPreset(preset);controls.appendChild(button);});document.body.appendChild(controls);}applyPreset(preset) {document.querySelectorAll('.effect-target').forEach(element => {this.applyEffect(element, preset);});}
}
最佳实践建议 💡
-
滤镜使用
- 适度使用滤镜
- 注意性能影响
- 考虑降级方案
- 组合使用效果
-
混合模式
- 合理选择模式
- 考虑背景色影响
- 注意层级关系
- 测试兼容性
-
性能优化
- 避免过度叠加
- 使用硬件加速
- 控制动画效果
- 优化渲染性能
写在最后 🌟
CSS 滤镜与混合模式为我们提供了强大的视觉效果处理能力,合理运用这些特性可以创造出独特的视觉体验。
进一步学习资源 📚
- 滤镜效果集合
- 混合模式指南
- 性能优化技巧
- 创意案例展示
如果你觉得这篇文章有帮助,欢迎点赞收藏,也期待在评论区看到你的想法和建议!👇
终身学习,共同成长。
咱们下一期见
💻
相关文章:
CSS系列(11)-- 滤镜与混合模式详解
前端技术探索系列:CSS 滤镜与混合模式详解 🎨 致读者:探索视觉效果的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS 滤镜与混合模式,学习如何创建独特的视觉效果。 滤镜效果详解 🚀 基础滤…...
linux - 存储管理
1.了解硬件 -- 磁盘 硬盘有机械硬盘(HDD)和固态硬盘(SDD) 接下来,主要以机械磁盘为例(更具代表性,在linux系统层面,无论是机械磁盘还是固态硬盘,文件的读取和写入都iNode(索引节点)管理文件的元数据和实际数据块) 1.盘片&#x…...
在 Kibana 中为 Vega Sankey 可视化添加过滤功能
作者:来自 Elastic Tim Bosman 及 Miloš Mandić 有兴趣在 Kibana 中为 Vega 可视化添加交互式过滤器吗?了解如何利用 “kibanaAddFilter” 函数轻松创建动态且响应迅速的 Sankey 可视化。 在这篇博客中,我们将了解如何启用 Vega Sankey 可视…...
styled-components 库的用法介绍和实践总结
styled-components 库的实践用法总结 前言 前段时间开发了一个 NiceTab 浏览器插件,并写了一篇介绍文章,新开发了一款浏览器Tab管理插件,OneTab 的升级替代品, 欢迎品尝!。 在插件中用到了 styled-components 这个库,于是做一个基本的介绍和分享。 在开发 NiceTab 插件…...
SSE(Server-Sent Events)主动推送消息
说明 使用Java开发web应用,大多数时候我们提供的接口返回数据都是一次性完整返回。有些时候,我们也需要提供流式接口持续写出数据,以下提供一种简单的方式。 SSE(Server-Sent Events) SSE 是一种允许服务器单向发送事…...
pandas.core.frame.DataFrame怎么进行对象内容的读写
在 Python 中,pandas.core.frame.DataFrame 是 Pandas 数据库的核心数据结构,可以方便地读取和操作表格数据。以下是几种常见的读取内容的方法: 读取特定列 通过列名获取数据。 # 假设 df 是一个 DataFrame data df["列名"] # …...
短作业优先调度算法
一、实验目的 了解并掌握作业调度的功能,熟悉并掌握各种作业调度算法。 二、实验内容 模拟实现SJF调度。 设置作业体:作业名,作业的到达时间,服务时间,作业状态(W——等待,R——运行,F——完成)…...
SpringBoot 应用并发处理请求数的深入解析
SpringBoot 应用并发处理请求数的深入解析 一、引言 在现代Web开发中,了解一个应用程序可以同时处理多少个并发请求是至关重要的。 对于基于Spring Boot构建的应用程序来说,这个问题的答案并非绝对,而是取决于多个因素,包括但不…...
MetaGPT中的教程助手:TutorialAssistant
1. 提示词 COMMON_PROMPT """ You are now a seasoned technical professional in the field of the internet. We need you to write a technical tutorial with the topic "{topic}". """DIRECTORY_PROMPT (COMMON_PROMPT "…...
介绍一款docker ui 管理工具
http://vm01:18999/main.html 管理员登陆账号 jinghan/123456 ui启动命令所在文件夹目录 /work/docker/docker-ui 参考链接 DockerUI:一款功能强大的中文Docker可视化管理工具_docker ui-CSDN博客...
0022 基于SpringBoot的婚纱摄影线上预约系统的设计与实现
电子商城系统 1.项目描述2. 绪论2.1 研究背景2.2 目的及意义2.3 国内外研究现状 3.需求分析4.界面展示5.源码获取 1.项目描述 摘 要 本文旨在研究并开发一套基于Spring Boot框架的婚纱摄影线上预约系统,以满足现代婚纱摄影行业对高效、便捷、个性化服务的需求。该系…...
uni-app在image上绘制点位并回显
在 Uni-app 中绘制多边形可以通过使用 Canvas API 来实现。Uni-app 是一个使用 Vue.js 开发所有前端应用的框架,同时支持编译为 H5、小程序等多个平台。由于 Canvas 是 H5 和小程序中都支持的 API,所以通过 Canvas 绘制多边形是一个比较通用的方法。 1.…...
Comparator.comparing 排序注意
1. 对数字型字符串排序 List<String> values new ArrayList<>();values.add("10");values.add("6");values.add("20");values.add("30");values.add("50");//方法1 (正确的排序方法)//倒…...
PPO系列3 - PPO原理
On Policy: 采集数据的模型,和训练的模型,是同一个。缺点:慢,生成一批样本数据,训练一次,又要重新生成下一批。 Off Policy: 采集数据的模型,和训练的模型,不是同一个。有点…...
.idea
.idea/ 文件夹下的文件和目录主要用于存储 JetBrains IDE(如 PyCharm、IntelliJ IDEA 等)的项目配置。下面是一些常见文件和目录及其作用的详细介绍: 1. workspace.xml 用户界面布局:保存了IDE窗口布局,包括打开的文…...
单片机:实现呼吸灯(附带源码)
单片机实现呼吸灯详细解读 呼吸灯是一种常见的灯光效果,广泛应用于电子产品、汽车、家居照明等领域。其基本特性是通过逐渐增亮和减弱的方式,使得灯光呈现出“呼吸”的效果,给人一种平缓、舒适的视觉感受。在嵌入式系统中,呼吸灯…...
PostgreSQL数据库序列信息查询
PostgreSQL序列信息查询 说明: 在PostgreSQL数据库中序列和表都是序列的对象。 数据库中不应该存在孤儿序列,序列应该和表对应的字段绑定起来。绑定后删除表或表对应的字段后,序列会自动被删除。 创建测试表和序列 create table test_t(…...
【Linux】Nginx一个域名https一个地址配置多个项目【项目实战】
👨🎓博主简介 🏅CSDN博客专家 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入!…...
Linux驱动开发(12):中断子系统–按键中断实验
本章我们以按键为例讲解在驱动程序中如何使用中断, 在学习本章之前建议先回顾一下关于中断相关的裸机部分相关章节, 这里主要介绍在驱动中如何使用中断,对于中断的概念及GIC中断控制器相关内容不再进行讲解。 本章配套源码和设备树插件位于“…...
代码随想录-算法训练营-番外(图论02:岛屿数量,岛屿的最大面积)
day02 图论part02 今日任务:岛屿数量,岛屿的最大面积 都是一个模子套出来的 https://programmercarl.com/kamacoder/0099.岛屿的数量深搜.html#思路往日任务: day01 图论part01 今日任务:图论理论基础/所有可到达的路径 代码随想录图论视频部分还没更新 https://programmercar…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
