我是jQuery和Javascript的初學者。感謝您的閱讀!如何讓jQuery動畫更少生成(視頻示例)
https://www.youtube.com/watch?v=s-E_VFbRruc這是一段視頻,展示了我的代碼動畫到目前爲止。正如你所看到的,當我將鼠標放在一個像素上,並且當包含該像素的矩形顯示時,會有滯後時間。
理想情況下,我希望動畫看起來像這樣:https://www.youtube.com/watch?v=rqU12MHzO-I,這次是我使用maphilight插件製作的一個示例。但是我不能在我的代碼中使用這個插件,因爲我想一次顯示多層矩形。
我用jQuery .show()方法顯示矩形(div),但是當我嘗試.show(「快速」)時,div隨機閃爍。
你對我應該試試的建議有什麼建議嗎?
相關的代碼是:
(我的代碼使用一個名爲「演示」與許多區域要素(矩形圖)追加到它在這段代碼我每個區域元素轉換爲CSS DIV所以我。能夠顯示和隱藏它們)
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();
});
});
};
顯示一些代碼。 – powerbuoy
我編輯過這個問題,其中包含一些代碼 – FSS
'.show(「fast」)'使元素在動畫中展開爲其全尺寸。因此,當它將自身設置爲'0'高度時,您不會再將其懸停,因此它會直接恢復其全部大小,並且您將[再次,一次又一次地將其懸停](https:// www.youtube.com/watch?v=9VDvgL58h_Y&feature=youtu.be&t=4m28s)所以它閃爍。但是,代碼將幫助我們看到我們能做些什麼。 – blex