当前位置:首页 > 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创建粒子系统动态背景:

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动态背景:

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元素作为动态背景:

js实现背景动态

<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项目中实现动态配置地址可以通过环境变量、API请求或配置文件等方式完成。以下是几种常见方法: 使用环境变量 创建.env文件存储基础URL,不同环境使用不同文件:…

vue实现微博发布动态

vue实现微博发布动态

Vue 实现微博发布动态功能 数据绑定与表单设计 使用 Vue 的 v-model 实现表单双向绑定,创建动态内容输入框和图片上传组件。示例代码: <template> <di…

vue动态路由实现

vue动态路由实现

Vue 动态路由实现方法 动态路由是 Vue Router 的核心功能之一,允许根据参数动态匹配路由。以下是几种常见实现方式: 路由参数动态匹配 在路由配置中使用冒号 : 定义动态参数: cons…

vue实现动态打印

vue实现动态打印

Vue 实现动态打印的方法 动态打印通常指在网页上实时显示或输出内容,可以通过多种方式实现。以下是几种常见的实现方法: 使用 v-model 绑定数据 在 Vue 中,可以利用 v-model 实…

vue实现动态排名变动

vue实现动态排名变动

Vue实现动态排名变动的方法 动态排名变动通常用于实时展示数据排序变化,如排行榜、比赛成绩等场景。以下是几种实现方式: 数据绑定与计算属性 利用Vue的响应式特性,通过计算属性自动更新排名: da…

vue实现动态加载html

vue实现动态加载html

Vue 实现动态加载 HTML 的方法 在 Vue 中动态加载 HTML 可以通过多种方式实现,以下是一些常见的方法: 使用 v-html 指令 Vue 提供了 v-html 指令用于动态渲染 HT…