javascript动画之圆形运动,环绕鼠标运动作小球

yizhihongxing

JavaScript动画之圆形运动

在JavaScript中,通过使用CSS3的transform属性或canvas绘图API,可以实现圆形运动效果。接下来,我们以transform属性为例进行详细讲解。

示例1:物体沿圆形路径运动

  1. 首先,需要准备一个容器和一个要运动的物体。将其设置为圆形,如下所示:
<div id="container">
  <div id="ball"></div>
</div>

<style>
#container {
  width: 500px;
  height: 500px;
  border: 1px solid #ccc;
  border-radius: 50%;
  position: relative;
}

#ball {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: orange;
  position: absolute;
  top: 0;
  left: 50%;
  margin-left: -25px;
}
</style>
  1. 然后,通过JavaScript代码来设置物体沿圆形路径运动的效果。
var container = document.getElementById('container');
var ball = document.getElementById('ball');

var radius = container.clientWidth / 2 - ball.clientWidth / 2; // 半径
var angle = 0; // 角度

setInterval(function() {
  var x = container.clientWidth / 2 + radius * Math.cos(angle);
  var y = container.clientHeight / 2 + radius * Math.sin(angle);

  ball.style.top = y - ball.clientHeight / 2 + 'px';
  ball.style.left = x - ball.clientWidth / 2 + 'px';

  angle += 0.01; // 每次增加的角度值,可根据实际情况调整
}, 16); // 每隔16毫秒执行一次
  1. 最后就可以看到物体沿圆形路径运动了。

示例2:环绕鼠标运动的小球

  1. 首先,准备一个容器和一个小球。
<div id="container2">
  <div id="ball2"></div>
</div>

<style>
#container2 {
  width: 500px;
  height: 500px;
  border: 1px solid #ccc;
  position: relative;
}

#ball2 {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: orange;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -25px;
  margin-left: -25px;
}
</style>
  1. 然后,通过JavaScript代码来设置小球环绕鼠标运动的效果。
var container2 = document.getElementById('container2');
var ball2 = document.getElementById('ball2');

container2.addEventListener('mousemove', function(ev) {
  var x = ev.clientX - container2.offsetLeft;
  var y = ev.clientY - container2.offsetTop;

  var left = x - ball2.clientWidth / 2;
  var top = y - ball2.clientHeight / 2;

  var r = Math.sqrt(Math.pow(container2.clientWidth / 2 - x, 2) + Math.pow(container2.clientHeight / 2 - y, 2)); // 小球到容器中心的距离
  var angle = Math.acos((x - container2.clientWidth / 2) / r);

  if (y > container2.clientHeight / 2) { // 鼠标在容器下半部分
    angle = Math.PI * 2 - angle;
  }

  ball2.style.left = left + r * Math.cos(angle) + 'px';
  ball2.style.top = top + r * Math.sin(angle) + 'px';
});
  1. 最后,运行代码,可以看到小球环绕鼠标运动的效果。

总结

通过以上两个示例,我们可以发现,实现圆形运动效果的核心代码是根据圆的参数方程计算物体的坐标,实现小球环绕鼠标运动的核心是根据三角函数计算物体的坐标。在实际开发中,可以根据具体场景选择使用哪种方式来实现圆形运动效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript动画之圆形运动,环绕鼠标运动作小球 - Python技术站

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

相关文章

  • Vue中this.$router和this.$route的区别及push()方法

    Vue中的this.$router和this.$route都是Vue Router提供的路由对象,它们的区别和作用如下: this.$router是Vue Router实例,用来操作路由的跳转、钩子函数等等; this.$route是当前活跃的路由对象,包含了当前路由的各种信息,如参数、路径、路由器地址等。 下面来详细讲解一下Vue中router和route…

    JavaScript 2023年6月11日
    00
  • js实现的在线调色板功能完整实例

    下面是“JS实现的在线调色板功能完整实例”的完整攻略: 1. 调色板功能介绍 调色板是一种图形界面控件,常用于用户界面设计中。它提供了一组可供选择的颜色,用户可以通过调整滑块或者输入数值等方式选择颜色。而JavaScript可以通过一些特定的API来实现这样的调色板功能。 2. HTML结构与CSS样式 为了实现调色板功能,首先需要构建一个HTML页面,然后…

    JavaScript 2023年6月10日
    00
  • js中let和var定义变量的区别

    当我们在 JavaScript 中定义变量时,有两种关键字可供使用:var 和 let。在这里,我将详细讲解两者之间的区别。 var vs. let var 和 let 都可用于声明 JavaScript 变量,但它们在声明变量时具有不同的行为。 1. var 使用 var 定义的变量具有函数作用域。这意味着,如果在函数内定义一个变量,它将仅在函数内部可用。…

    JavaScript 2023年6月10日
    00
  • ES6 迭代器与可迭代对象的实现

    ES6引入了迭代器和可迭代对象的概念,为 JavaScript 提供了更加便捷和可读性更高的迭代操作方式。 什么是迭代器? 迭代器是一种定义了标准接口的对象,该接口用于按照一定顺序访问集合中的元素。具体来说,迭代器需要实现一个next方法,当执行该方法时,会返回集合中的下一个元素;如果已经到达最后一个元素,则返回一个包含done属性为true的对象,否则返回…

    JavaScript 2023年5月27日
    00
  • javaScript实现支付10秒倒计时

    下面我将为您详细讲解“javaScript实现支付10秒倒计时”的完整攻略。 确定页面结构和样式:在html页面中添加一个倒计时元素,例如一个div,然后在css中为该div添加样式,例如指定字体、字号、颜色、高度、宽度等属性。 编写倒计时函数:使用JavaScript编写倒计时函数,可以使用setInterval方法运行每1秒,倒计时的初始值为10秒。在每…

    JavaScript 2023年6月11日
    00
  • 一个网站部署多个Google Analytics帐户

    下面我将为你详细讲解如何在一个网站上部署多个Google Analytics帐户。 1.背景介绍 Google Analytics是一款功能强大的网站分析工具,它可以帮助网站管理员了解访问者的行为、特征和兴趣,从而更好地优化网站的内容和功能。而有时候,一个网站需要针对不同的用户群体进行分析和优化,此时,我们就需要为该网站部署多个Google Analytic…

    JavaScript 2023年6月11日
    00
  • JavaScript 对象、函数和继承

    JavaScript 中的对象和函数都是重要的概念。对象是一组键值对的集合,可以包含函数,而函数是执行任务和返回值的代码块。继承是一种机制,它允许我们在一个对象上定义对象的属性和属性行为,并通过 “继承”,使一个对象能够访问另一个对象的属性和方法。 JavaScript 对象 JavaScript 中的对象是由花括号 {} 包裹的一组键值对。例如: let …

    JavaScript 2023年5月27日
    00
  • JavaScript关于某元素点击事件的监听和触发

    下面是关于JavaScript中某元素点击事件的监听和触发的完整攻略: 监听点击事件 在JavaScript中,可以通过addEventListener方法监听元素的点击事件,方法需要两个参数,第一个参数是事件名称,第二个参数是要触发的回调函数。例如: // 获取元素 const btn = document.getElementById(‘btn’); /…

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