これまでに質問されているので、コードを実行しています。JS/Jquery divのランダムポジション
問題は、スクリプトが凍っていると思われるいくつかの奇妙なビューポートサイズが原因です。 あなたができることは何もありませんが、タブを殺す。
私は凍ったループを殺すようなスクリプトを作成しようとしましたが、仕事が終わったようではありません。
誰も私に何が間違っていると言うことができますか?または、私は凍結の原因となるスクリプトに一般的なエラーを表示しますか?コードが実行されているサイトザッツ
JSコードはeithereあります: http://unkn0wn3d.com/css/pos.js
かここに:
var pos = function(){
var containerW = $("article").width();
var containerH = $("article").height();
var langH = parseInt($(".languages").position().top + $(".languages").height());
var langW = parseInt($(".languages").position().left + $(".languages").width());
var creditW = parseInt($(".credit").position().left - $(".link:first").width() + 15);
var positions = [];
var froze = false;
setTimeout(function(){froze=true;}, 2000)
$('.link').each(function() {
var coords = {
w: $(this).outerWidth(true)+5,
h: $(this).outerHeight(true)+5
};
var success = false;
while (!success)
{
coords.x = parseInt(Math.random() * (containerW-coords.w));
coords.y = parseInt(Math.random() * (containerH-coords.h));
var success = true;
$.each(positions, function(){
if (froze){return false;}
if (
(coords.x <= langW &&
coords.y <= langH) ||
(coords.x >= creditW &&
coords.y <= langH) ||
(coords.x <= (this.x + this.w) &&
(coords.x + coords.w) >= this.x &&
coords.y <= (this.y + this.h) &&
(coords.y + coords.h) >= this.y)
)
{
success = false;
}
});
}
positions.push(coords);
$(this).css({
top: coords.y + 'px',
left: coords.x + 'px',
display: 'block'
});
})};
var waitForFinalEvent = (function() {
var timers = {};
return function (callback, ms, uniqueId) {
if (!uniqueId) {
uniqueId = "Don't call this twice without a uniqueId";
}
if (timers[uniqueId]) {
clearTimeout (timers[uniqueId]);
}
timers[uniqueId] = setTimeout(callback, ms);
};
})();
$(document).ready(
pos()
);
$(window).resize(function() {
waitForFinalEvent(function(){pos();}, 500, "resize");
});
これは素晴らしいことです。ポストのサイズはvminによって制御され、肖像画のデバイスでは巨大なポストが得られないことを確認します。薄くて背の高いビューポートを作成すると、ポストサイズが大きくならないことがわかります。 – Unkn0wn