Как получить полосу прокрутки с переполнением CSS на iOS
разрабатывая сайт для iPad я попытался использовать свойство CSS overflow: auto чтобы получить полосы прокрутки, если это необходимо в div, но мое устройство отказывается показывать их, даже если два пальца прокрутки работает.
Я пробовал с
overflow: auto;
и
overflow: scroll;
и результат тот же.
Я тестирую только на iPad (на настольных браузерах работает отлично).
какие идеи?
11 ответов:
Edit после комментария слева, пожалуйста, по kritzikratzi:
[начиная] с ios 5beta новое свойство
-webkit-overflow-scrolling: touchможно добавить, что должно привести к ожидаемому поведению.некоторые, но очень мало, читайте дальше:
Оригинал ответ, оставил для потомков.
к сожалению, ни
overflow: autoилиscroll, производит полосы прокрутки на устройствах iOS, по-видимому, из-за ширины экрана, которая была бы занята такими полезными механизмами.вместо этого, как вы обнаружили, пользователи должны выполнить два пальца, чтобы прокрутить
overflow-ed содержание. Единственная ссылка, так как я не могу найти Руководство для самого телефона, я мог бы найти здесь:tuaw.com: iPhone 101: Двумя пальцами прокрутки.единственная работа, которую я могу придумать для этого, - это если бы вы могли использовать JavaScript и, возможно, jQTouch, чтобы создать свои собственные полосы прокрутки для
overflowэлементы. В качестве альтернативы вы можете использовать @ media queries удалитьoverflowи показать содержимое в полном объеме, как пользователь iPhone это получает мой голос, если только для чистой простоты. Например:<link rel="stylesheet" href="handheld.css" media="only screen and (max-device width:480px)" />предыдущий код исходит от Список Врозь, из той же статьи, связанной с выше (я не уверен, почему они оставили
type="text/css", но я предполагаю, что есть причины.
Я сделал некоторые испытания и с помощью CSS3 переопределить полосы прокрутки работает, и вы получите, чтобы сохранить ваш
Overflow:scroll;илиOverflow:autoЯ закончил с чем-то вроде этого...
::-webkit-scrollbar { width: 15px; height: 15px; border-bottom: 1px solid #eee; border-top: 1px solid #eee; } ::-webkit-scrollbar-thumb { border-radius: 8px; background-color: #C3C3C3; border: 2px solid #eee; } ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.2); }единственная нижняя сторона, которую я еще не смог понять, - это как взаимодействовать с полосами прокрутки на iProducts, но вы можете взаимодействовать с контентом для его прокрутки
применить этот код в css
::-webkit-scrollbar{ -webkit-appearance: none; width: 7px; } ::-webkit-scrollbar-thumb { border-radius: 4px; background-color: rgba(0,0,0,.5); -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5); }
решение, данное Крисом Барром здесь
function isTouchDevice(){ try{ document.createEvent("TouchEvent"); return true; }catch(e){ return false; } } function touchScroll(id){ if(isTouchDevice()){ //if touch events exist... var el=document.getElementById(id); var scrollStartPos=0; document.getElementById(id).addEventListener("touchstart", function(event) { scrollStartPos=this.scrollTop+event.touches[0].pageY; event.preventDefault(); },false); document.getElementById(id).addEventListener("touchmove", function(event) { this.scrollTop=scrollStartPos-event.touches[0].pageY; event.preventDefault(); },false); } }отлично работает для меня. Удалить событие.метод preventDefault если вам нужно использовать несколько кликов...
The iScroll4 библиотека javascript исправит это прямо. Он имеет
hideScrollbarметод, который вы можете установить кfalseдля предотвращения исчезновения полосы прокрутки.
другие 2 народа на так предложенном возможном CSS-единственном решении проблемы. Решение Дэвида Томаса идеально, но имеет ограничение, что полоса прокрутки видна только во время прокрутки.
для того, чтобы полосы прокрутки всегда были видны, можно следовать рекомендациям, предложенным по следующим ссылкам:
по моему опыту вам нужно убедиться, что элемент имеет
display:block;применил к-webkit-overflow-scrolling:touch;на работу.
если вы пытаетесь достичь горизонтальный
divскролл С touch on mobile, обновленное исправление CSS не работает (протестировано на Android Chrome и iOS Safari нескольких версий), например:-webkit-overflow-scrolling: touchЯ нашел решение и изменил его для горизонтальной прокрутки до трюка CSS. Я тестировал его на Android Chrome и iOS Safari, а события listener touch были вокруг долгое время, поэтому он имеет хорошую поддержку: http://caniuse.com/#feat=touch.
использование:
touchHorizScroll('divIDtoScroll');функции:
function touchHorizScroll(id){ if(isTouchDevice()){ //if touch events exist... var el=document.getElementById(id); var scrollStartPos=0; document.getElementById(id).addEventListener("touchstart", function(event) { scrollStartPos=this.scrollLeft+event.touches[0].pageX; },false); document.getElementById(id).addEventListener("touchmove", function(event) { this.scrollLeft=scrollStartPos-event.touches[0].pageX; },false); } } function isTouchDevice(){ try{ document.createEvent("TouchEvent"); return true; }catch(e){ return false; } }изменено из вертикального решения (предварительно CSS трюк):
http://chris-barr.com/2010/05/scrolling_a_overflowauto_element_on_a_touch_screen_device/
отлично работает для меня, пожалуйста:
.scroll-container { max-height: 250px; overflow: auto; -webkit-overflow-scrolling: touch; }
::-webkit-scrollbar { width: 15px; height: 15px; } ::-webkit-scrollbar-thumb { border-radius: 8px; background-color: #C3C3C3; border: 2px solid #eee; }используйте этот код, он работает в ios / android APP webview; он удаляет некоторые не переносимые css-код;

Comments