Предотrotation скрытия полос прокрутки для пользователей трекпада MacOS в WebKit / Blink

Поведение WebKit / Blink (Safari / Chrome) по умолчанию в MacOS с 10.7 (Mac OS X Lion) заключается в том, чтобы скрывать полосы прокрутки от пользователей трекпада, когда они не используются. Это может ввести в заблуждение ; полоса прокрутки часто является единственным визуальным сигналом, что элемент прокручивается.

Пример ( jsfiddle )

HTML

Foo
Bar
Baz
Help I'm trapped in an HTML factory!

CSS

 .frame { overflow-y: auto; border: 1px solid black; height: 3em; width: 10em; line-height: 1em; }​ 

Скриншот WebKit (Chrome)

скриншот div без видимой полосы прокрутки

Скриншот Presto (Opera)

скриншот div с видимой полосой прокрутки


Как заставить строку прокрутки всегда отображаться на прокручиваемом элементе в WebKit?

Появление полос прокрутки можно контролировать с помощью -webkit-scrollbar [ blog ] . Вы можете отключить внешний вид и поведение по умолчанию, установив -webkit-appearance [ docs ] на none .

Поскольку вы удаляете стиль по умолчанию, вам также необходимо указать стиль самостоятельно, или полоса прокрутки никогда не появится. Следующий CSS воссоздает появление скрытых полос прокрутки:

Пример ( jsfiddle )

CSS

 .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; } 

Скриншот WebKit (Chrome)

скриншот, показывающий полосу прокрутки webkit, без необходимости парить

Для одностраничного веб-приложения, где я динамически добавляю прокручиваемые разделы, я запускаю полосы прокрутки 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/

Он работает очень хорошо для меня – вы можете создавать действительно красивые пользовательские полосы прокрутки, которые соответствуют дизайну вашего сайта.

Еще один хороший способ борьбы со скрытыми полосами прокрутки Lion – отобразить подсказку для прокрутки вниз. Он не работает с небольшими областями прокрутки, такими как текстовые поля, но хорошо с большими областями прокрутки и сохраняет общий стиль сайта. Один сайт делает это http://versusio.com , просто проверьте эту страницу примера и подождите 1,5 секунды, чтобы увидеть приглашение:

http://versusio.com/en/samsung-galaxy-nexus-32gb-vs-apple-iphone-4s-64gb

Реализация не является сложной задачей, но вам нужно позаботиться о том, чтобы вы не отображали приглашение, когда пользователь уже прокручивал.

Вам нужно jQuery + Underscore и

$(window).scroll чтобы проверить, $(window).scroll ли пользователь сам,

_.delay() чтобы вызвать задержку перед отображением приглашения – приглашение не должно быть навязчивым

$('#prompt_div').fadeIn('slow') исчезает в вашем приглашении и, конечно же,

$('#prompt_div').fadeOut('slow') исчезает, когда пользователь прокручивается после того, как увидел приглашение

Кроме того, вы можете связать события Google Analytics, чтобы отслеживать поведение прокрутки пользователя.

  • Сокращение перехода CSS с несколькими свойствами?
  • Есть ли встроенный компонент Webkit для разработки Windows / C #?
  • Масштабирование изображения с помощью CSS: есть ли альтернатива webkit для -moz-crisp-edge?
  • Safari / Chrome (Webkit) - Не удается скрыть вертикальную полосу прокрутки iframe
  • : активный псевдоclass не работает в мобильном safari
  • HTML5 Сафари в прямом эфире против нет
  • Сглаживание текста Wonky при повороте с помощью webkit-transform в Chrome
  • вводить CSS на сайт с webview в android
  • $ http не отправляет cookie в Requests
  • CSS3 - Как стилизовать выделенный текст в текстовых областях и входах в Chrome?
  • CSS-медиа-запрос для iPad и iPad?
  • Interesting Posts

    Матрица «Зигзаг» Переупорядочение

    Предотвратить преобразование имени рецензента в «Автор» после сохранения документа Word

    Почему я могу выполнить программу, которая не входит в переменную среды PATH?

    Как изменить тип данных DataColumn в DataTable?

    Как обновить критерии соответствия Array Elements в документе MongoDB?

    Как узнать, что мой WebView загружен на 100%?

    За последние 10 лет накопители дисков стали намного быстрее?

    API REST. Лучшие практики. Где указать параметры?

    Чтение формата ePub

    Создание регулярных 15-минутных временных рядов из нерегулярных временных рядов

    Android-камера android.hardware.Camera устарела

    Win7 не может спать из-за GRUB

    Графика Коррупция даже во время загрузки, затем после 2 неудачных перезагрузок она говорит, что BOOTMGR отсутствует

    Включение режима UEFI в BIOS после установки его в режиме CSM и невозможность вернуться в BIOS

    Инструмент Уравнения Powerpoint 2013 не позволяет полноразмерных фракций

    Давайте будем гением компьютера.