JavaScript实现环绕鼠标旋转效果

JavaScript实现环绕鼠标旋转效果的过程可以分为以下几个步骤:

  1. 确定旋转的中心点
  2. 监听鼠标移动事件
  3. 计算鼠标位置和中心点的夹角
  4. 将计算出来的夹角应用到旋转的元素上,使其旋转

以下是两个示例说明:

示例1:使用CSS3 transform属性实现环绕鼠标旋转

HTML结构:

<div class="wrap">
  <div class="box"></div>
</div>

CSS代码:

.wrap {
  width: 300px;
  height: 300px;
  position: relative;
}

.box {
  width: 50px;
  height: 50px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: red;
  border-radius: 50%;
  transition: transform 0.3s ease-out;
}

JavaScript代码:

var wrap = document.querySelector('.wrap');
var box = document.querySelector('.box');

wrap.addEventListener('mousemove', function(e) {
  var mouseX = e.clientX;
  var mouseY = e.clientY;
  var centerX = wrap.offsetLeft + wrap.offsetWidth / 2;
  var centerY = wrap.offsetTop + wrap.offsetHeight / 2;
  var angle = Math.atan2(mouseY - centerY, mouseX - centerX) * 180 / Math.PI;
  box.style.transform = 'translate(-50%, -50%) rotate(' + angle + 'deg)';
});

示例2:使用canvas绘制图形实现环绕鼠标旋转

HTML结构:

<canvas id="canvas"></canvas>

JavaScript代码:

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var centerX = canvas.width / 2;
var centerY = canvas.height / 2;
var radius = 50;

canvas.addEventListener('mousemove', function(e) {
  var mouseX = e.clientX;
  var mouseY = e.clientY;
  var angle = Math.atan2(mouseY - centerY, mouseX - centerX);
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.beginPath();
  ctx.arc(centerX, centerY, radius, angle - Math.PI / 2, angle + Math.PI / 2);
  ctx.lineTo(centerX, centerY);
  ctx.fillStyle = 'red';
  ctx.fill();
});

在这个示例中,我们使用canvas绘制了一个半圆,并且将鼠标指向的位置和canvas中心点的夹角应用到了绘制图形的角度上,以达到环绕鼠标旋转的效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现环绕鼠标旋转效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 详解JS对象封装的常用方式

    关于JS对象封装的常用方式,我可以提供以下完整攻略。 一、什么是对象封装 对象封装是一种将数据和相应的方法捆绑在一起的面向对象编程技术,以实现数据封装和信息隐藏的目的,有助于提高代码的可读性、可维护性、可扩展性和代码复用性。 在JavaScript中,对象封装可以通过创建对象或构造函数等方式来实现。常用编写对象封装的方式有:对象字面量、构造函数、原型和ES6…

    JavaScript 2023年5月27日
    00
  • JS动态创建元素的两种方法

    我来为您详细讲解“JS动态创建元素的两种方法”的完整攻略。 1. 使用createElement方法创建元素 使用document.createElement(tagName)方法可以通过JS动态创建一个新的元素节点。其中,tagName参数表示要创建的元素的标签名。 示例一:创建一个<p>元素并添加到页面中 // 创建一个 <p> …

    JavaScript 2023年6月10日
    00
  • WebStorm 2017.3最新汉化激活破解及安装教程(附汉化包+原版下载)

    WebStorm 2017.3最新汉化激活破解及安装教程 下载WebStorm 2017.3 首先,到官网下载WebStorm 2017.3,推荐下载Windows版本。下载后双击WebStorm-*.exe开始安装。 安装WebStorm 2017.3 按照提示进行安装,如果需要更改安装路径,可以点击“Custom”按钮进行自定义安装路径。 汉化WebSt…

    JavaScript 2023年6月1日
    00
  • JavaScript 学习初步 入门教程

    下面给出一份“JavaScript 学习初步 入门教程”的完整攻略。 JavaScript 学习初步 入门教程 1. JavaScript 是什么? JavaScript 是一种轻量级的脚本语言,可以在网页上实现动态效果,增强用户体验。 2. 学习 JavaScript 的基本知识 (1) HTML、CSS 和 JavaScript 的关系 HTML 用于页…

    JavaScript 2023年5月27日
    00
  • html页面展示json数据并格式化的方法

    展示 JSON 数据并格式化,通常有以下两种方法: 方法一:通过 JavaScript 进行格式化 通过 JavaScript 获取到 JSON 数据之后,可以使用 JSON 的 stringify 方法进行格式化,再将格式化后的结果插入到 HTML 页面中即可。 示例代码: <!DOCTYPE html> <html> <he…

    JavaScript 2023年5月27日
    00
  • JavaScript中运算符规则和隐式类型转换示例详解

    JavaScript中运算符规则和隐式类型转换示例详解 运算符规则 JavaScript中的运算符有自己的一些规则和优先级,如果不了解这些规则,可能会导致不符合预期的结果。以下是几个常用的运算符: 加法 +:用于数字相加或字符串拼接。 js console.log(5 + 7); // 12 console.log(‘Hello’ + ‘ ‘ + ‘Worl…

    JavaScript 2023年5月28日
    00
  • 在js文件中引入(调用)另一个js文件的三种方法

    在 JavaScript 中引入(调用)其他 JavaScript 文件的方式主要有以下三种: 1. 使用<script>标签引入(调用)其他 JavaScript 文件 使用<script>标签可以在 HTML 文件中引入(调用)其他 JavaScript 文件,该文件可以被浏览器直接加载。 <script>标签通常放在…

    JavaScript 2023年5月27日
    00
  • JavaScript实现弹出模态窗体并接受传值的方法

    下面是 JavaScript 实现弹出模态窗体并接受传值的方法的攻略: 原理分析 在 JavaScript 中,我们可以通过调用 window.open 方法来打开一个新窗口,也可以通过调用 window.showModalDialog 方法来打开模态窗口。其中,模态窗口是一种类似于对话框的窗口方式,可以禁止用户在不关闭窗口的情况下操作父窗口。 在模态窗口中…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部