当前位置:首页 > JavaScript

js实现背景动态

2026-02-03 07:23:28JavaScript

使用CSS动画实现动态背景

通过CSS的@keyframesanimation属性可以创建平滑的动态背景效果。以下是一个渐变颜色变化的示例:

body {
  animation: gradientShift 10s ease infinite;
  background: linear-gradient(45deg, #ff9a9e, #fad0c4, #fbc2eb, #a18cd1);
  background-size: 400% 400%;
}

@keyframes gradientShift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

Canvas绘制粒子背景

使用HTML5 Canvas创建粒子系统动态背景:

js实现背景动态

const canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.style.position = 'fixed';
canvas.style.top = '0';
canvas.style.left = '0';
canvas.style.zIndex = '-1';

const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

const particles = [];
for (let i = 0; i < 100; i++) {
  particles.push({
    x: Math.random() * canvas.width,
    y: Math.random() * canvas.height,
    size: Math.random() * 5 + 1,
    speedX: Math.random() * 3 - 1.5,
    speedY: Math.random() * 3 - 1.5
  });
}

function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  particles.forEach(particle => {
    particle.x += particle.speedX;
    particle.y += particle.speedY;

    if (particle.x < 0 || particle.x > canvas.width) particle.speedX *= -1;
    if (particle.y < 0 || particle.y > canvas.height) particle.speedY *= -1;

    ctx.fillStyle = `rgba(255, 255, 255, ${Math.random()})`;
    ctx.beginPath();
    ctx.arc(particle.x, particle.y, particle.size, 0, Math.PI * 2);
    ctx.fill();
  });

  requestAnimationFrame(animate);
}

animate();

window.addEventListener('resize', () => {
  canvas.width = window.innerWidth;
  canvas.height = window.innerHeight;
});

WebGL实现3D动态背景

使用Three.js库创建3D动态背景:

js实现背景动态

import * as THREE from 'three';

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer({ alpha: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshBasicMaterial({ 
  color: 0x00ff00,
  wireframe: true 
});
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);

camera.position.z = 5;

function animate() {
  requestAnimationFrame(animate);
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
}

animate();

window.addEventListener('resize', () => {
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize(window.innerWidth, window.innerHeight);
});

SVG动画背景

使用SVG创建可缩放的动态背景:

<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <pattern id="grid" width="50" height="50" patternUnits="userSpaceOnUse">
      <path d="M 50 0 L 0 0 0 50" fill="none" stroke="#eee" stroke-width="1"/>
    </pattern>
  </defs>

  <rect width="100%" height="100%" fill="url(#grid)">
    <animateTransform attributeName="transform" type="translate" from="0 0" to="50 50" dur="10s" repeatCount="indefinite"/>
  </rect>

  <circle cx="50%" cy="50%" r="10%" fill="none" stroke="#ff5252" stroke-width="2">
    <animate attributeName="r" values="10%;20%;10%" dur="5s" repeatCount="indefinite"/>
  </circle>
</svg>

视频背景实现

使用HTML5 video元素作为动态背景:

<video autoplay muted loop id="bgVideo">
  <source src="background.mp4" type="video/mp4">
</video>

<style>
  #bgVideo {
    position: fixed;
    right: 0;
    bottom: 0;
    min-width: 100%;
    min-height: 100%;
    z-index: -1;
    filter: brightness(0.6);
  }
</style>

标签: 背景动态
分享给朋友:

相关文章

vue实现动态显示布局

vue实现动态显示布局

Vue 实现动态显示布局的方法 动态显示布局通常涉及根据数据或用户交互动态调整页面结构和内容。以下是几种常见的实现方式: 使用 v-if 和 v-show 指令 v-if 和 v-show 都可以控…

vue 实现动态表单

vue 实现动态表单

Vue 实现动态表单的方法 动态表单通常指表单字段可以动态增减或根据条件变化。以下是几种实现方式: 使用 v-for 动态渲染表单字段 通过数组存储表单字段数据,利用 v-for 动态渲染:…

vue 实现动态菜单

vue 实现动态菜单

动态菜单的实现思路 在Vue中实现动态菜单通常涉及从后端API获取菜单数据,根据用户权限或角色动态渲染菜单项。核心思路是将菜单数据与组件分离,通过数据驱动视图。 数据准备与API交互 创建菜单数据模…

vue实现动态报表

vue实现动态报表

Vue 实现动态报表的方法 数据绑定与动态渲染 使用 Vue 的响应式数据特性,通过 v-for 动态渲染表格或图表。数据通常从 API 获取,存储在组件的 data 或 Vuex 状态中。例如:…

vue 实现动态表格

vue 实现动态表格

实现动态表格的基本思路 在Vue中实现动态表格通常涉及以下核心逻辑:数据驱动渲染、动态列与行处理、以及用户交互功能(如增删改查)。以下是具体实现方法: 基础动态表格实现 使用v-for指令循环渲染表…

vue实现动态刷新数据

vue实现动态刷新数据

Vue 实现动态刷新数据的方法 使用计算属性(Computed Properties) 计算属性会根据依赖的响应式数据自动更新,适合基于现有数据动态计算的场景。 <template>…