Лишний пиксель в карусели
1807 сообщений
#12 лет назад
ссылкаМастерю тут полностью резиновую карусель, грамотно подстраивающуюся под ширину окна (готовых скриптов, которые стопроцентно хорошо работают, не подглючивая и не обрезая слайды, или нету, или я не нашел), на основании jCarousel. И вроде бы добился всего, что нужно, но блин, как всегда есть ложка дёгтя. Если докрутить карусель до последнего элемента, то стрелка "вправо" не пропадает, и можно ткнуть еще раз, и подвинуть всю карусель на пиксель. Чтобы крутануть обратно, надо опять подкрутить на пиксель, и потом крутить в обратную сторону.
Не могу понять, что это за эффект, и почему не пропадает стрелка. Попробовал убрать все свои навороты, и просто вызвать карусель - то же самое, в конце надо подкручивать на пиксель.
Если есть любители поковыряться и помочь, подскажите что-то, а то прямо чето не знаю..

ПыСы. Если поиграться шириной окна браузера, то можно найти такую, что подкручивать не надо, стрелка пропадает как только выезжает последний элемент. Наталкивает на мысль о какой-то байде с округлением, но все равно чето на ум ничего не идет.
403 сообщения
#12 лет назад
1. Какое значение у count_visible?count_visible = Math.floor(carousel_wrap_width/carousel_li_width);
2. Почему параметр visible = 7, а отображаются 10?
3. Можно быстро протестировать без заморочек с арифметикой
Перед выводом карусели финальное количество объектов уменьшить на 1.
А вообще там же bxslider подключен, он отлично подойдет.
P.S. Уменьшите ширину экрана до 320 - пиксель пропадает, то есть JS считает на 1 объект больше при полном экране, ищите проблему в делении или округлении.
10571 сообщение
#12 лет назад
nehovaysyatopol, У меня просто на весь экран, а он большой

2356 сообщений
#12 лет назад
Цитата ("AlexsimA"):nehovaysyatopol, У меня просто на весь экран, а он большойв ряд красиво стоят бутылки, ничего не шевелится
Это Джумла?
У вас наверное все бутылки влезли в монитор т.к. у меня на большем мониторе больше и бутылок, а на меньшем естественно меньше и при нажатии бутылочки подвигаются
2356 сообщений
#12 лет назад
nehovaysyatopol? непорядок, специально для AlexsimA добавить бутылок 
1807 сообщений
#12 лет назад
Цитата ("tuls"):1. Какое значение у count_visible?count_visible = Math.floor(carousel_wrap_width/carousel_li_width);
2. Почему параметр visible = 7, а отображаются 10?
3. Можно быстро протестировать без заморочек с арифметикой
Перед выводом карусели финальное количество объектов уменьшить на 1.
А вообще там же bxslider подключен, он отлично подойдет.
P.S. Уменьшите ширину экрана до 320 - пиксель пропадает, то есть JS считает на 1 объект больше при полном экране, ищите проблему в делении или округлении.
7 по умолчанию, если что-то не сложилось со скриптом. Если со скриптом все сложилось, то показывается ровно такое количество бутылок, чтобы влазило целиком (целочисленное деление, грубо говоря). Пересчитывается каждый раз при ресайзе.
Тестировать на количество элементов не обязательно, файрбаг четко показывает, что лишних элементов нет.
bxSlider обрезает бутылки, он не подстраивается под изменение ширины окна. Надо каждый раз пересчитывать все размеры, и показывать ровно столько бутылок, чтобы влазили целиком. Возможно в bxSlidere это тоже можно накастомизировать, но я не врубился как, jCarousel более дружественна в этом плане, поэтому работал с ней.
Цитата ("floppox"):
У меня все отлично. Хром, 1280
А вы поиграйтесь шириной окна браузера, как я писал вышел....возможно на 1280 все совпадает, чтобы округление проходило верно...
616 сообщений
1807 сообщений
616 сообщений
#12 лет назад
nehovaysyatopol, а вы документацию изучите сначала... делал неоднократно такое.
616 сообщений
6863 сообщения
#12 лет назад
Я бы вообще не так делала. Сначала верстка на чистом цсс, чтоб отлбражалось нужное количество бутылок (те что не влазят, переносятся в следующий ряд и не видны). По клику на стрелку, первый элнмент переносим в конец ряда. оассчетлв вообще никаких не нужно. Но при таком подходе полкчится только циклическая карусель.
1807 сообщений
#12 лет назад
floppox, ну во-первых тут прийдется обойтись без анимации, а во-вторых количество видимых элементов динамически меняется в зависимостиот ширины окна...art-apple,
ссылка
Карусель по вашей ссылке, после того как я поигрался шириной окна, обрезала слайды и слева и справа.
Вот если бы вспомнили, как можно менять количество видимых элементов в bxSilder (minSlides, maxSlides) динамически, было бы хорошо. Я просто не понял, как это сделать программно. Тогда бы было бы то же самое, что я сейчас делаю с jCarousel, но при этом bxSlider мне как плагин более приятен, и, надеюсь, не будет глючить.
6863 сообщения
#12 лет назад
Анимация таки да, не получится. А вот подстраиваться под ширину будет идеально.
616 сообщений
#12 лет назад
nehovaysyatopol, так там верстка такая сайта, если бы он полностью был резиновым(сам шаблон сайта) то карусель не будет обрезаться.
1807 сообщений
#12 лет назад
Ну хорошо, допустим "можно сделать по-другому". Но всё же - вот в этом текущем варианте, откуда может браться лишний поворот на пиксель?
1807 сообщений
#12 лет назад
Разобрался, отслеживая появление последнего слайда, и скриптом скрывая в этот момент стрелку принудительно, так что нажать еще раз не получится. Тему можно закрывать.