Плывущий фон
Пожалуйста, подскажите как менее ресурсозатратно сделать плывущий фон на странице? Пробывал тремя разными способами:
1) с помощью плагина Background-Position. 2) с помщью вот такого скрипта:
$(function(){
// ***
// Scrolling background
// ***
var backgroundheight = 4000;
// calculate which pixel row to start graphic from based on how far through the day we are
var offset = backgroundheight / 100;
// graphic starts at approx 6am, so adjust offset by 1/4
var offset = offset - (backgroundheight / 4);
function scrollbackground() {
// decrease the offset by 1, or if its less than 1 increase it by the background height minus 1
offset = (offset < 1) ? offset + (backgroundheight - 1) : offset - 1;
// apply the background position
$('body').css("background-position", "50% " + offset + "px");
// call self to continue animation
setTimeout(function() {
scrollbackground();
}, 1
);
}
// Start the animation
scrollbackground();
});
3) с помощью вот ткого:
var current = 0; // Текущая строка пикселей
function scrollBg(){
//Переходим к следующей строке пикселей
current -= 1;
//Если конец изображения, то переходим снова вверх
if (current == -4000){
current = 0;
}
//Устанавливаем CSS заголовка
$('body').css("background-position","0 "+current+"px");
}
//Вызываем прокручивающую функцию повторно
var init = setInterval("scrollBg()", 0);
Бекфон стоит на боди. Сам рисунок фона весит 140кб. Во всех трех случаях скрипт полностью убивает одно ядро процессора. В фф так вообще тормозит жутко. Пробывал ставить фон на слой а не на боди и пробывал ставить рисунок полегче (60кб), результат всегда один и тот же - проц грузится до предела. Посоветуйте, что делать? Уж очень нужен эффект плывущего фона. |
А принципиально на javascript?
Если я Вас правильно понял.... Воможно HTML поможет? - например тег - <marquee>Демонстрация "Плывущего" или "Прокручивающегося" рисунка</marquee> + параметри |
Цитата:
Цитата:
выставьте таймаут побольше PS http://javascript.ru/tutorial/object...ord#apply-call |
Цитата:
Цитата:
|
не ту ссылку кинул
http://javascript.ru/blog/Andrej-Par...cii-JavaScript |
Цитата:
|
Вот как я вижу ето - возможно я вновь не прав
<BODY>
<body background="pic.jpg">
<script language="JavaScript">
<!-- Begin
var backgroundOffset = 0;
var bgObject = eval('document.body');
function scrollBG(maxSize) {
backgroundOffset = backgroundOffset + 1;
if (backgroundOffset > maxSize) backgroundOffset = 0;
bgObject.style.backgroundPosition = "0 " + backgroundOffset;
}
var ScrollTimer = window.setInterval("scrollBG(307)", 64);
// End -->
</script>
</BODY>
|
плывут по небу облака ....)))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
body{
background-image:url('http://www.the-best-site.ru/images/bg027.gif');
}
</style>
<script language="JavaScript" type="text/javascript">
window.setInterval(function () {
if (!this.a || this.a < 0) this.a = 200;
else this.a--;
document.body.style.backgroundPosition = this.a + "px 100%"
}, 50);
</script>
</head>
<body></body>
</html>
|
Всем большое спасибо за помощь. Остановился на вот этом варианте:
var current = 0; // Текущая строка пикселей
function scrollBg(){
//Переходим к следующей строке пикселей
current -= 1;
//Если конец изображения, то переходим снова вверх
if (current == -2000){
current = 0;
}
//Устанавливаем CSS заголовка
$('body').css("background-position","0 "+current+"px");
}
//Вызываем прокручивающую функцию повторно
var init = setInterval("scrollBg()", 60);
Тесты показали, что это самый оптимальный вариант. Нагрузка на проц максимум 25%. Все остальные варианты перепробывал с различными параметрами и все они проиграли данному. Картинка плывет более-менее плавно и не тормазит. Еще раз всем спасибо! |
| Часовой пояс GMT +3, время: 00:19. |