Постепенная подгрузка изображений
Всем привет!
Нужна помощь. я новичок в 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, время: 13:56. |