#javascript #css #touch
#javascript #css #коснитесь
Вопрос:
У меня есть div, который я хочу расположить в нижней части окна просмотра мобильного браузера (Safari Android). В настоящее время мой div зафиксирован внизу во всех 5 лучших браузерах Windows (IE, FF, Saf, Chrome, Opera), но это «окно браузера», а не «окно просмотра».
На мобильных устройствах (я пока пробовал только Samsung Galaxy Tab с Android 2.2) div отображается внизу страницы, но если вы нажмете для увеличения, фиксированный div не появится. Он остается позади, за пределами окна просмотра.
Я специально использую CSS-свойства position: fixed и bottom: 0 для сохранения позиции, и, как я уже сказал, это отлично работает в браузере без касания.
Придется ли мне прибегать к сохранению div в том положении, в котором я хотел бы, чтобы он был (в нижней части окна просмотра), подключаясь к событию touchmove и просматривая (а) уровень масштабирования, (б) положение окна просмотра и (в) положение прокрутки?
Я использую JavaScript для вставки div на страницу, а не с помощью встроенного CSS. Хорошо то, что мне не нужно беспокоиться о режиме quirks (поскольку я ориентируюсь только на браузеры Webkit), так что это один положительный момент.
Я не могу установить doctype, использовать встроенный CSS или встроенные DIVS. Все должно добавляться динамически с помощью JavaScript. Вот что я пока сделал в своем тесте:
var mydiv=document.createElement("div");
mydiv.style.position="fixed";
mydiv.style.bottom="0px";
mydiv.id="floater";
mydiv.style.width="400px";
mydiv.style.height="50px";
mydiv.style.backgroundColor="yellow";
if(document.body)document.body.appendChild(mydiv);
document.getElementById("floater").innerHTML="HELLO";
Комментарии:
1. Возможно, стоит взглянуть на jQuery Mobile или jQTouch и посмотреть, как они удерживают панели инструментов исправленными. Вы также используете @media для применения другого CSS на основе настроек клиента при просмотре экрана.
2. Спасибо, Брэд, за два совета jQ ~, я изучаю их. Что вы подразумеваете под «@media»?
3. Брэд имеет в виду медиа-запросы: smashingmagazine.com/2010/07/19/… Определенно стоит заглянуть в!
Ответ №1:
Ваш position:fixed
не будет работать в мобильных браузерах webkit. Взгляните на проблему с исправлением положения мобильного webkit на http://www.position-absolute.com /. У них есть несколько способов сохранить что-то внизу.
Комментарии:
1. Это еще один вариант, основанный на iScroll, который, как мне кажется, полностью посвящен тому, как прокручивать внутри div.
2. @Dee2000 Вы неправильно поняли. Safari webkit не поддерживается
position:fixed
, и он также не прокручивает сайт, он прокручивает окно. Эти скрипты (а в той ссылке их было два, вы пренебрегли набором для выпечки) воссоздают прокрутку и другие функции, так что вы можете реализовать версию для javascriptposition:fixed
.3. Спасибо @Levi, я скачал набор для выпечки и изучу его. Я только что поймал паузу. Оказывается, нам больше не нужна эта функция. Если это вернется, надеюсь, будет хороший новый стандартный способ сделать это 🙂
Ответ №2:
Проверьте iScroll:
http://cubiq.org/iscroll-4
Похоже, это один из лучших вариантов — определенно стоит изучить.
Я использовал предыдущую версию iScroll, но, к сожалению, было несколько вещей, которые не соответствовали стандарту, поэтому нам пришлось отказаться от идеи. Однако ребята из Cubiq только что выпустили версию iScroll 4, которая обещает исправить многое из того, что было проблемой в предыдущей версии.
Удачи!
Дэн
Комментарии:
1. Я просмотрел iScroll до того, как написал свой пост. Казалось, что все дело в создании контента, который позволял бы прокручивать содержимое внутри div. Я не хочу «прокручивать свой div», я хочу, чтобы мой оставался в фиксированном видимом положении и не прокручивался. Или я ошибаюсь?
2. Способ работы iScroll заключается в том, что он позволяет вам установить область с возможностью прокрутки, одновременно исправляя верхний и / или нижний колонтитулы. Таким образом, область с возможностью прокрутки — это окно просмотра, в котором пользователь может прокручивать, пока верхний и / или нижний колонтитулы остаются в их фиксированном положении. Это работает иначе, чем на веб-сайтах для настольных компьютеров, в том смысле, что вы не устанавливаете фиксированный нижний колонтитул, а скорее устанавливаете область, которая будет прокручиваться.