🌟 第十三章:高级视觉效果

创建令人惊艳的视觉效果

13.1 滤镜 (filter)

滤镜可以改变元素的视觉效果,包括模糊、亮度、对比度等。

常用滤镜

滤镜 描述 示例值
blur() 模糊效果 blur(5px)
brightness() 亮度调整 brightness(1.5)
contrast() 对比度调整 contrast(1.2)
grayscale() 灰度效果 grayscale(100%)
sepia() sepia 效果 sepia(100%)
hue-rotate() 色相旋转 hue-rotate(90deg)
invert() 反色效果 invert(100%)
drop-shadow() 阴影效果 drop-shadow(0 4px 6px rgba(0,0,0,0.1))
.element {
    filter: blur(2px) brightness(1.2) contrast(1.1);
}

滤镜示例

悬停我

13.2 混合模式 (mix-blend-mode)

混合模式控制元素如何与背景和其他元素混合,创造出丰富的视觉效果。

常用混合模式

模式 描述
normal 默认,正常显示
multiply 正片叠底
screen 滤色
overlay 叠加
darken 变暗
lighten 变亮
color-dodge 颜色减淡
color-burn 颜色加深
hard-light 强光
soft-light 柔光
difference 差值
exclusion 排除
.overlay {
    background: radial-gradient(circle, #f1c40f, transparent);
    mix-blend-mode: overlay;
}

混合模式示例

混合模式效果

13.3 遮罩 (mask-image)

遮罩可以使用图像或渐变来裁剪元素,创造出各种形状。

基本语法

.element {
    -webkit-mask-image: url(mask.png);
    mask-image: url(mask.png);
    -webkit-mask-size: cover;
    mask-size: cover;
}

/* 使用渐变作为遮罩 */
.element {
    -webkit-mask-image: linear-gradient(to bottom, black, transparent);
    mask-image: linear-gradient(to bottom, black, transparent);
}

遮罩示例

遮罩效果

13.4 剪切路径 (clip-path)

剪切路径可以创建各种多边形和复杂形状,是创建异形布局的利器。

基本语法

.element {
    clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}

/* 圆形 */
.circle {
    clip-path: circle(50% at 50% 50%);
}

/* 椭圆 */
.ellipse {
    clip-path: ellipse(50% 30% at 50% 50%);
}

/* 圆角矩形 */
.rounded-rect {
    clip-path: inset(10px round 20px);
}

剪切路径示例

悬停我

实战案例

图片悬停效果

.image-card {
    position: relative;
    overflow: hidden;
    border-radius: 8px;
}

.image-card img {
    transition: transform 0.5s ease;
}

.image-card:hover img {
    transform: scale(1.1);
    filter: brightness(1.2);
}

.image-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);
    opacity: 0;
    transition: opacity 0.3s ease;
}

.image-card:hover .image-overlay {
    opacity: 1;
}

渐变文字

.gradient-text {
    background: linear-gradient(45deg, #3498db, #e74c3c);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    font-size: 2em;
    font-weight: bold;
}

波浪背景

.wave-bg {
    position: relative;
    background: #3498db;
    color: white;
    padding: 100px 0;
}

.wave-bg::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100px;
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320"><path fill="%23ffffff" fill-opacity="1" d="M0,192L48,197.3C96,203,192,213,288,229.3C384,245,480,267,576,250.7C672,235,768,181,864,181.3C960,181,1056,235,1152,234.7C1248,235,1344,181,1392,154.7L1440,128L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"></path></svg>');
    background-size: 1440px 100px;
}

动手练习

练习 1:滤镜效果

  1. 创建一个图片卡片
  2. 为图片添加悬停效果,包括模糊、亮度调整
  3. 添加过渡动画使效果更平滑

练习 2:混合模式

  1. 创建一个带有渐变背景的元素
  2. 添加一个叠加层,使用不同的混合模式
  3. 观察不同混合模式的效果

练习 3:剪切路径

  1. 创建一个使用 clip-path 的元素
  2. 设计一个自定义的多边形形状
  3. 添加悬停效果,改变形状