Почему в моем коде есть такая страшная задержка. Я хочу, чтобы этот div скользил и выдвигался на основе размеров окна. Но каждый раз есть задержка. Это никогда не бывает такой же длины. Должен ли я использовать функцию тайм-аута? Или что-то не так с моим кодом?
<!DOCTYPE html>
<html>
<head><style type="text/css">div {
background-color: brown;
width: 100px;
height: 100px;
position: relative;
display: none;
left: -120px;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<title>HTML5, CSS3 and JavaScript demo</title>
</head>
<body>
<div style="display: block; left: 0px;" id="navg">Chocolate!</div>
<script>var navg = $("#navg");
var wind = $(window);
wind.load(function() {
if (wind.width() > 900) {
navg.show();
navg.animate({
left: "0px"
}, 1000);
}
});
wind.resize(function() {
if ((wind.width() < 900) && (navg.is(":visible"))) {
navg.animate({"left":"-120px"}, 1000, function() {
$(this).hide();
});
} else if ((wind.width() >= 900) && (navg.is(":hidden"))) {
navg.show(function() {
navg.animate({"left":"0px"}, 1000);
});
}
});
</script></body>
Вот ссылка на код в Liveweave: http://liveweave.com/HWpQUe Попробуйте изменить размер, чтобы лучше понять, что я имею в виду.
Что происходит, так это то, что у вас несколько анимаций, работающих друг над другом, и прекращение друг друга. Вероятно, вы хотите использовать api.jquery.com/finish перед началом каждой анимации, чтобы остановить любую предыдущую анимацию (ы).
1000
(три примера этого в вашем коде здесь) до200
или400
и посмотрите, что работает для вас.