Предотвращение скрытия полос прокрутки для пользователей трекпада MacOS в WebKit/Blink
WebKit/Blink (Safari/Chrome) поведение по умолчанию на MacOS с 10.7 (Mac OS X Lion) заключается в том, чтобы скрыть полосы прокрутки от пользователей трекпада, когда они не используются. Это может сбить с толку; полоса прокрутки часто является единственным визуальным сигналом, что элемент прокручивается.
пример (jsfiddle)
ФОРМАТ HTML<div class="frame">
Foo<br />
Bar<br />
Baz<br />
Help I'm trapped in an HTML factory!
</div>
стиль CSS
.frame {
overflow-y: auto;
border: 1px solid black;
height: 3em;
width: 10em;
line-height: 1em;
}
В WebKit (Хром) Скриншот
Престо (Опера) Скриншот
Как я могу заставить полоса прокрутки всегда будет отображаться на прокручиваемом элементе в WebKit?
5 ответов:
внешний вид полос прокрутки можно контролировать с помощью WebKit
-webkit-scrollbar
псевдо-элементами [блог]. Вы можете отключить внешний вид и поведение по умолчанию, установив-webkit-appearance
[ docs] доnone
.поскольку вы удаляете стиль по умолчанию, вам также нужно будет указать стиль самостоятельно, или полоса прокрутки никогда не появится. Следующий CSS воссоздает внешний вид скрытого свитка бары:
пример (jsfiddle)
стиль CSSВ WebKit (Хром) Скриншот.frame::-webkit-scrollbar { -webkit-appearance: none; } .frame::-webkit-scrollbar:vertical { width: 11px; } .frame::-webkit-scrollbar:horizontal { height: 11px; } .frame::-webkit-scrollbar-thumb { border-radius: 8px; border: 2px solid white; /* should match background, can't be transparent */ background-color: rgba(0, 0, 0, .5); } .frame::-webkit-scrollbar-track { background-color: #fff; border-radius: 8px; }
для одностраничного веб-приложения, где я динамически добавляю прокручиваемые разделы, я запускаю полосы прокрутки OSX, программно прокручивая один пиксель вниз и резервное копирование:
// Plain JS: var el = document.getElementById('scrollable-section'); el.scrollTop = 1; el.scrollTop = 0; // jQuery: $('#scrollable-section').scrollTop(1).scrollTop(0);
это вызывает визуальный сигнал затухания и выхода.
вот более короткий бит кода, который восстанавливает полосы прокрутки по всему веб-сайту. Я не уверен, что это сильно отличается от текущего самого популярного ответа, но вот он:
::-webkit-scrollbar { -webkit-appearance: none; width: 7px; } ::-webkit-scrollbar-thumb { border-radius: 4px; background-color: rgba(0,0,0,.5); box-shadow: 0 0 1px rgba(255,255,255,.5); }
найдено по этой ссылке:http://simurai.com/blog/2011/07/26/webkit-scrollbar
полосы прокрутки браузера не работает на iPhone или iPad. На работе мы используем пользовательские полосы прокрутки JavaScript, такие как jScrollPane, чтобы обеспечить согласованный интерфейс кросс-браузера:http://jscrollpane.kelvinluck.com/
Это работает очень хорошо для меня - вы можете сделать некоторые действительно красивые пользовательские полосы прокрутки, которая впишется в дизайн вашего сайта.
еще один хороший способ справиться со скрытыми полосами прокрутки Льва-отобразить приглашение для прокрутки вниз. Он не работает с небольшими областями прокрутки, такими как текстовые поля, но хорошо с большими областями прокрутки и сохраняет общий стиль сайта. Один сайт делает это http://versusio.com, Просто проверьте эту страницу примера и подождите 1,5 секунды, чтобы увидеть приглашение:
http://versusio.com/en/samsung-galaxy-nexus-32gb-vs-apple-iphone-4s-64gb
в реализация не трудно, но вы должны заботиться, что вы не отображаются, когда пользователь уже прокручивается.
вам нужно jQuery + подчеркивание и
$(window).scroll
чтобы проверить, если пользователь уже прокрутил сам,
_.delay()
чтобы вызвать задержку перед отображением приглашения -- приглашение не должно быть навязчивым
$('#prompt_div').fadeIn('slow')
чтобы исчезнуть в вашей подсказке и, конечно,
$('#prompt_div').fadeOut('slow')
чтобы исчезнуть, когда пользователь прокручивал после того, как он увидел строкикроме того, вы можете привязать события Google Analytics для отслеживания поведения прокрутки пользователя.