如何使jQuery动画不那么不稳定(视频示例)
How to make jQuery animation less jerky (video example)
我是jQuery和Javascript的初学者。感谢您的阅读!
https://www.youtube.com/watch?v=s-E_VFbRruc这是一个演示我的代码动画到目前为止的视频。正如你所看到的,在我将鼠标移到一个像素和包含该像素的矩形显示之间存在滞后时间。
理想情况下,我希望动画看起来像这样:https://www.youtube.com/watch?v=rqU12MHzO-I,这次是我使用maphilight插件制作的一个例子。但是我不能在我的代码中使用这个插件,因为我想一次显示多个矩形图层。
我用jQuery .show()方法显示矩形(div),但是当我尝试。show("fast")时,div随机闪烁。
你有什么建议我应该试试吗?
相关代码为:
(我的代码使用了一个名为"demo"的地图,其中添加了许多区域元素(矩形)。在这段代码中,我将每个区域元素转换为CSSdiv,以便能够显示和隐藏它们
if( $('#demo').length >0 ) {
var hoveredElements = [];
var elementPositions = [];
$('#demo area').each(function() {
var offset = this.coords;
var coordarray = offset.split(",");
var l = coordarray[0];
var t = coordarray[1];
var r = coordarray[2];
var b = coordarray[3];
var ident = this.id;
var w = r - l;
var h = b - t;
var elementDiv = $('<div class="area"></div>')
.css({position: 'absolute', left: l + 'px', top: t + 'px', border: 'solid', borderColor: 'green'}).
width(w).height(h);
$("body").append(elementDiv);
elementDiv.hide();
elementPositions.push({
element: elementDiv,
top: t,
bottom: b,
left: l,
right: r,
id: ident,
});
}); //end of demo area
$("body").mousemove(function(e) {
hoveredElements.forEach( function(item) {
item.overlay.hide();
item.element.hide();
});
hoveredElements = [];
var xPosition = e.pageX;
var yPosition = e.pageY;
for (var ie = 0; ie < elementPositions.length; ie++) {
var id = elementPositions[ie].id;
if (xPosition >= elementPositions[ie].left &&
xPosition <= elementPositions[ie].right &&
yPosition >= elementPositions[ie].top &&
yPosition <= elementPositions[ie].bottom) {
// The mouse is within the element's boundaries
hoveredElements.push({
overlay: $('#overlay' + id),
element: elementPositions[ie].element,
});
}
}
hoveredElements.forEach( function(item) {
item.overlay.show();
item.element.show();
});
});
};
我倾向于尽可能地使用CSS来隐藏和显示内容。例如,css悬停选择器在这里可能很有用。它是相当即时的,并且不需要等待javascript逻辑的开销。
请注意,在这个代码片段中,当您将鼠标移到结果的左上角时,这些块是不可见的。这似乎更符合你的要求。当悬停不再被应用时,它会恢复原来的状态。通过将单个可重用类应用于div, css可以在必要时单独应用于每个div(并且仅应用于该div)。在这种情况下,"必要"在那个div的悬停位置。
div {
position: aboslute;
top:0px;
left: 0px;
height: 30px;
width: 60px;
background: white;
border: none;
display: block;
}
.rect:hover {
background: blue;
border: 1px solid black;
}
<div class='rect' ></div>
<div class='rect' ></div>
<div class='rect' ></div>
相关文章:
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 为什么视频不显示在有角度的灯箱中?图像有效,但视频无效;t
- Javascript”;结束”;函数工作不稳定
- nodeJS服务器性能缓慢且不稳定
- Javascript动画不稳定
- jQuery类选择器工作不稳定
- 如何检查视频是否稳定
- 视差'背景图像/位置/附件'jQuery的动画很不稳定
- getusermedia视频不是在three.js平面上绘制的
- 加载文件时xmlhttp不稳定,如何修复
- ckEditor,AngularJS&Bootstrap 3 Modal-insertText()的行为不稳定
- 如何捕捉不稳定的互联网连接
- Javascript和/或点击因过度拥挤而变得不稳定
- 不稳定的内部 HTML 行为.文本消失
- 修改其<源>元素的 src 属性后,视频不会更新
- 点击启动的视频不会在 Firefox 中启动,但在 Chrome 中会启动
- RTC 数据通道的行为不稳定
- 分页和过滤在 AngularJS 中不稳定
- 在Safari中,从静态图像到视频的CSS转换很不稳定
- 如何使jQuery动画不那么不稳定(视频示例)