![Есть ли способ отключить пользовательские полосы прокрутки WebKit?](https://rvso.com/image/1302214/%D0%95%D1%81%D1%82%D1%8C%20%D0%BB%D0%B8%20%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%20%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5%20%D0%BF%D0%BE%D0%BB%D0%BE%D1%81%D1%8B%20%D0%BF%D1%80%D0%BE%D0%BA%D1%80%D1%83%D1%82%D0%BA%D0%B8%20WebKit%3F.png)
Есть ли расширение, пользовательская таблица стилей и т. д., которые отключат или отменят настройку полос прокрутки в браузерах на базе Webkit, таких как Google Chrome? Мне нравятся простые, нативные полосы прокрутки, но я не могу найти комбинацию CSS, чтобы вернуть их после стилизации с помощью CSS.
решение1
К сожалению, CSS нельзя «отключить» или отменить после активации:
::-webkit-scrollbar нельзя просто переопределить, чтобы получить стиль по умолчанию, единственный способ сделать это — удалить все правила ::-webkit-scrollbar из кода. В этот момент прокручиваемые области должны быть вынуждены перерисовать полосы прокрутки. Чтобы сделать это, вы либо быстро добавляете и удаляете display:none; из , либо делаете то же самое с overflow:hidden; на прокручиваемых элементах. Проблема с первым заключается в том, что страница мигает белым при каждой загрузке страницы; второй вариант является ресурсоемким, так как ему придется проверять, переполняется ли какой-либо элемент на странице — не идеально.
Ссылка выше — скрипт, который полностью удалит пользовательские панели, оставив без полосы прокрутки.
решение2
Откройте исполняемый файл вашего веб-браузера в двоичном текстовом редакторе или шестнадцатеричном редакторе и замените все вхождения "webkit-scrollbar" на какой-нибудь другой мусор, например "webkit-scrollb4r". Я только что попробовал это с Chrome, и это решило проблему.
решение3
Я воспользовался ответом @bumfo и исправил эту проблему безопасности в Chrome:https://stackoverflow.com/questions/49161159/uncaught-domexception-failed-to-read-the-rules-property-from-cssstylesheet
Если вы вставите это в консоль, вы вернете полосы прокрутки:
for (var sheetI = 0; sheetI < document.styleSheets.length; ++sheetI) {
var sheet = document.styleSheets[sheetI];
try {
var ruleSet = sheet.rules || sheet.cssRules;
for (var i = 0; i < ruleSet.length; ++i) {
var rule = ruleSet[i];
if (/scrollbar/.test(rule.selectorText)) {
sheet.deleteRule(i--);
}
}
} catch (e) {
console.warn("Can't read the css rules of: " + sheet.href, e);
}
};
Вот расширение для Chrome с этим:https://chrome.google.com/webstore/detail/default-scrollbar/nkjmoagfbmeafonfhbkeicjdhjlofplo
И его репозиторий на github:https://github.com/ubershmekel/default-scrollbar
решение4
Примечание: этот ответ последний раз проверялся в 2015 году и может не работать в новых средах.
Приведенный ниже код представляет собой пользовательский скрипт, который удаляет все соответствующие правилам CSS ::-webkit-scrollbar
.
// ==UserScript==
// @name My Fancy Scrollbar Userscript
// @namespace http://your.homepage/
// @version 0.1
// @description enter something useful
// @author You
// @match http://*/*
// @grant none
// ==/UserScript==
[].forEach.call(document.styleSheets, function(sheet) {
for (var i = 0; i < sheet.rules.length; ++i) {
var rule = sheet.rules[i];
if (/::-webkit-scrollbar/.test(rule.selectorText)) {
sheet.deleteRule(i--);
}
}
});