← CSS keyframes 关键帧动画 CSS background-blend-mode 属性 →

CSS blur 模糊效果

原创 2025-09-07 CSS 已有人查阅

CSS模糊效果(blur)指南:从基础到高级应用

概述

CSS模糊滤镜(blur)是CSS滤镜函数中的重要组成部分,它能够为网页元素添加高斯模糊效果。这种效果可以增强视觉层次感,引导用户注意力,并创建现代感十足的界面设计。本文将全面介绍CSS blur属性的使用方法、应用场景和实用技巧。

基本语法与原理

基础语法结构

selector {
  filter: blur(radius);
}
  • radius:模糊半径,单位为像素(px)或视窗单位(vw/vh)

  • 值越大,模糊效果越明显

  • 值为0时无模糊效果

工作原理

CSS blur滤镜基于高斯函数算法,对目标元素的每个像素进行计算,将其颜色值与周围像素混合,创建平滑的模糊效果。这种处理在浏览器中通过GPU加速,保证了性能效率。

基础应用示例

1. 图像模糊效果

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号 - 图像模糊效果示例</title>
  <style>
    .image-container {
      display: flex;
      gap: 20px;
      padding: 20px;
      justify-content: center;
    }
    
    .blur-example {
      width: 300px;
      height: 200px;
      border-radius: 8px;
      box-shadow: 0 4px 8px rgba(0,0,0,0.1);
      background-size: cover;
      background-position: center;
    }
    
    .no-blur {
      background-image: url('https://www.ebingou.cn/biancheng/images/1.jpg');
    }
    
    .light-blur {
      background-image: url('https://www.ebingou.cn/biancheng/images/2.jpg');
      filter: blur(2px);
    }
    
    .medium-blur {
      background-image: url('https://www.ebingou.cn/biancheng/images/3.jpg');
      filter: blur(5px);
    }
    
    .heavy-blur {
      background-image: url('https://www.ebingou.cn/biancheng/images/4.jpg');
      filter: blur(10px);
    }
    
    .caption {
      text-align: center;
      margin-top: 10px;
      font-family: Arial, sans-serif;
      color: #333;
    }
  </style>
</head>
<body>
  <div style="padding: 20px;">
    <h2>代码号编程学习:CSS图像模糊效果对比</h2>
    <div class="image-container">
      <div>
        <div class="blur-example no-blur"></div>
        <div class="caption">无模糊效果</div>
      </div>
      <div>
        <div class="blur-example light-blur"></div>
        <div class="caption">轻度模糊(2px)</div>
      </div>
      <div>
        <div class="blur-example medium-blur"></div>
        <div class="caption">中度模糊(5px)</div>
      </div>
      <div>
        <div class="blur-example heavy-blur"></div>
        <div class="caption">重度模糊(10px)</div>
      </div>
    </div>
  </div>
</body>
</html>

2. 文本内容模糊

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号 - 文本模糊效果示例</title>
  <style>
    .text-blur-demo {
      max-width: 800px;
      margin: 0 auto;
      padding: 30px;
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    }
    
    .normal-text {
      font-size: 24px;
      margin-bottom: 30px;
      color: #2c3e50;
    }
    
    .blurred-text {
      font-size: 24px;
      filter: blur(3px);
      color: #2c3e50;
      margin-bottom: 30px;
      transition: filter 0.5s ease;
    }
    
    .blurred-text:hover {
      filter: blur(0);
    }
    
    .partial-blur {
      font-size: 24px;
      color: #2c3e50;
    }
    
    .blurred-part {
      filter: blur(2px);
      background-color: rgba(236, 240, 241, 0.5);
      padding: 0 5px;
      display: inline-block;
    }
  </style>
</head>
<body>
  <div class="text-blur-demo">
    <h2>代码号CSS文本模糊效果示例</h2>
    
    <p class="normal-text">这是正常显示的文本内容,用于对比模糊效果。</p>
    
    <p class="blurred-text">这段文本应用了模糊效果,将鼠标悬停在上方可以查看清晰效果。</p>
    
    <p class="partial-blur">
      这段文本中只有<span class="blurred-part">这部分内容</span>应用了模糊效果,
      其他部分保持清晰,可用于重点内容提示。
    </p>
  </div>
</body>
</html>

高级应用技巧

1. 背景模糊与前景清晰对比

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号 - 背景模糊效果示例</title>
  <style>
    .hero-section {
      position: relative;
      height: 500px;
      overflow: hidden;
    }
    
    .background-image {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-image: url('https://www.ebingou.cn/biancheng/images/5.jpg');
      background-size: cover;
      background-position: center;
      filter: blur(8px);
      transform: scale(1.1); /* 防止边缘模糊留白 */
    }
    
    .content-overlay {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      text-align: center;
      color: white;
      text-shadow: 0 2px 4px rgba(0,0,0,0.5);
      width: 80%;
      max-width: 600px;
    }
    
    .content-overlay h2 {
      font-size: 2.5rem;
      margin-bottom: 20px;
    }
    
    .content-overlay p {
      font-size: 1.2rem;
      line-height: 1.6;
    }
    
    .cta-button {
      display: inline-block;
      margin-top: 30px;
      padding: 12px 30px;
      background-color: #e74c3c;
      color: white;
      text-decoration: none;
      border-radius: 4px;
      font-weight: bold;
      transition: background-color 0.3s;
    }
    
    .cta-button:hover {
      background-color: #c0392b;
    }
  </style>
</head>
<body>
  <section class="hero-section">
    <div class="background-image"></div>
    <div class="content-overlay">
      <h2>欢迎访问代码号编程学习平台</h2>
      <p>通过专业的教程和实战项目,掌握前端开发核心技术,提升编程技能。</p>
      <a href="https://www.ebingou.cn/biancheng/" class="cta-button">开始学习</a>
    </div>
  </section>
</body>
</html>

2. 悬停交互模糊效果

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号 - 悬停模糊效果示例</title>
  <style>
    .gallery {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 20px;
      max-width: 1000px;
      margin: 0 auto;
      padding: 30px;
    }
    
    .gallery-item {
      position: relative;
      height: 250px;
      border-radius: 8px;
      overflow: hidden;
      box-shadow: 0 4px 8px rgba(0,0,0,0.1);
      transition: transform 0.3s, filter 0.3s;
    }
    
    .gallery-item img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      transition: filter 0.3s;
    }
    
    .gallery-item .overlay {
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      background: rgba(0, 0, 0, 0.7);
      color: white;
      padding: 15px;
      transform: translateY(100%);
      transition: transform 0.3s;
    }
    
    /* 悬停时模糊其他项目 */
    .gallery:hover .gallery-item:not(:hover) {
      filter: blur(3px);
    }
    
    /* 悬停时显示标题 */
    .gallery-item:hover .overlay {
      transform: translateY(0);
    }
    
    /* 悬停时放大当前项目 */
    .gallery-item:hover {
      transform: scale(1.05);
      z-index: 10;
    }
  </style>
</head>
<body>
  <div style="text-align: center; padding: 20px;">
    <h2>代码号项目展示 - 悬停交互效果</h2>
    <p>将鼠标悬停在项目上查看模糊交互效果</p>
  </div>
  
  <div class="gallery">
    <div class="gallery-item">
      <img src="https://www.ebingou.cn/biancheng/images/1.jpg" alt="项目一">
      <div class="overlay">
        <h3>HTML/CSS基础教程</h3>
        <p>网页开发入门课程</p>
      </div>
    </div>
    <div class="gallery-item">
      <img src="https://www.ebingou.cn/biancheng/images/2.jpg" alt="项目二">
      <div class="overlay">
        <h3>JavaScript实战项目</h3>
        <p>交互式网页开发</p>
      </div>
    </div>
    <div class="gallery-item">
      <img src="https://www.ebingou.cn/biancheng/images/3.jpg" alt="项目三">
      <div class="overlay">
        <h3>响应式设计技巧</h3>
        <p>多设备适配方案</p>
      </div>
    </div>
    <div class="gallery-item">
      <img src="https://www.ebingou.cn/biancheng/images/4.jpg" alt="项目四">
      <div class="overlay">
        <h3>CSS动画与过渡</h3>
        <p>提升用户体验的方法</p>
      </div>
    </div>
    <div class="gallery-item">
      <img src="https://www.ebingou.cn/biancheng/images/5.jpg" alt="项目五">
      <div class="overlay">
        <h3>前端框架比较</h3>
        <p>React、Vue与Angular</p>
      </div>
    </div>
    <div class="gallery-item">
      <img src="https://www.ebingou.cn/biancheng/images/6.jpg" alt="项目六">
      <div class="overlay">
        <h3>性能优化策略</h3>
        <p>提升网站加载速度</p>
      </div>
    </div>
  </div>
</body>
</html>

3. 模糊效果过渡动画

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号 - 模糊过渡动画示例</title>
  <style>
    .transition-demo {
      max-width: 800px;
      margin: 0 auto;
      padding: 30px;
    }
    
    .focus-card {
      position: relative;
      height: 300px;
      border-radius: 12px;
      overflow: hidden;
      margin-bottom: 30px;
    }
    
    .focus-card .background {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-image: url('https://www.ebingou.cn/biancheng/images/2.jpg');
      background-size: cover;
      background-position: center;
      filter: blur(12px);
      transform: scale(1.1);
      transition: filter 0.8s ease;
    }
    
    .focus-card .content {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      text-align: center;
      color: white;
      opacity: 0;
      transition: opacity 0.8s ease;
    }
    
    .focus-card:hover .background {
      filter: blur(0);
    }
    
    .focus-card:hover .content {
      opacity: 1;
    }
    
    .animated-blur {
      padding: 40px;
      background: linear-gradient(135deg, #3498db, #8e44ad);
      color: white;
      text-align: center;
      border-radius: 8px;
      margin-bottom: 30px;
      filter: blur(15px);
      opacity: 0;
      transform: translateY(20px);
      animation: blurReveal 2s forwards 0.5s;
    }
    
    @keyframes blurReveal {
      0% {
        filter: blur(15px);
        opacity: 0;
        transform: translateY(20px);
      }
      100% {
        filter: blur(0);
        opacity: 1;
        transform: translateY(0);
      }
    }
  </style>
</head>
<body>
  <div class="transition-demo">
    <h2 style="text-align: center;">代码号CSS模糊过渡效果示例</h2>
    
    <div class="focus-card">
      <div class="background"></div>
      <div class="content">
        <h3>CSS模糊效果深度解析</h3>
        <p>探索CSS blur滤镜的多种应用场景和技巧</p>
      </div>
    </div>
    
    <div class="animated-blur">
      <h3>动画模糊效果</h3>
      <p>此元素在页面加载时通过动画从模糊状态变为清晰状态</p>
    </div>
  </div>
</body>
</html>

实际应用场景

1. 模态框背景模糊

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号 - 模态框背景模糊示例</title>
  <style>
    body {
      margin: 0;
      font-family: Arial, sans-serif;
      background: #f5f5f5;
    }
    
    .page-content {
      padding: 40px;
      min-height: 100vh;
      background-image: url('https://www.ebingou.cn/biancheng/images/6.jpg');
      background-size: cover;
      background-position: center;
      transition: filter 0.3s ease;
    }
    
    .blurred {
      filter: blur(5px);
    }
    
    .modal {
      display: none;
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background: rgba(0, 0, 0, 0.5);
      justify-content: center;
      align-items: center;
      z-index: 1000;
    }
    
    .modal-content {
      background: white;
      padding: 30px;
      border-radius: 8px;
      max-width: 500px;
      width: 90%;
      box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
      position: relative;
    }
    
    .close-button {
      position: absolute;
      top: 15px;
      right: 15px;
      background: none;
      border: none;
      font-size: 24px;
      cursor: pointer;
      color: #777;
    }
    
    .open-modal-btn {
      padding: 12px 24px;
      background-color: #3498db;
      color: white;
      border: none;
      border-radius: 4px;
      font-size: 16px;
      cursor: pointer;
      transition: background-color 0.3s;
    }
    
    .open-modal-btn:hover {
      background-color: #2980b9;
    }
  </style>
</head>
<body>
  <div class="page-content" id="pageContent">
    <div style="text-align: center; padding-top: 100px;">
      <h2>代码号CSS模态框示例</h2>
      <p>点击下方按钮打开模态框,观察背景模糊效果</p>
      <button class="open-modal-btn" onclick="openModal()">打开模态框</button>
    </div>
  </div>
  
  <div class="modal" id="modal">
    <div class="modal-content">
      <button class="close-button" onclick="closeModal()">&times;</button>
      <h3>欢迎访问代码号编程学习平台</h3>
      <p>我们提供全面的前端开发教程和实践项目,帮助您掌握现代Web开发技术。</p>
      <p>通过我们的课程,您可以学习HTML、CSS、JavaScript等核心技术,以及React、Vue等流行框架。</p>
      <div style="text-align: center; margin-top: 20px;">
        <a href="https://www.ebingou.cn/biancheng/" style="display: inline-block; padding: 10px 20px; background: #3498db; color: white; text-decoration: none; border-radius: 4px;">开始学习</a>
      </div>
    </div>
  </div>

  <script>
    function openModal() {
      document.getElementById('modal').style.display = 'flex';
      document.getElementById('pageContent').classList.add('blurred');
    }
    
    function closeModal() {
      document.getElementById('modal').style.display = 'none';
      document.getElementById('pageContent').classList.remove('blurred');
    }
  </script>
</body>
</html>

2. 卡片式布局模糊效果

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号 - 卡片模糊效果示例</title>
  <style>
    .cards-container {
      display: flex;
      flex-wrap: wrap;
      gap: 20px;
      justify-content: center;
      padding: 40px;
      background: #f0f2f5;
      min-height: 100vh;
    }
    
    .card {
      width: 300px;
      background: white;
      border-radius: 12px;
      overflow: hidden;
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
      transition: transform 0.3s, box-shadow 0.3s;
    }
    
    .card:hover {
      transform: translateY(-5px);
      box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
    }
    
    .card-image {
      height: 180px;
      position: relative;
      overflow: hidden;
    }
    
    .card-image img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      transition: filter 0.3s, transform 0.5s;
    }
    
    .card:hover .card-image img {
      filter: blur(2px);
      transform: scale(1.05);
    }
    
    .card-content {
      padding: 20px;
    }
    
    .card h3 {
      margin-top: 0;
      color: #2c3e50;
    }
    
    .card p {
      color: #7f8c8d;
      line-height: 1.5;
    }
    
    .card-button {
      display: inline-block;
      padding: 8px 16px;
      background: #3498db;
      color: white;
      text-decoration: none;
      border-radius: 4px;
      font-size: 14px;
      transition: background 0.3s;
    }
    
    .card-button:hover {
      background: #2980b9;
    }
  </style>
</head>
<body>
  <div class="cards-container">
    <div class="card">
      <div class="card-image">
        <img src="https://www.ebingou.cn/biancheng/images/1.jpg" alt="HTML/CSS教程">
      </div>
      <div class="card-content">
        <h3>HTML/CSS基础教程</h3>
        <p>从零开始学习网页布局和样式设计,掌握响应式网页开发的基本技能。</p>
        <a href="https://www.ebingou.cn/jiaocheng/" class="card-button">查看教程</a>
      </div>
    </div>
    
    <div class="card">
      <div class="card-image">
        <img src="https://www.ebingou.cn/biancheng/images/2.jpg" alt="JavaScript实战">
      </div>
      <div class="card-content">
        <h3>JavaScript实战项目</h3>
        <p>通过实际项目学习JavaScript编程,掌握交互式网页开发技术。</p>
        <a href="https://www.ebingou.cn/biancheng/" class="card-button">查看教程</a>
      </div>
    </div>
    
    <div class="card">
      <div class="card-image">
        <img src="https://www.ebingou.cn/biancheng/images/3.jpg" alt="前端框架">
      </div>
      <div class="card-content">
        <h3>前端框架比较</h3>
        <p>深入了解React、Vue和Angular等流行框架的特点和适用场景。</p>
        <a href="https://www.ebingou.cn/biancheng/" class="card-button">查看教程</a>
      </div>
    </div>
  </div>
</body>
</html>

性能优化与浏览器兼容性

性能考虑

  1. 谨慎使用大面积模糊:大面积应用模糊效果可能影响页面性能,特别是在低性能设备上

  2. 使用transform和opacity:结合使用这些属性可以提高性能,因为它们能触发GPU加速

  3. 限制动画元素数量:同时动画过多模糊元素可能导致性能下降

浏览器兼容性

CSS filter属性(包括blur)在现代浏览器中得到良好支持:

  • Chrome 18+ (部分版本需要-webkit-前缀)

  • Firefox 35+

  • Safari 6+ (需要-webkit-前缀)

  • Edge 79+

  • Opera 15+

对于不支持filter属性的旧版浏览器,可以考虑以下解决方案:

  1. 使用JavaScript库(如StackBlur)实现类似效果

  2. 提供降级方案,确保内容可访问性

  3. 使用静态模糊图像作为后备方案

本节课程知识要点

  1. 模糊效果基础:掌握CSS blur()函数的基本语法和参数设置

  2. 应用场景识别:了解在哪些情境下使用模糊效果能够提升用户体验

  3. 性能优化意识:认识模糊效果对性能的影响并学会合理使用

  4. 交互设计整合:将模糊效果与悬停、点击等用户交互结合

  5. 浏览器兼容性处理:了解不同浏览器的支持情况并制定相应策略

  6. 响应式设计考虑:确保模糊效果在不同设备上都能正常显示

实用技巧与建议

  1. 适度使用:模糊效果应作为视觉增强手段,而非页面主要元素

  2. 结合其他滤镜:尝试将blur与其他CSS滤镜(如brightness、contrast)结合使用

  3. 注意可访问性:确保文本内容在模糊背景下仍然清晰可读

  4. 测试多种设备:在不同设备和屏幕尺寸上测试模糊效果的表现

  5. 考虑加载性能:大型图像的模糊处理可能增加页面加载时间

通过合理应用CSS模糊效果,开发者可以创建出视觉吸引力强、用户体验优秀的现代网页设计。更多CSS教程和前端开发资源,请访问 ↗️ CSS 教程 ↗️ CSS 属性参考手册

← CSS keyframes 关键帧动画 CSS background-blend-mode 属性 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号