css filter

一、基本概念

filter 属性用于对元素应用图形效果,如模糊、颜色偏移、亮度调整等。通常用于图片、背景和视频的视觉效果处理。

语法:

.element {

filter: \[\]* | none;

}

二、所有滤镜函数详解

  1. blur() - 模糊
    /* 高斯模糊,数值越大越模糊 /
    filter: blur(5px);
    filter: blur(0); /
    无模糊 */
    参数:长度值(不能为百分比)
    不接受负值
  2. brightness() - 亮度
    filter: brightness(1); /* 原始亮度 /
    filter: brightness(1.5); /
    更亮 /
    filter: brightness(0.5); /
    更暗(50%) /
    filter: brightness(0); /
    完全黑色 */
    0% 为纯黑,100% 为原始,超过 100% 更亮
  3. contrast() - 对比度
    filter: contrast(1); /* 原始对比度 /
    filter: contrast(1.5); /
    增强对比度 /
    filter: contrast(0.5); /
    降低对比度 /
    filter: contrast(0); /
    完全灰色 */
  4. grayscale() - 灰度
    filter: grayscale(0); /* 原始颜色 /
    filter: grayscale(0.5); /
    50% 灰度 /
    filter: grayscale(1); /
    完全灰度(黑白) */
  5. sepia() - 棕褐色/怀旧
    filter: sepia(0); /* 原始颜色 /
    filter: sepia(0.6); /
    60% 棕褐色 /
    filter: sepia(1); /
    完全棕褐色 */
  6. saturate() - 饱和度
    filter: saturate(1); /* 原始饱和度 /
    filter: saturate(2); /
    超级饱和 /
    filter: saturate(0); /
    完全不饱和(等同于灰度) /
    filter: saturate(0.5); /
    降低饱和度 */
  7. hue-rotate() - 色相旋转
    filter: hue-rotate(0deg); /* 原始色相 /
    filter: hue-rotate(90deg); /
    旋转90度 /
    filter: hue-rotate(180deg); /
    旋转180度(补色) */
    filter: hue-rotate(270deg);
    参数:角度值(deg、rad、turn 等)
    色相环旋转
  8. invert() - 反色
    filter: invert(0); /* 原始颜色 /
    filter: invert(0.5); /
    50% 反色 /
    filter: invert(1); /
    完全反色(负片效果) */
  9. opacity() - 透明度
    filter: opacity(1); /* 完全不透明 /
    filter: opacity(0.5); /
    50% 透明 /
    filter: opacity(0); /
    完全透明 */
    类似 opacity 属性,但硬件加速性能更好
  10. drop-shadow() - 投影
    filter: drop-shadow(4px 4px 10px rgba(0, 0, 0, 0.5));
    filter: drop-shadow(0 0 5px blue);
    参数: ?
    与 box-shadow 不同,它遵循元素的透明轮廓
    三、组合使用
    可以同时应用多个滤镜:

/* 多个滤镜用空格分隔 */

.element {

filter: blur(2px) brightness(1.2) contrast(1.1);

}

/* 创建特定效果 /
.image:hover {
filter: grayscale(100%) brightness(0.8) contrast(1.2);
/
黑白、稍暗、高对比度 */

}

四、常见效果示例

  1. 复古照片效果
    .vintage {
    filter: sepia(0.5) contrast(0.9) brightness(0.9) saturate(0.8);
    }
  2. 冷色调效果
    .cool-tone {
    filter: hue-rotate(180deg) saturate(0.8) brightness(1.1);
    }
  3. 高对比度黑白
    .high-contrast-bw {
    filter: grayscale(1) contrast(1.5) brightness(0.9);
    }
  4. 毛玻璃效果
    .glass {
    filter: blur(10px) brightness(1.1);
    }
  5. 霓虹灯效果
    .neon {
    filter: brightness(1.5) contrast(1.2) saturate(2)
    drop-shadow(0 0 10px currentColor);
    }
    五、性能与注意事项
  6. 性能对比
    /* ✅ 推荐:使用 filter 实现透明度(硬件加速) */
    filter: opacity(0.5);

/* ⚠️ 避免:opacity 属性可能触发重绘 /
opacity: 0.5;
2. 创建堆叠上下文
/
filter 会创建新的堆叠上下文 /
.parent {
filter: blur(1px);
/
子元素的 z-index 相对于这个父元素 /
}
3. 影响后代元素
/
注意:filter 会影响所有后代元素 /
.container {
filter: blur(5px); /
容器内所有内容都会模糊 */

}

/* 解决方案:只对背景应用滤镜 /
.container {
position: relative;
}
.container::before {
content: '';
position: absolute;
inset: 0;
background: url('bg.jpg');
filter: blur(5px); /
只有背景模糊 */

}

六、backdrop-filter

对元素后面的内容应用滤镜:

/* 常见的毛玻璃导航栏 /
.navbar {
background: rgba(255, 255, 255, 0.2);
backdrop-filter: blur(10px) saturate(1.5);
-webkit-backdrop-filter: blur(10px); /
Safari 支持 */

}

/* 背景变暗 */

.overlay {

backdrop-filter: brightness(0.5);

}

七、完整对比表

函数 作用 默认值 范围

blur() 模糊 0 0+

brightness() 亮度 1 0+

contrast() 对比度 1 0+

grayscale() 灰度 0 0-1

sepia() 棕褐色 0 0-1

saturate() 饱和度 1 0+

hue-rotate() 色相旋转 0deg 任意角度

invert() 反色 0 0-1

opacity() 透明度 1 0-1

drop-shadow() 投影 none -

八、实用技巧

/1. 悬浮高亮 /

.btn-back {

cursor: pointer;

transition: all 0.25s ease-out;

复制代码
.btn-wrap__icon {
  background-image: url('~@/assets/images/icon-left.png');
}

&:hover {
  filter: brightness(1.15) saturate(1.1); // 提亮15%,增加10%饱和度,色彩更鲜艳
}

}

/* 2. 禁用状态 */

.disabled {

filter: grayscale(1) opacity(0.5);

pointer-events: none;

}

/* 3. 暗色模式图片适配 */

@media (prefers-color-scheme: dark) {

img {

filter: brightness(0.8) contrast(1.2);

}

}

/* 4. 加载占位符 */

.loading {

filter: blur(20px);

transition: filter 0.3s;

}

.loaded {

filter: blur(0);

}

CSS filter 是一个非常强大的视觉处理工具,合理使用可以创造出丰富的视觉效果!

相关推荐
Agatha方艺璇2 小时前
VUE复习笔记
前端·vue.js
大家的林语冰2 小时前
npm 不忍了,正式上线“阶段式发布“的新功能,进一步对抗频繁的供应链攻击!
前端·javascript·node.js
by————组态2 小时前
Ricon组态技术架构 - 企业级Web组态解决方案
运维·服务器·前端·物联网·架构·组态·组态软件
葛兰岱尔2 小时前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
llz_1122 小时前
web-第六次课后作业
前端·spring boot·后端
zzqssliu2 小时前
基于Laravel + Express.js的代购系统多语言多货币架构设计
javascript·express·laravel
爱勇宝2 小时前
CEO通知5100名员工:今年不涨薪了,钱要投给AI!
前端·后端·程序员
乘风gg3 小时前
前端死到第几轮了?得物前端部门解散有感!
前端·ai编程·claude
艾伦野鸽ggg3 小时前
web 组大一下第二次考核
前端·css·html