Интенсивное слайд-шоу с использованием z-index, php, xml и jquery / cycle.js - PullRequest
0 голосов
/ 14 февраля 2011

Итак, я работаю над этим проектом, и креативный директор бросил мяч в мою сторону.

Он создал с помощью flash прототип, который должен быть построен с использованием jQuery, XML (или PHP), извлекающего весь контент и изображения, а затем в тех же измерениях div переключать дополнительную информацию, которая также извлекается через XML.

Мне разрешено использовать JS в полной мере, что означает, что если я буду тянуть изображения с помощью JS, я дам им конкретное соглашение об именах. Без дополнительной информации:

http://joeylabs.com/sites/sgc/prototype/

Кстати, по какой-то причине эта страница сдвигает слайд-шоу до самого конца, поэтому для просмотра всего этого просто прокрутите вниз. :)

Так что я думаю :

  1. Извлечение изображений из папки через скрипт сканирования каталогов php или с помощью jquery, используя соглашение об именах изображений.
  2. Затем, используя Cycle.js, я бы создал переменную, которая содержит изображение внутри li до с помощью onBefore, и переменную, которая держит изображение внутри li после с onAfter, поместив их обоих в div соответственно с z- Индекс 1 меньше, чем текущий слайд. (Пока не знаю как это сделать)
  3. Текущий слайд имеет переход блайндов, и когда пользователь нажимает СЛЕДУЮЩИЙ, это триггер для 2 слайд-шоу, одного внизу и одного сверху.

Это все теория на данный момент, но не думаете ли вы, что было бы возможно запустить 2 цикла слайд-шоу, одно поверх другого с 1 триггером? У кого-нибудь есть мысли, советы по этому поводу?

Ответы [ 2 ]

1 голос
/ 04 июля 2011

да, я вложил каждый из своих img в два div и два div, чтобы обернуть вещи ...

<div id="before_window_wrapper">
  <div name="before_n_after_window">

    <div id="before_slide_wrapper">
       <div id="before_slide">
         <img src"my/image/directory/1.img"/>
       </div>
       <div id="slide_comment">
         <h3>person comment for this img goes here</h3>
       </div>
    </div>

    <div id="before_slide_wrapper">
      <div id="before_slide">
        <img src"my/image/directory/3.img"/>
      </div>
        <div id="slide_comment">
         <h3>person comment for this img goes here</h3>
       </div>
   </div>

  </div>
</div>

и

<div id="after_window_wrapper">
  <div name="before_n_after_window">

    <div id="after_slide_wrapper">
       <div id="after_slide">
         <img src"my/image/directory/2.img"/>
       </div>
       <div id="slide_comment">
         <h3>person comment for this img goes here</h3>
       </div>
    </div>

    <div id="after_slide_wrapper">
      <div id="after_slide">
        <img src"my/image/directory/4.img"/>
      </div>
       <div id="slide_comment">
         <h3>person comment for this img goes here</h3>
       </div>
    </div>

  </div>
</div>

дочерние элементы "before_n_after_window" - это циклы div:

$("#before_n_after_window").each(function(index){
  $(this).cycle();
});

Оболочки слайдов (before_slide_wrapper и after_slide_wrapper) находятся под полным контролем Cycle (). Однако любой вложенной в него вещи нет, поэтому вы можете разместить больше братьев и сестер для слайдов (before_slide и after_slide) - отсюда и "#slide_comment" div.

"before_n_after_window" находится только под частичным контролем за циклом () и использует ваш код CSS, который не конфликтует с его собственным. «#before_window_wrapper» и «#after_window_wrapper» находятся под вашим полным контролем (css-wise).

Теперь, когда у вас есть "#before_n_after_window" и его дочерние элементы, просто итерируйте их, назовите и укажите элементы управления для каждой пары:

var i = index;
var current_slide = $(this);

// hides the pause button
$('#pause_button_'+i).hide();
//checks index for odd or even
i = (i%=2) ? ((index+1)/2) : ((index/2)+1);

$(current_slide).cycle({
  fx:    'fade',
  pager:    '#nav_' + i,
  prev:     '#previous_button_' + i,
  next:     '#next_button_' + i,
});

// I want to only show the play or pause button at any given time
$(current_slide).cycle('pause');
$('#play_button_'+i).click(function(){
  $(current_slide).cycle('resume', true); 
  $('#pause_button_'+i).show();
  $('#play_button_'+i).hide();
});
$('#pause_button_'+i).click(function() { 
  $(current_slide).cycle('pause'); 
  $('#pause_button_'+i).hide();
  $('#play_button_'+i).show();
});

Вы должны следовать вышеизложенному соглашению об именах или любому другому, с которым вы можете принять решение. фактические элементы управления могут быть размещены где угодно, кроме как внутри окон - проблемы с ошибками.

Кстати, я установил эти пары на паузу сразу после их зацикливания, потому что я не хотел, чтобы несколько слайдов работали на странице. Я хотел, чтобы пользователь сам выбрал, какой из них будет цикл. Кроме того, я должен найти способ отключить любые другие циклы, которые могут работать. Однако:

if(better_solution){
  return please_post;
}
0 голосов
/ 14 февраля 2011

Я не думаю, что вы будете выполнять какую-либо очистку каталогов - откуда вы получите остальную информацию о каждом изображении (заголовок, подпись и т. Д.). Вам нужно будет поместить каждый раздел в базу данных со ссылкой на изображение, какой подраздел должен открываться, когда пользователь нажимает кнопку «узнать больше», название раздела, заголовок предварительного просмотра и т. Д.

Я бы предложил использовать вариант плагина Galleria: http://galleria.aino.se/

Для подстраниц (назначение кнопки «узнать больше») вы можете AJAX превратить его в абсолютное деление, которое вы тянете, чтобы охватить весь слайд-шоу. Это позволяет легко реализовать кнопку закрытия - она ​​просто удаляет абсолютный div все вместе.

...