Я искал jQuery marquee, хотя это звучит достаточно просто, я не смог найти какой-либо рабочий код, который бы соответствовал моим потребностям.jQuery marquee (из неупорядоченного списка), который поддерживает право налево
Мои требования:
- Он должен поддерживать направление (в частности, справа налево).
- Он должен поддерживать использование неупорядоченного списка в качестве источника, а не одну строку.
- Это должно выглядеть как классическое шатер.
После поиска, я нашел только несколько, которые несколько соответствуют тому, что я ищу, но все они имеют серьезные недостатки.
Первый: liScroll который пока кажется довольно хорошим, ему не хватает поддержки направления. По умолчанию это просто слева направо, и нет возможности изменить это. И хотя я попытался изменить код для поддержки права налево, увы, я потерпел неудачу.
Я также пробовал Giva Labs Marquee Plugin, но он также не поддерживает направление, насколько я мог судить.
Последний вариант [jQuery WebTicker] [2], хотя на первый взгляд он казался идеальным, оказалось, что у него странная ошибка/поведение. Он отлично работает, когда каждый элемент короток, но в моем случае каждый элемент является довольно длинной строкой сам по себе, и в этом случае он ведет себя беспорядочно. Когда каждый элемент заканчивается, вместо того, чтобы плавно отображать следующий справа на своем хвосте, вместо этого отображает много пустых пространств, и предметы чувствуют, что они прыгают вместо прокрутки/слайда.
Я понимаю, что многие люди не любят шатры в целом, но я заверяю вас, я не делаю этого по своему выбору. Так что медведь со мной.
Заранее спасибо.
Edit: мне удалось получить simpleScroll (благодаря цериловый Wiltink) работать по большей части, но я столкнулся с небольшой проблемой. Я использую «направление: назад», что означает, что текст прокручивается слева направо, но проблема заключается в том, что текст начинает прокручиваться с крайнего правого угла, а не слева, в результате чего первый элемент в списке не отображается.
Я посмотрел на JS, и я предполагаю, что проблема лежит в этой части (еще блок) [строки 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;
Но любые изменения этих значений в конечном итоге наносят больше вреда, чем пользы. Я даже работаю в нужном месте? Или проблема может быть в другом месте?
Прошу прощения, но нет: [у нас нет запросов на покупку] (http://blog.stackoverflow.com/2010/11/qa-is-hard-lets-go-shopping/) , они [вне темы] (http://stackoverflow.com/faq#dontask). Объективно отвечающие вопросы программирования? [Мы делаем * и счастливо] (http://stackoverflow.com/faq#questions)! –
Вы должны попытаться запрограммировать его самостоятельно, прежде чем обращаться за помощью здесь ... – Stphane