0

0

CSS 实现 SVG 动画背景与内容叠加的专业教程

心靈之曲

心靈之曲

发布时间:2025-08-17 21:48:30

|

449人浏览过

|

来源于php中文网

原创

css 实现 svg 动画背景与内容叠加的专业教程

第一段引用上面的摘要:

本文旨在解决在 CSS 中实现 SVG 动画背景,并在其上方叠加内容(如图片、文本框)的问题。我们将探讨如何使 SVG 动画自适应屏幕宽度而不拉伸内部元素,以及如何利用 CSS 定位技巧将内容精准地放置在 SVG 图形之上,最终实现美观且响应式的页面布局。通过本文提供的两种方法,您可以灵活地控制元素的层叠关系,轻松创建具有吸引力的视觉效果。

SVG 动画背景与内容叠加的实现方法

在网页设计中,使用 SVG 动画作为背景并叠加内容是一种常见的视觉效果。本文将介绍两种实现这种效果的方法:使用 position: absolute 进行定位,以及使用 CSS Grid 进行布局。

方法一:使用 position: absolute 定位

这种方法的核心思想是利用 position: relative 将 SVG 容器设置为定位上下文,然后使用 position: absolute 将需要叠加的内容放置在 SVG 之上。

立即学习前端免费学习笔记(深入)”;

步骤:

  1. 创建父容器: 创建一个 div 元素作为父容器,并设置 position: relative。这将作为绝对定位元素的参考。

    .parent {
      position: relative;
      width: 100%; /* 设置宽度 */
      height: 30rem; /* 设置高度 */
    }
  2. 添加 SVG 元素: 将 SVG 元素添加到父容器中。为了使 SVG 自适应宽度而不拉伸内部元素,需要正确设置 viewBox 属性,并移除 width 和 height 属性。

    <svg viewBox="0 70 1440 700" xmlns="http://www.w3.org/2000/svg" class="child-one">
      <!-- SVG 内容 -->
    </svg>
    .child-one {
      display: block; /* 确保 SVG 占据整个容器 */
      width: 100%;
      height: auto; /* 保持宽高比 */
    }
  3. 添加叠加内容: 将需要叠加的内容(例如文本框、图片)添加到父容器中,并设置 position: absolute。使用 top、left、right、bottom 属性来调整内容的位置。

    一点PPT
    一点PPT

    一句话生成专业PPT,AI自动排版配图

    下载
    <div class="child-two">
      Some text.<br>
      Some more text.<br>
      Etcetera.
    </div>
    .child-two {
      position: absolute;
      top: 20px; /* 调整顶部位置 */
      left: 30px; /* 调整左侧位置 */
      background-color: rgba(255, 255, 255, 0.8); /* 可选:添加背景色 */
      padding: 10px; /* 可选:添加内边距 */
    }

完整代码示例:

<div class="parent">
  <svg viewBox="0 70 1440 700" xmlns="http://www.w3.org/2000/svg" class="child-one">
    <style>
        /* 你的 SVG 动画样式 */
    </style>
    <path id="circleView" d="M 0,700 C 0,700 0,233 0,233 C 30.97425091062989,218.19027693419207 61.94850182125978,203.3805538683841 109,197 C 156.05149817874022,190.6194461316159 219.18024362559078,192.66806146065565 263,190 C 306.8197563744092,187.33193853934435 331.3305236763771,179.9472002889933 378,200 C 424.6694763236229,220.0527997110067 493.49766166890083,267.5431373833712 546,302 C 598.5023383310992,336.4568626166288 634.6788296480196,357.88025017752193 672,319 C 709.3211703519804,280.11974982247807 747.7870197390207,180.9358619065411 781,174 C 814.2129802609793,167.0641380934589 842.1730913958978,252.3763021963136 893,283 C 943.8269086041022,313.6236978036864 1017.520614677388,289.5589293082046 1066,271 C 1114.479385322612,252.44107069179543 1137.7444498945492,239.38798057086802 1171,244 C 1204.2555501054508,248.61201942913198 1241247.5015857444146,270.8891484083234 1294,272 C 1340.4984142555854,273.1108515916766 1390.2492071277927,253.0554257958383 1440,233 C 1440,233 1440,700 1440,700 Z" stroke="none" stroke-width="0" fill="#2a304188" class="transition-all duration-300 ease-in-out delay-150 path-0" transform="rotate(-180 720 350)"></path>
    <path d="M 0,700 C 0,700 0,466 0,466 C 28.170884988817434,461.7535021842722 56.34176997763487,457.5070043685443 106,472 C 155.65823002236513,486.4929956314557 226.8038050782779,519.7254847100947 280,515 C 333.1961949217221,510.27451528990525 368.4430097092536,467.5910567910766 403,472 C 437.5569902907464,476.4089432089234 471.42415608470765,527.9102881255988 510,514 C 548.5758439152924,500.0897118744012 591.8603659519157,420.76779070652833 644,414 C 696.1396340480843,407.23220929347167 757.1343801076289,473.01854904828775 798,487 C 838.8656198923711,500.98145095171225 859.6021136175689,463.1580131003207 903,430 C 946.3978863824311,396.8419868996793 1012.4571654220952,368.3493985504295 1063,397 C 1113.5428345779048,425.6506014495705 1148.5692246940512,511.44439269796123 1187,521 C 1225.4307753059488,530.5556073020388 1267.2659358016997,463.87303065772534 1310,442 C 1352.7340641983003,420.12696934227466 1396.36703209915,443.0634846711373 1440,466 C 1440,466 1440,700 1440,700 Z" stroke="none" stroke-width="0" fill="#2a3041ff" class="transition-all duration-300 ease-in-out delay-150 path-1" transform="rotate(-180 720 350)"></path>
    <g transform="translate(800,0)">
      <image width="50rem" height="50rem" xlink:href="https://www.freepnglogos.com/uploads/people-png/pin-vito-human-source-people-cutout-33.png" clip-path="url(#circleView)" />
    </g>
  </svg>

  <div class="child-two">
    Some text.<br>
    Some more text.<br>
    Etcetera.
  </div>
</div>
.parent {
  position: relative;
  width: 100%;
  height: 30rem;
}

.child-one {
  display: block;
  width: 100%;
  height: auto;
}

.child-two {
  position: absolute;
  top: 20px;
  left: 30px;
  background-color: rgba(255, 255, 255, 0.8);
  padding: 10px;
}

方法二:使用 CSS Grid 布局

CSS Grid 提供了一种更现代、更灵活的方式来实现元素的层叠。

步骤:

  1. 创建父容器: 创建一个 div 元素作为父容器,并设置 display: grid。定义 grid-template-columns 和 grid-template-rows,确保所有子元素占据相同的网格区域。

    .parent {
      display: grid;
      grid-template-columns: 1fr; /* 或者指定宽度,例如 200px */
      grid-template-rows: 30rem; /* 或者指定高度,例如 150px */
    }
  2. 添加 SVG 元素和叠加内容: 将 SVG 元素和需要叠加的内容添加到父容器中。

    <div class="parent">
      <svg viewBox="0 70 1440 700" xmlns="http://www.w3.org/2000/svg" class="child-one">
        <!-- SVG 内容 -->
      </svg>
    
      <div class="child-two">
        Some text.<br>
        Some more text.<br>
        Etcetera.
      </div>
    </div>
  3. 设置网格位置: 使用 grid-column 和 grid-row 属性将所有子元素放置在同一个网格单元格中。

    .child-one, .child-two {
      grid-column: 1 / 1;
      grid-row: 1 / 1;
    }

完整代码示例:

<div class="parent">
  <svg viewBox="0 70 1440 700" xmlns="http://www.w3.org/2000/svg" class="child-one">
    <style>
        /* 你的 SVG 动画样式 */
    </style>
    <path id="circleView" d="M 0,700 C 0,700 0,233 0,233 C 30.97425091062989,218.19027693419207 61.94850182125978,203.3805538683841 109,197 C 156.05149817874022,190.6194461316159 219.18024362559078,192.66806146065565 263,190 C 306.8197563744092,187.33193853934435 331.3305236763771,179.9472002889933 378,200 C 424.6694763236229,220.0527997110067 493.49766166890083,267.5431373833712 546,302 C 598.5023383310992,336.4568626166288 634.6788296480196,357.88025017752193 672,319 C 709.3211703519804,280.11974982247807 747.7870197390207,180.9358619065411 781,174 C 814.2129802609793,167.0641380934589 842.1730913958978,252.3763021963136 893,283 C 943.8269086041022,313.6236978036864 1017.520614677388,289.5589293082046 1066,271 C 1114.479385322612,252.44107069179543 1137.7444498945492,239.38798057086802 1171,244 C 1204.2555501054508,248.61201942913198 1241247.5015857444146,270.8891484083234 1294,272 C 1340.4984142555854,273.1108515916766 1390.2492071277927,253.0554257958383 1440,233 C 1440,233 1440,700 1440,700 Z" stroke="none" stroke-width="0" fill="#2a304188" class="transition-all duration-300 ease-in-out delay-150 path-0" transform="rotate(-180 720 350)"></path>
    <path d="M 0,700 C 0,700 0,466 0,466 C 28.170884988817434,461.7535021842722 56.34176997763487,457.5070043685443 106,472 C 155.65823002236513,486.4929956314557 226.8038050782779,519.7254847100947 280,515 C 333.1961949217221,510.27451528990525 368.4430097092536,467.5910567910766 403,472 C 437.5569902907464,476.4089432089234 471.42415608470765,527.9102881255988 510,514 C 548.5758439152924,500.0897118744012 591.8603659519157,420.76779070652833 644,414 C 696.1396340480843,407.23220929347167 757.1343801076289,473.01854904828775 798,487 C 838.8656198923711,500.98145095171225 859.6021136175689,463.1580131003207 903,430 C 946.3978863824311,396.8419868996793 1012.4571654220952,368.3493985504295 1063,397 C 1113.5428345779048,425.6506014495705 1148.5692246940512,511.44439269796123 1187,521 C 1225.4307753059488,530.5556073020388 1267.2659358016997,463.87303065772534 1310,442 C 1352.7340641983003,420.12696934227466 1396.36703209915,443.0634846711373 1440,466 C 1440,466 1440,700 1440,700 Z" stroke="none" stroke-width="0" fill="#2a3041ff" class="transition-all duration-300 ease-in-out delay-150 path-1" transform="rotate(-180 720 350)"></path>
    <g transform="translate(800,0)">
      <image width="50rem" height="50rem" xlink:href="https://www.freepnglogos.com/uploads/people-png/pin-vito-human-source-people-cutout-33.png" clip-path="url(#circleView)" />
    </g>
  </svg>

  <div class="child-two">
    Some text.<br>
    Some more text.<br>
    Etcetera.
  </div>
</div>
.parent {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 30rem;
}

.child-one, .child-two {
  grid-column: 1 / 1;
  grid-row: 1 / 1;
}

.child-one {
  width: 100%;
  height: auto;
}

.child-two {
  background-color: rgba(255, 255, 255, 0.8

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

83

2023.11.23

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

25

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

44

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

177

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

50

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

530

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号