Постепенная подгрузка изображений
Всем привет!
Нужна помощь. я новичок в javascript и jquery Есть скрипт PHP, который берет из базы информацию и URL до изображений, а также слайдер на CSS + javascript(jquery) меня все устраивает, единственное хотелось бы сделать так, чтобы при прокрутке (нажатии на картинку-курсор) изображения подгружались постепенно, а не все сразу... хочется сократить трафик как это можно реализовать? CSS: Код:
<style>Код:
<div id="wrapper-sl">posts это тоже HTML, но генериться в PHP posts: Код:
<div class="panel" id="panel_{rank}">
$(function() {
var totalPanels = $(".scrollContainer").children().size();
var movingStep = 1;
var movingDistance = movingStep * 195;
var $panels = $('#slider .scrollContainer > div');
var $container = $('#slider .scrollContainer');
$panels.css({'float' : 'left','position' : 'relative'});
$("#slider").data("currentlyMoving", false);
$container
.css('width', ($panels[0].offsetWidth * $panels.length) + 100 )
.css('left', "0px");
var scroll = $('#slider .scroll').css('overflow', 'hidden');
//direction true = right, false = left
function change(direction) {
//if not at the first or last panel
if((direction && !(curPanel < totalPanels - 3)) || (!direction && (curPanel <= 1))) { return false; }
//if not currently moving
if (($("#slider").data("currentlyMoving") == false)) {
$("#slider").data("currentlyMoving", true);
var next = direction ? curPanel + 1 : curPanel - 1;
var leftValue = $(".scrollContainer").css("left");
// alert (leftValue);
var movement = direction ? parseFloat(leftValue, 10) - movingDistance : parseFloat(leftValue, 10) + movingDistance;
$(".scrollContainer")
.stop()
.animate({
"left": movement
}, function() {
$("#slider").data("currentlyMoving", false);
});
curPanel = next;
//remove all previous bound functions
$("#panel_"+(curPanel+1)).unbind();
//go forward
$("#panel_"+(curPanel+1)).click(function(){ change(true); });
//remove all previous bound functions
$("#panel_"+(curPanel-1)).unbind();
//go back
$("#panel_"+(curPanel-1)).click(function(){ change(false); });
//remove all previous bound functions
$("#panel_"+curPanel).unbind();
}
}
// Set up "Current" panel and next and prev
var curPanel = 1;
//$("#panel_"+(curPanel+1)).click(function(){ change(true); });
//$("#panel_"+(curPanel-1)).click(function(){ change(false); });
//when the left/right arrows are clicked
$(".right").click(function(){ change(true); });
$(".left").click(function(){
change(false);
});
//autoscroll
//setInterval("$('.right').click()", 2000);
});
|
Приблизительно так
Нужно дописать метод change 1) в переменной next как я понимаю будет панель которую мы сейчас покажем. Соответственно весь код пишем после того как переменная определена. 2) Нужно выяснить есть ли в $("#panel_"+next).html() содержимое 3) если содержимое отсутствует то создать содержимое. $("#panel_"+next).html("<img src='"+$("#panel_"+next).attr("src") +"'>"); или загрузить откудонибудь $("#panel_"+next).load($("#panel_"+next).attr("src ")); ссылка на содержимое как понимаешь будет хранится в атрибуте src у #panel что касается php В php коде как понимаешь все создаваемые #panel должны быть пустыми, кроме первого. Незабудь атрибут srс передать только. Впринципе может быть пустой и первая, но тогда при инициализации скрипта заполни содержимое 1й панели сам через метод load или череp html, как в твоём случае лучше я незнаю. очень советую вышеописанное реализовать самостоятельно. Level2 (не очень надо) Для экономии ресурсов, вмеcто проверки html(), круто завести и проверять тригер в data. Но чуть сложнее. Ведь его надо не только проверять но и устанавливать. Level 3. (вообще ненадо) Слайдер будет гибче а php проще, если вместо обращения по #panel_"+curPanel, обращаться по $("#panel")[curPanel]. то есть сложный id вида panel_1/panel_2 - нам будет уже не нужен. |
Мегареспект тебе
Спасибо |
| Часовой пояс GMT +3, время: 04:28. |