jquery - 如何仅在半圈内制作动画

标签 jquery html css

我希望能够在半圆中设置动画,然后仅当我位于确切的 div 时才会触发动画,因此在其他部分查看时不会设置动画。圆路径已经在 CSS 中定义,我无法更改它,我可以把它放在圆弧上?所以有了这个参数,我认为 jquery 会是一个很好的方法,或者你怎么看?我是带路边动画的新手,所以我希望你能帮助我。下面是插图和我试过的代码。

enter image description here

function moveit() {
t += 0.05;

var r = 100;         // radius
var xcenter = 100;   // center X position
var ycenter = 100;   // center Y position

var newLeft = Math.floor(xcenter + (r * Math.cos(t)));
var newTop = Math.floor(ycenter + (r * Math.sin(t)));

$('#circgreen').animate({
    top: newTop,
    left: newLeft,
}, 1, function() {
     moveit();//
})

$(document).ready(function() {
  moveit();
})

最佳答案

嗯。我不认为我会尝试计算圆的弧度并使用 JavaScript 沿它设置动画。

由于外圈是在 CSS 中定义的,我将绿色覆盖圈定义为一个内部元素,其绝对位置是相对于外圈的。然后旋转外圈:

$('button').click(() => {
	$('#circle').toggleClass('rotated')
})
body {
	overflow: hidden; // just to make the example cleaner
}

#circle {
	border: 1px solid #999;
	border-radius: 200px;
	position: relative;
	height: 400px;
	width: 400px;
	transform: rotate(45deg);
	transition: transform 0.5s;
}

#circle.rotated {
	transform: rotate(135deg);
}

#circle::after {
	background: green;
	border-radius: 5px;
	content: '';
	height: 10px;
	position: absolute;
	top: 50%;
	left: 10px;
	transform: translateY(-50%);
	width: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click to Rotate</button>
<div id="circle"></div>

关于jquery - 如何仅在半圈内制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45596354/

相关文章:

javascript - Jquery 我们如何将自定义属性添加到 <img>

html - 带有 id 和 class 的 CSS 不显示类样式

css - 如何将 bind-attr 类附加到 Ember 中的初始类?

javascript - 为什么我的导航按钮或按钮文本不会移到中心?

jquery - 输入前的 Zend 表单复选框标签

html - 如何根据下拉列表中的选定数字生成表单输入字段(选择)

javascript - 最大高度和 nanoscroller + AngularJS NgRepeat

html - 如何在不改变其他元素大小的情况下将隐藏元素添加到 flex 父元素?

javascript - shift bootstrap carousel 标题中心向右

javascript - html 中的 JScript 未运行或未被调用