Вот несколько сложная головоломка, мне бы понравилась какая-то обратная связь о том, как к ней подходят другие.
Этот сайт в основном является бесплатным региональным новостным блогом. Изображение внизу демонстрирует макет (игнорируйте сбой перекрытия даты). Он закодирован в PHP, jQuery и xajax.
Мой вопрос связан с динамической загрузкой контента. Как и при загрузке страницы, я назначаю стрелки URL-адресам предыдущих / следующих статей. Без проблем. URL-адреса являются дружественными, страница перезагружается в следующую статью, и я могу прокручивать их в течение всего дня.
Но … Я хотел бы превратить стрелки в слайдер (а не в href) со следующим поведением:
Щелчок правой стрелки будет …
Зачем? Слайдеры потрясающие, и я думаю, что это будет выглядеть профессионально. И это основной материал слайдера (например, этот слайдер scrollLeft jQuery ), за исключением того, что содержимое динамически загружается щелчком стрелки, что вызывает ряд вопросов:
Надеюсь, мой вопрос ясен … Любые предложения были бы очень признательны!
Вот решение, которое я придумал.
Если у кого-то есть идеи о том, как очистить его или сделать его более плотным, сообщите мне об этом!
Большое спасибо @Jamie за толкание в правильном направлении!
На мой взгляд, у вас есть два варианта:
Если это всего лишь несколько элементов / слайдов, я бы заполнил загрузку страницы. Если вы смотрите на множество слайдов (что вы можете ожидать в ежедневном блоге новостей), или если в каждом слайде будет много данных (например, изображения с высоким разрешением и т. Д.), Я бы пошел со вторым вариантом.
Второй вариант легко сделать. Все, что вам нужно, это три div (один для экранного слайда и два для фланговых слайдов, которые будут «заменять» экранный экран при нажатии любой стрелки). Я бы использовал что-то вроде этого:
<div class="container"> <div class="inner-container"> <div class="back"></div> <div class="content off_screen_left" id="1"></div> <div class="content on_screen" id="2"></div> <div class="content off_screen_right" id="3"></div> <div class="next"></div> </div> </div>
И необходимый CSS:
.container{width:200px;height:150px;overflow:hidden} .inner-container{width:600px;height:150px;margin-left:-200px} .content{float:left;width:200px;height:150px}
А что касается jQuery:
$(".next").live('click', function(){ var current_id=$(this).prev(".on_screen").attr("id"); // get current page ID $(".content").css("float","right"); // float all elements to the right $(".off_screen_right").animate({display:none;}); // make the furthest right disappear gradually $(".on_screen").attr("class","off_screen_right"); // make on_screen the new off_screen_right and add the correct ID attribute $(".off_screen_left").attr("class","content on_screen"); // make off_screen_left the new on_screen $(".container").prepend('<div class="content off_screen_left" id="'+current_id-1+'"></div>'); // add the new off_screen_left element and add the correct ID attribute $(".off_screen_left").load("load-content.php?page_id="+current_id-1); // populate the new off_screen_left element }); $(".back").live('click', function(){ var current_id=$(this).next(".on_screen").attr("id"); // get current page ID $(".content").css("float","left"); // float all elements to the left $(".off_screen_left").animate({display:none;}); // make the furthest left disappear gradually $(".on_screen").attr("class","off_screen_left"); // make on_screen the new off_screen_left and add the correct ID attribute $(".off_screen_right").attr("class","content on_screen"); // make off_screen_right the new on_screen $(".container").append('<div class="content off_screen_right" id="'+current_id+1+'"></div>'); // add the new off_screen_left element and add the correct ID attribute $(".off_screen_right").load("load-content.php?page_id="+current_id+1); // populate the new off_screen_left element });
Но это всего лишь один вариант. Вы можете использовать слайдер из коробки, но я предпочитаю настраивать код, чтобы я точно знал, что делаю.