Выделение jQuery (из неупорядоченного списка), которое поддерживает справа налево

Я искал бегущую строку jQuery, хотя это звучит достаточно просто, я не смог найти ни одного рабочего кода, который соответствовал бы моим потребностям.

Мои требования:

  1. Он должен поддерживать направление (в частности, справа налево).
  2. Он должен поддерживать использование неупорядоченного списка в качестве источника, а не одной строки.
  3. Он должен выглядеть как классический шатер.

После поиска я нашел только несколько, которые несколько соответствовали тому, что я искал, но все они имели серьезные недостатки.

Первый — это liScroll, который, хотя и кажется довольно хорошим, не имеет поддержки направления. По умолчанию это просто слева направо, и нет возможности изменить это. И хотя я пытался изменить код для поддержки письма справа налево, увы, я с треском провалился.

Я также попробовал плагин Giva Labs Marquee, но, насколько я могу судить, он также не поддерживает направление.

Последний — [jQuery WebTicker][2], хотя на первый взгляд он казался идеальным, в нем обнаружилась странная ошибка/поведение. Он отлично работает, когда каждый элемент короткий, но в моем случае каждый элемент представляет собой довольно длинную строку сам по себе, и в этом случае он ведет себя хаотично. Когда каждый элемент заканчивается, вместо того, чтобы плавно отображать следующий прямо в хвосте, он вместо этого отображает много пустых мест, и элементы чувствуют, что они прыгают, а не прокручиваются/скользят.

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

Заранее спасибо.

Изменить: мне удалось получить simpleScroll (спасибо Серил Уилтинк) по большей части работает, но я столкнулся с небольшой проблемой. Я использую "направление: назад", что означает прокрутку текста слева направо, но проблема в том, что текст начинает прокручиваться с крайнего правого, а не крайне левого положения, что приводит к первому элементу на список не просматривается.

Я взглянул на JS и предполагаю, что проблема заключается в этой части (блок else) [строки со 143 по 162 в исходном JS]

if (this.isAuto && this.o.autoMode=='loop') {

            this.$list.css(this.dimension,this.posMax+(this.itemMax*addItems) +'px');

            this.posMax += (this.clipMax - this.o.speed);

            if (this.isForwards) {
                this.$items.slice(0,addItems).clone(true).appendTo(this.$list);
                this.resetPosition = 0;

            } else {
                this.$items.slice(-addItems).clone(true).prependTo(this.$list);
                this.resetPosition = this.$items.length * this.itemMax;
                //due to inconsistent RTL implementation force back to LTR then fake
                if (this.isRTL) {
                    this.$clip[0].dir = 'ltr';
                    //based on feedback seems a good idea to force float right
                    this.$items.css('float','right');
                }
            }

Но какие бы значения я ни пытался изменить, это заканчивалось тем, что все испортилось, я предполагаю, что это ключевая часть

this.resetPosition = this.$items.length * this.itemMax;

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


person Lohengrin Percival    schedule 04.03.2013    source источник
comment
Извините, но нет: мы не делаем запросы на покупки, они не по теме. Объективно-ответы на вопросы программирования? Те, что мы делаем и с удовольствием!   -  person David says reinstate Monica    schedule 04.03.2013
comment
Вы должны попытаться закодировать его самостоятельно, прежде чем просить помощи здесь...   -  person Stphane    schedule 04.03.2013


Ответы (1)


Раньше я успешно использовал просто прокрутку.

http://logicbox.net/jquery/simplyscroll/

Не уверен, что он сильно изменился за это время, но он поддерживает направления и работает с UL/LI.

Вы можете увидеть пример на http://www.cesar.nl/ (тикер продукта вверху с картинки)

person Céryl Wiltink    schedule 04.03.2013
comment
Прежде всего, спасибо, что нашли время ответить на мой вопрос. Я попробовал это через пару быстрых тестов, но я не думаю, что это предназначалось для использования с текстовыми элементами. Когда я заменил изображения текстом, все это перекрылось. Я предполагаю, что это проблема с CSS, но я еще не уверен. Я попробую еще раз посмотреть и посмотреть, смогу ли я понять это, еще раз спасибо. - person Lohengrin Percival; 04.03.2013
comment
Вероятно, это CSS... Разницы быть не должно, так как LI анимируются, и неважно, что они содержат... Но действительно, трудно предложить одну библиотеку, которая соответствует всему, что конкретно вам нужно.. , После того, как вы попробовали пару и ничего не совпало, попробуйте написать это самостоятельно, вероятно, ваш лучший выбор (не забудьте превратить его в классный плагин jQuery и выпустить его в мир!) :-) - person Céryl Wiltink; 04.03.2013
comment
Область комментариев была слишком короткой, поэтому я пересмотрел свой первоначальный вопрос, добавив обновленную информацию о своем прогрессе. Короче говоря, мне удалось заставить его работать так, как я хочу, но все же столкнулся с небольшой проблемой, как я описал в своей ревизии. Любые мысли будут оценены, спасибо еще раз. - person Lohengrin Percival; 05.03.2013
comment
@CerylWiltink спасибо за совет по simplescroll. Я искал хорошую замену плагину Giva Labs Marquee jQuery, который не обновлялся с 2009 года. Это было здорово, но у меня возникли проблемы с его работой после обновления до jquery в конвейере активов rails 3.2.11. Просто прокрутка работает очень хорошо. Мне пришлось настроить CSS, но этого следовало ожидать. - person acoustic_north; 02.05.2013