css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
3 Апр
News Slider – это небольшой, но интересный плагин к JavaScript-библиотеке jQuery, который позволяет управлять отображением большого количества новостей на сайте при ограниченном пространстве для их демонстрации.
Небольшой пример, как всегда….
Небольшие некорректности в IE объясняются тем, что пример мне приходится демонстрировать во фрейме, ограниченном по ширине. Если Вы воспроизведете пример у себя, он будет корректно отображаться во всех браузерах. Вы можете скачать исходный код примера и воспроизвести этот пример на своем сайте.
Нам потребуется подключить в раздел HEAD страницы только два файла: библиотеку jQuery jquery-1.2.3.js и файл плагина jquery.accessible-news-slider.js
<script type="text/javascript" src="js/jquery-1.2.1.js"></script> <script type="text/javascript" src="js/jquery.accessible-news-slider.js"></script>
JavaScript-код этого плагина предъявляет определенные требования к организации HTML-кода новостей и их стилевого оформления, поэтому эти моменты разберем довольно подробно и начнем с HTML-кода.
<div class="item fl"> <a href="/"><img src="img.gif" alt="" class="fl" /></a> <div class="fl"> <a href="/">Заголовок в ссылке</a><br /> Здесь написан текст новости... </div> </div>
Каждая отдельная новость – это элемент DIV с именами классов item и fl. Внутри этот элемент может содержать картинки, ссылки, текст. Вы можете изменять стилевое оформление этих элементов, но не изменять имена классов, поскольку их использует плагин.
<div class="container fl"></div>
Все элементы DIV, содержащие новости, в свою очередь заключены в DIV с именами классов container и fl.
<div class="news_items"> <a name="skip_to_news_1"></a> </div>
Все это опять заключено в DIV с именем класса news_items. Используется для организации скрытия и показа всего содержимого новостного блока.
<a href="#" class="prev"><img src="news_slider_prev.gif" /></a> <a href="#" class="next"><img src="news_slider_next.gif" /></a>
В элементы A заключены картинки управляющие движением новостей вперед и назад.
<div class="news_slider"></div>
И наконец все это вместе опять заключено в DIV с именем класса news_slider, ведь таких новостных блоков на странице может быть и несколько.
Вот такая довольно сложная иерархия, но такова воля автора.
Таблицу стилей целиком приводить не буду, отмечу лишь те моменты на которые необходимо обратить внимание.
.fl {
float:left;
display:inline;
}
Селектор класса fl включает блок в плавающую модель, смещая его влево с помощью свойства float и меняет представление блочного элемента с помощью свойства display, что бы получить возможность отображать элементы DIV в одну линию по горизонтали.
.news_slider .item {
/* Важно! Обязательно определяем свойства */
/* width и margin-right. */
width: 170px;
margin-right: 10px;
}
Важный момент, поскольку, если не определять ширину блока новости, JavaScript-код просто не сможет рассчитать расстояние для перемещения.
.news_slider .news_items {
/* Важно! Ширина должна быть равна .item */
/*((width + margin-right) * 2) */
position: relative;
width: 360px;
top: 0;
left: 20px;
overflow: hidden;
}
Почему именно так? Просто так посчитал нужным автор плагина. Ширина определяется таким образом, чтобы были видны одновременно две новости. В принципе можно исправить и на 3 или например на 1, но тогда придется вносить исправления в JavaScript-код, поскольку автор остановился на варианте из двух новостей, жестко определив это в коде.
Осталось разобрать только последний этап – включение в страницу кода, который собственно и вызывает News Slider.
<script type="text/javascript">
$(document).ready(function(){
$(".misc_news").accessNews({
newsHeadline: "Разные новости",
newsSpeed: "normal"
});
});
</script>
Вот такой небольшой набор опций. Совершенно очевидно, что newsHeadline – это заголовок новостного блока, а newsSpeed – скорость с которой «скользят» новости. Это могут быть еще fast и slow, либо просто целое число.
Ну и в заключение ссылка на источник, может кто-то захочет что-нибудь уточнить.
Отзывов (25) на «jQuery News Slider – скользящие новости»
Спасибо за статью – очень к стати…
Я Взял ваш код, и при просмотре в Мозиле он выдал сверху сообщение про КСС, Я полазил в настройках Мозилы, Javascript включен, но про КСС нигде не нашел..Может это можно включить где-то глобально?? Подскажите плиз..
Вы точно ВСЕ файлы подключили, которые нужны? В файле примера они подключаются, и в архив включены, но пути надо править и саму библиотеку jQuery отдельно скачивать.
Кстати, код-то это не мой.
Во-1 В архиве никаких подключаемых файлов нет, а во вторых все у меня есть, вы сами то свой архив скачивали? запускали у себя?
Я пишу статьи про то, что интересно мне, я привожу примеры того, как это работает, я даю возможность скачать исходник примера и (отдельно!) на сайте есть все файлы, которые в примере использованы.
Вы не можете открыть исходные коды? Вы не можете прочитать в статье как, куда и что надо подключать?
Иными словами, Вы просто не хотите включить голову и немного подумать, а хотите просто бездумно взять, воткнуть и пользоваться.
Вот как раз этого я и не хочу, это не ко мне….
Вопрос не по теме, какой плагин используете для подсветки кода? Поделитесь ссылкой
WordPress:CodeHighlighterPlugin, но я кстати не слишком им доволен.
Спасибо, обязательно попробую, а то я ваще херней какой то пользуюсь, там без танцев с бубном не обойтись
Скачал, при активации вылезла ошибка
У меня модуль без проблем активировался. Правда не все коды корректно подсвечивает. Грешит на php-шных и javascript-овых. Но терпеть можно…
Подскажите какой-нибудь другой плагин, который может реализовать слайдинг блоков, этот как-то не впечатлил, привязка к кол-ву, ширине… зачем? Смотрится красиво. но не очень практично.
Попробуйте http://plugins.jquery.com/project/jFlow или http://plugins.jquery.com/project/wiggleslide, хотя собственно они похожи…. А вообще смотрите тут: http://plugins.jquery.com/
Мне нужен простой функционал, show() и hide() блоков.Решил написать свой плагин, но столкнулся с багом, слайдинг происходит не по порядку. Подскажите что не так. Спасибо заранее.
........Кирилл, я просто не в состоянии в рамках блога помочь всем желающим. Тем более, что Вы сами пишете довольно серьезный код, надеюсь что справитесь. И пожалуйста, поймите меня правильно, у меня тоже довольно много работы помимо ведения блога.
Вот нашел очень функциональный плагин, может кому пригодится, есть очень много настроек: горизонтальная , вертикальная прокрутки, количество показываемых блоков, автопрокрутка, прокрутка колесиком мыши. Подходит для скрола как фото так и текста.
Gennady!
Спасибо за подробное объяснение, но вот какое дело – автор видимо переписал плагин. Короче всё что касается Вашего подробного разъяснения как и в какие divы всё завёрнуто идёт лесом. Ну и многое остальное.
в частности код вставляемый в страницу теперь выглядит так:
$(function() {
$( «#example_1″ ).accessNews({
headline : «Candy Coated»,
speed : «normal»,
slideBy : 2
});
$( «#example_2″ ).accessNews({
headline : «Business as Usual»,
speed : «slow»,
slideBy : 3
});
});
У меня возник вопрос, а не подскажете как именно в этом самом новом варианте (т е версия 1.4) вставить несколько раз на одной странице. Вариант изменять id руками не подходит, ибо неизвестно сколько таких блоков будет.
Все естественно – этой статье почти год! Но, чтобы автор плагина не переписал – многое останется неизменным, поскольку он (автор) обязан следовать некоторым правилам написания кода. Т.е., подключая плагин (этот или какой другой) Вы просто добавляете к библиотеке jQuery некоторую функциональность, использовать которую довольно просто. Для этого лишь немного надо ориентироваться в селекторах jQuery. В Вашем коде функциональность предоставляемая плагином «привязывается» к некоторым элементам по id, а можно привязать по имени класса например:
$(‘div.example’).accessNews({…});
тогда «скользящими» станут все элементы div, которые имеют класс example.
Gennady!
Большое спасибо Вам за ответ, но, к сожалению всё не так просто. Это работает только в том случае, когда на странице только ОДИН элемент div, которые имеют класс example.
Я попытался исправить положение так:
$(function() {
$( ‘div.example’ ).each(
function()
{this.accessNews({ … });
});
});
исходя из предположения что обрабатываться должен КАЖДЫЙ элемент, имеющий класс example. Однако и так тоже не работает. Уходит по ветке для случая с отключенным javascript.
Не будете ли Вы столь любезны предложить какой нибудь путь для решения данной коллизии?
Могу пообещать только то, что постараюсь выкроить немного времени, посмотреть, что за изменения внесены автором в плагин и написать о том, как работать с ним теперь…
а как сделать что б по 1 новости выводилось?
Знаете, на практике не делал, но скорее всего просто через css-свойства. Т.е. никаких специальных опций там не предусмотрено….
Если внешнее окно сделать по размеру меньше то по одному нажатию будет прокручиваться 2 новости.
Я делаю 1-й див с контентом, а 2-ой пустой. И закоментил ту часть где скрипт считает новости. так их получается в 2 раза больше.
Спасибо автору. Ваш плагин будет подключен на один из официальных сайтов престижного московского Вуза. Поздравляю, интересная статья с полезным контентом.
+500
Приветствую!
Интересный плагин,
а можно ли сделать прокрутку новостей автоматической? чтоб не приходилось каждый раз вручную наживмать стрелочку прокрутки
Да в общем можно практически все, что может прийти в голову. Но конкретные вопросы лучше задавать на форуме jQuery, а здесь давайте закроем обсуждение