首页 > 其他分享 >使用HTML5制作一个可以旋转的太极图案交互特效

使用HTML5制作一个可以旋转的太极图案交互特效

时间:2024-12-22 09:31:52浏览次数:4  
标签:特效 canvas const ctx radius HTML5 PI 太极 Math

要制作一个可以旋转的太极图案交互特效,你可以使用HTML5的<canvas>元素结合JavaScript。以下是一个简单的示例,展示了如何实现这个效果:

  1. HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>旋转太极图案</title>
    <style>
        canvas {
            border: 1px solid black;
            display: block;
            margin: 50px auto;
        }
    </style>
</head>
<body>
    <canvas id="taijiCanvas" width="400" height="400"></canvas>
    <script src="script.js"></script>
</body>
</html>
  1. JavaScript (script.js):
const canvas = document.getElementById('taijiCanvas');
const ctx = canvas.getContext('2d');
let rotation = 0;

function drawTaiji() {
    const centerX = canvas.width / 2;
    const centerY = canvas.height / 2;
    const radius = Math.min(centerX, centerY) - 10;

    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(centerX, centerY);
    ctx.rotate(rotation * Math.PI / 180); // 旋转图案

    // 绘制太极的上半部分(白色)
    ctx.beginPath();
    ctx.arc(0, 0, radius, Math.PI, 2 * Math.PI);
    ctx.fillStyle = 'white';
    ctx.fill();

    // 绘制太极的下半部分(黑色)以及小圆点
    ctx.beginPath();
    ctx.arc(0, 0, radius, 0, Math.PI);
    ctx.fillStyle = 'black';
    ctx.fill();

    ctx.beginPath();
    ctx.arc(0, -radius / 2, radius / 4, 0, 2 * Math.PI);
    ctx.fillStyle = 'white';
    ctx.fill();

    ctx.beginPath();
    ctx.arc(0, radius / 2, radius / 4, 0, 2 * Math.PI);
    ctx.fillStyle = 'black';
    ctx.fill();

    ctx.restore();
}

// 初始绘制
drawTaiji();

// 添加鼠标交互来旋转太极图案
canvas.addEventListener('mousemove', (event) => {
    const rect = canvas.getBoundingClientRect();
    const mouseX = event.clientX - rect.left;
    const mouseY = event.clientY - rect.top;
    const centerX = canvas.width / 2;
    const centerY = canvas.height / 2;
    const dx = mouseX - centerX;
    const dy = mouseY - centerY;
    rotation += Math.atan2(dy, dx) * (180 / Math.PI); // 根据鼠标位置计算旋转角度
    drawTaiji(); // 重新绘制图案
});

这个示例中,我们首先定义了一个HTML结构,其中包含一个<canvas>元素。然后,在JavaScript中,我们定义了一个drawTaiji函数来绘制太极图案,并根据rotation变量来旋转它。最后,我们添加了一个mousemove事件监听器来根据鼠标位置更新rotation变量,并重新绘制图案。

标签:特效,canvas,const,ctx,radius,HTML5,PI,太极,Math
From: https://www.cnblogs.com/ai888/p/18621754

相关文章

  • 使用CSS3模拟太阳、地球、月球旋转的特效
    要使用CSS3模拟太阳、地球和月球的旋转,你可以利用CSS3的动画和转换功能。以下是一个简单的示例,展示了如何使用HTML和CSS来模拟这个系统。HTML<divclass="solar-system"><divclass="sun"></div><divclass="earth-orbit"><divclass="earth&quo......
  • html5制作仪器圆表盘转动动画效果
    在HTML5中,你可以使用CSS3动画和JavaScript来制作一个仪器圆表盘的转动动画效果。以下是一个简单的例子,展示了如何创建一个基本的圆表盘,并使用CSS动画使其转动。HTML<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content=&qu......
  • 使用HTML5制作一个螺旋的动画特效
    制作一个螺旋动画特效可以通过多种方式来实现,这里我将为你提供一个基于HTML5<canvas>元素和JavaScript的简单示例。以下是一个简单的螺旋动画特效的示例代码:<!DOCTYPEhtml><html><head><title>螺旋动画特效</title><style>body{margin:0;}......
  • 如何使用HTML5打造本地桌面应用?
    HTML5本身并不直接支持创建本地桌面应用,但你可以结合一些其他技术,如Electron、NW.js(原名node-webkit)或Tauri,来将你的HTML5、CSS和JavaScript代码打包成一个本地桌面应用。以下是一个使用Electron的简单步骤:1.安装Node.js和npm首先,你需要在你的计算机上安装Node.j......
  • 【Unity粒子特效分享-卡通魔法特效】
    卡通魔法特效前言回顾效果图前言回顾可以点击传送门预览。传送门:【Unity粒子特效分享-宇宙星系】.传送门:【Unity粒子特效分享-魔法粒子特效超炫大招】.传送门:【Unity粒子特效分享-刀光特效】.传送门:【Unity粒子特效分享-技能特效】.传送门:【Unity粒......
  • HTML5 tooltips工具提示jquery插件
    tooltip.js是一款HTML5tooltips工具提示jquery插件。tooltip.js可以通过js或html5data属性来实例化一个tooltip。在线预览  下载 它的特点还有:可以自定义tooltip动画。内置暗色和亮色两种主题。可以自定义文字和阴影的颜色等属性。允许动态的改变tooltip的内容。......
  • [HTML/Web] HTML5之`<Video>`元素
    概述:video元素核心属性:playbackRate/播放速率在HTML5中,<video>元素提供了一个playbackRate属性,可以用来设置视频的播放速度。这个属性允许你设置视频的倍速播放,比如正常速度、慢速或快速。以下是如何设置<video>元素的倍速播放:html<videoid="myVideo"widt......
  • 写一个鼠标经过头像时,头像旋转180度并放大2位,离开时恢复原样的特效
    为了实现这个效果,你可以使用HTML、CSS和JavaScript。下面是一个简单的示例,展示了如何使用这些技术来创建一个鼠标经过头像时旋转180度并放大2倍,离开时恢复原样的特效。HTML<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"conte......
  • 实现一个动态的星空特效
    要实现一个动态的星空特效,你可以使用HTML的<canvas>元素和JavaScript。下面是一个简单的示例,展示如何创建一个动态的星空背景:HTML:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="widt......
  • 在HTML5允许在元素名中使用混合大小写字母吗?
    在HTML5中,元素名是不区分大小写的,但是惯例是使用全部小写字母来编写HTML元素。虽然浏览器可以解析混合大小写的元素名,但是使用全部小写是更标准、更易于阅读和维护的做法。例如,<div>和<DIV>在HTML5中被视为相同的元素,但是按照惯例,我们会使用<div>。此外,虽然HTML5不区分大小......