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 是一个非常强大的视觉处理工具,合理使用可以创造出丰富的视觉效果!

相关推荐
东风破_14 分钟前
LLM 为什么记不住你?无状态、messages 和上下文管理
javascript·人工智能
梨子同志22 分钟前
qiankun
前端
梨子同志31 分钟前
Nginx
前端
梨子同志33 分钟前
NestJS
前端
梨子同志1 小时前
Next.js
前端
谭光志1 小时前
工具塞满上下文窗口怎么办?深度拆解 AI Agent Tool Search 按需加载实现原理
前端·后端·ai编程
Hilaku1 小时前
前端架构师的克制:什么时候该坚决对新技术说不?
前端·javascript·程序员
陈随易1 小时前
前端项目部署只要30秒
前端·后端·程序员
本末倒置1831 小时前
从 Vue CLI 迁移到 Rsbuild 后,JSX 突然全挂了?一次排查记录
前端
古夕1 小时前
多应用同域部署下 Favicon 异常问题排查与治理
前端·javascript