javascript - 带有来自服务器的动态数据的轮盘赌动画

标签 javascript jquery css

我正在研究一个分两个阶段旋转的轮盘

1) 当用户点击旋转按钮时,它会无限旋转,直到数据来自服务器。

2) 当数据到达时,它只是按照从服务器获取的 Angular 旋转。

我们正在从服务器获取数据,因为它包含一些我们不想发送给客户端的敏感信息。

我面临的问题是从 1) 到 2) 的过渡不是无缝的。微调器意外停止随机时间,然后启动 2)(有限旋转)。

这是我的 js fiddle,它是场景 https://jsfiddle.net/ej2c5k7z/6/ 的最简单复制

html:

<div id="spinning"  style="background-color: red; display: inline-block">
  abcdefghijkl
</div>

JavaScript:

let element = $("#spinning");

// Simulate random interval for data being fetched from server
let randomIntervalSeconds = Math.random()*10;
console.log(randomIntervalSeconds);
// TODO: keep rotating the element for randomIntervalSeconds
// I used below code along with setInterval with 1001 ms interval
let intervalKey = setInterval(function(){
    element.css({"transform": "rotate(" + 360 + "deg)", "transition-duration": 1 + "s"});
},1001)


setTimeout(function(){
    // Simulate data arrived callback.
  clearInterval(intervalKey);
    element.css({"transform": "rotate(" + (360+48) + "deg)", "transition-duration": 1 + "s"});

}, randomIntervalSeconds*1000)

我只是想知道是否有可能让微调器(或任何 div)无限旋转直到数据到达并无缝过渡到有限旋转?

最佳答案

这可能不是您正在寻找的东西,但也许它可以激励您超越球门线。我试着给你的 div 一个类,让它总是旋转,然后在超时到期后,我删除旋转动画并将 div 旋转必要的度数。似乎它“卡入”到位的位置有点太多,我(还没有?)想出如何解决这个问题,但我明天会再尝试一些。

let element = $("#spinning");

// Simulate random interval for data being fetched from server
let randomIntervalSeconds = Math.random()*10;
console.log(randomIntervalSeconds);
// TODO: keep rotating the element for randomIntervalSeconds
// I used below code along with setInterval with 1001 ms interval



setTimeout(function(){
    // Simulate data arrived callback.
		element.removeClass("go");
    element.css({"transform": "rotateZ(" + (360+48) + "deg)", "transition-duration": 1.5 + "s"});

}, randomIntervalSeconds*1000)
#spinning {
	background-color: red;
	display: inline-block;
	margin: 50px;
}
.go {
	animation: spin 1s infinite linear;
}
@keyframes spin {
	from { transform: rotateZ(0deg) }
	to { transform: rotateZ(360deg) }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="spinning" class="go">
  abcdefghijkl
</div>

关于javascript - 带有来自服务器的动态数据的轮盘赌动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53573008/

相关文章:

javascript - jquery背景颜色在滚动时淡入

javascript - 使用 REST 端点检索实体的自定义实体的 ODataSetName

javascript - 如何在新打开的 chrome 选项卡上执行我的内容脚本?

javascript - 指定内联事件处理程序是否会调用 eval()?

javascript - 页面清除 - JQuery Mobile

JQuery slider handle 位置()不起作用

html - 为什么我的常规导航栏会覆盖标题而折叠的导航栏不会? ( Bootstrap/整页)

html - 无法链接样式表

javascript - 将页脚贴在底部(显示时)

javascript - 在另一个右边有一个 DIV