#javascript #jquery #iphone #ipad
#javascript #jquery #iPhone #iPad
Вопрос:
У меня есть веб-сайт с фиксированным фоновым изображением, которое я пытаюсь адаптировать для iPhone и iPad, поскольку изображение не остается статичным. Я пробовал различные оболочки, но безуспешно; либо я не могу прокручивать в одну сторону, либо сайт прокручивается неправильно (из-за использования динамического ajax). Итак, я начал искать, есть ли способ переместить фон изображения с помощью прокрутки страницы, и я использовал следующее:
$(document).bind('touchmove',function(e){
$('.background_image').css({top: $(document).scrollTop()});
$('.background_image img').css({top: $(document).scrollTop()});
console.log($('.background_image img').css('top'));
});
$(document).bind('scroll', function() {
$('.background_image').css({top: $(document).scrollTop()});
$('.background_image img').css({top: $(document).scrollTop()});
});
Кажется, это работает при первом «касании», но фон при этом не перемещается постоянно. Когда я прекращаю перемещение, запускается привязка ‘scroll’ и перемещает изображение в нужное место.
Возможно ли это, или я пытаюсь достичь невозможного здесь? Регистрация выходных данных показывает, что css действительно изменяется, но экран не обновляется с его помощью.
Обновить
Я не знаю, помогает ли это, но вот HTML / CSS, которые я использую в настоящее время:
<div class="background_image">
<img src="image.jpg" />
</div>
.background_image {
position: fixed;
left: 0px;
top: 0px;
overflow: hidden;
z-index: -1;
}
.background_image img {
position: fixed;
overflow: hidden;
top: 0px;
left: 0px;
background: white;
}
Я также изменил свой код на что-то немного более простое.
Приветствия,
Dan
Комментарии:
1. вы пробовали сделать изображение реальным фоновым изображением и просто обновить src этого изображения? (т. Е. используя
background-image:url('image.jpg'); background-position:top center; background-repeat:no-repeat;
)? Помните,position:fixed
не работает на устройствах iOS (потому что они прокручивают область просмотра, а не документ).2. @ampersand — Я пытался использовать только тег background-image, но изображение просто остается в том же месте при прокрутке, а не в пределах области просмотра, которая в идеале является тем, что мне нужно. Также я изменяю фон при каждом изменении страницы, так что это не идеальное решение (хотя, если бы это сработало, я был бы рад оставить все как есть)
3. можете ли вы опубликовать ссылку на образец, который демонстрирует некоторые из ваших проблем?
Ответ №1:
Кажется, это работает при первом «касании», но фон при этом не перемещается постоянно. Когда я прекращаю перемещение, запускается привязка ‘scroll’ и перемещает изображение в нужное место. Возможно ли это, или я пытаюсь достичь невозможного здесь? Регистрация выходных данных показывает, что css действительно изменяется, но экран не обновляется с его помощью.
К сожалению, на данный момент это невозможно на устройствах iOS. Я уже некоторое время использую jQuery Mobile для сайтов, оптимизированных для iOS, и это один из больших недостатков. Команда jQuery Mobile описывает проблему следующим образом (смотрите здесь.):
Обратите внимание, что устройства iOS замораживают манипуляции с DOM во время прокрутки, ставя их в очередь для применения по завершении прокрутки.
Это причина поведения, которое вы наблюдаете. События ставятся в очередь и обновляют изображение bg после завершения прокрутки. Скорее всего, вы смогли бы устранить эту проблему, используя iScroll, который полностью заменяет собственный обработчик прокрутки в контейнере по вашему выбору, хотя я не уверен, стоит ли оно того для задачи, которую вы пытаетесь выполнить.
Комментарии:
1. Да, я думал, что, возможно, так и было… Я пытался использовать iScroll, YUI Scroll и некоторые другие, однако функциональность сайта, похоже, сильно страдает, когда я пытаюсь обернуть сайт (исключая раздел фонового изображения div) в них.
2. это именно то, чего я ожидал. Эти инструменты довольно крутые, но не совсем без своих собственных проблем. Боюсь, ответ заключается в том, что вы не сможете этого сделать по причине, которую я опубликовал выше.
Ответ №2:
Мы решили пойти с обходным решением и реализовать изображения для iPhone, которые исчезают внизу до определенного цвета фона.