Я пытаюсь скрыть полосу прокрутки в ионном контенте (Ionic 4) на ionic 4 нет ion-scroll, поэтому я использовал ion-content но я не могу найти какой-либо атрибут css, чтобы скрыть его (большинство из них не работают)
Я хочу прокручивать, но не хочу видеть полосу прокрутки
::-webkit-scrollbar,
*::-webkit-scrollbar {
display: none;
}
Я пробовал это, но это не работает в ионном содержании.






В Ionic 4 вы должны использовать следующее, потому что Ionic использует теневой DOM:
глобальный.scss
.no-scroll {
--overflow: hidden;
}
и на странице
<ion-content class = "no-scroll">
Это сработало великолепно! И я также не вижу никакой полосы прокрутки... Я потратил часы на это в ionic 4, потому что все атрибуты прокрутки предыдущей версии устарели. Спасибо!
Спасибо @ростислав
Ваше решение даже не предлагает WebStorm и не рисует желтым подчеркиванием в значении предупреждения, но у меня работает и работает, это круто :)
решение: добавьте эти строки как в global.scss, так и в variables.scss:
::-webkit-scrollbar, *::-webkit-scrollbar {
display: none;
overflow: hidden;
}
ion-content {
overflow: hidden;
--overflow: hidden;
}
.scroll-content {
overflow: hidden;
}
ВНИМАНИЕ:, затем очистите кеш браузера и обновите страницу, это здорово!
но не забывайте, что прокрутка отключена на всех страницах, добавьте этот код только в файл .sccs страниц, которые не нужно прокручивать!
::-webkit-scrollbar, *::-webkit-scrollbar {
display: none;
overflow: hidden;
}
ion-content {
overflow: hidden;
--overflow: hidden;
}
.scroll-content {
overflow: hidden;
}
ion-infinite-scroll.md.infinite-scroll-enabled.hydrated {
overflow: scroll!important;
height: 100%!important;
}
Пожалуйста, добавьте некоторые пояснения к вашему ответу.
Из-за того, что Ionic использует теневой DOM для ионного контента, следует отключить прокрутку в элементе теневого DOM и после этого сделать ионный контент своей собственной прокруткой, а затем скрыть полосу прокрутки для ионного контента. Ионный контент результата со скрытой рабочей полосой прокрутки. Необходимо использовать Пользовательские свойства CSS. Добавьте стили в глобальную область.
ion-content {
// overwrite inline styles
--offset-bottom: auto!important;
--overflow: hidden;
overflow: auto;
&::-webkit-scrollbar {
display: none;
}
}Вы должны добавить «ширину полосы прокрутки: нет»; для фаерфокса :)
Конечно, вы правы, если это Firefox. Я предполагаю, что для Android и ios используется компонент WebView, основанный на Chromium. Вот почему его можно пропустить.
Это решение скрывает полосы прокрутки, но блокирует функцию scrollToTop <ion-content>, и функция scrollToBottom у меня перестала работать. У вас так же?
Он также блокирует бесконечную прокрутку ;(
Вот взлом? https://github.com/ionic-team/ionic/issues/17685
<ion-content>
<div style = "background-color: #f2f2f2 !important; height: 100vh; overflow: auto;">
# content here
</div>
</ion-content>
Этот «хак» работает только тогда, когда вы не используете ion-header или что-то еще за пределами ion-content.
Рефакторинг решения @Sergey Oleynikov, и он отлично сработал для меня
ion-content {
// overwrite inline styles
// --offset-bottom: auto !important;
--overflow: hidden;
overflow: auto;
&::-webkit-scrollbar {
display: none;
}
}
<ion-content> — это настраиваемый элемент с теневым DOM. Есть что-то, называемое :: часть псевдоэлемента, для нацеливания на элемент в теневом элементе DOM.
Если вы посмотрите на теневой дом, вы увидите это:
Обратите внимание на part = "scroll". Ionic добавил части к своим элементам, которые мы можем использовать через псевдоэлемент ::part, чтобы настроить это и применить наш собственный CSS, чтобы скрыть полосу прокрутки:
ion-content::part(scroll)::-webkit-scrollbar {
display: none;
}
Проверено это на iOS и Android успешно. Однако я не заставляю его работать в Chrome.
Это работает и для меня в Chrome. stackoverflow.com/a/59838653/1603234
Я считаю, что вы можете использовать
slot = "fixed"
чтобы сделать элемент фиксированным, удалив полосу прокрутки по умолчанию для вас.
Я не смог найти надежного способа сделать это, используя ранее упомянутые методы, они либо не работали, либо полностью останавливали прокрутку. Мой подход заключался в том, чтобы сделать окно ионного содержания шире экрана.
.noscroller {
left: -10px;
width: calc(100% + 20px);
}::-webkit-scrollbar,
*::-webkit-scrollbar {
display: none;
}
ion-content {
--offset-bottom: auto!important;
--overflow: hidden;
overflow: auto;
&::-webkit-scrollbar {
display: none;
}
}
если вы хотите удалить прокрутку динамически. Вы можете использовать метод удаления класса scroll-y из shadowDOM в <main class = "inner-scroll scroll-y"></main> внутри <ion-content></ion-content>.
Во-первых, import { Renderer2 } from '@angular/core' в вашем constructor(renderer: Renderer2)
Чтобы достичь этого, в вашем your-component.component.ts в цикле событий ngAfterViewInit или далее.
Это удалит прокрутку со страницы, активированной в вашем приложении.
for(let el of Array.from(document.querySelectorAll(".ion-page:not(.ion-page-hidden) ion-content")))
{
this.renderer.removeClass(el.shadowRoot.querySelector("main[part=scroll]"), "scroll-y");
}
Это добавит прокрутку со страницы, активированной в вашем приложении.
for(let el of Array.from(document.querySelectorAll(".ion-page:not(.ion-page-hidden) ion-content")))
{
this.renderer.addClass(el.shadowRoot.querySelector("main[part=scroll]"), "scroll-y");
}
Попробуйте это, кажется, пока все работает нормально, сохраняя при этом все функции в Ionic 5.
// variables.scss
ion-content {
width: calc(100% + 15px);
}
ion-content::part(scroll) {
padding-right: 15px;
}
Код от spicemix сработал! Я вставил код в global.scss, а не в variable.scss
/* global.scss */
ion-content {
width: calc(100% + 15px);
}
ion-content::part(scroll) {
padding-right: 15px;
}
Это также отключает прокрутку, а не просто скрывает полосу прокрутки.