12
votes

Ionic 4: comment masquer ScrollBar dans le contenu ionique

J'essaie de cacher la barre de défilement dans le contenu ionique (Ionic 4), il n'y a pas de défilement ionique sur l'ionic 4, donc j'ai utilisé le contenu ionique mais je ne trouve aucun attribut css pour le cacher (la plupart d'entre eux ne fonctionnent pas)

Je veux faire défiler mais je ne veux pas voir la barre de défilement

::-webkit-scrollbar,
*::-webkit-scrollbar {
  display: none;
}

Je l'ai essayé mais cela ne fonctionne pas en teneur en ions .. merci beaucoup.


0 commentaires

10 Réponses :


8
votes

Dans Ionic 4, vous devez utiliser ce qui suit, car Ionic utilise shadow DOM:

global.scss

<ion-content class="no-scroll">

et en page

.no-scroll {
    --overflow: hidden;
}


2 commentaires

Cela désactive également le défilement, cela ne masque pas seulement la barre de défilement.


Cela a fonctionné à merveille! Et je ne vois pas non plus de barre de défilement ... J'ai passé des heures pour cela dans ionic 4 car tous les attributs de défilement de la version précédente étaient obsolètes. Merci!



1
votes

Merci @rostislav

Votre solution n'est même pas suggérée par WebStorm et dessinez un soulignement jaune au sens d'avertissement, mais travaillez pour moi et travaillez, c'est génial :)

solution: ajoutez ces lignes à la fois à global.scss et variables.scss :

::-webkit-scrollbar, *::-webkit-scrollbar {
  display: none;
  overflow: hidden;
}

ion-content {
  overflow: hidden;
  --overflow: hidden;
}

.scroll-content {
  overflow: hidden;
}

REMARQUE: puis vider le cache du navigateur et actualiser la page, c'est génial!

mais n'oubliez pas que le défilement est désactivé dans toutes les pages, ajoutez ce code uniquement .sccs fichier .sccs des pages qui n'ont pas besoin d'être défilées!


0 commentaires

3
votes
::-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;
    }

1 commentaires

Veuillez ajouter quelques explications à votre réponse.



8
votes

En raison de l'utilisation Ionic shadow DOM pour le contenu ionique, devrait désactiver le défilement dans l'élément sur shadow DOM et ensuite faire du contenu ionique son propre défilement, puis masquer la barre de défilement pour le contenu ionique. Le contenu ionique du résultat avec la barre de défilement de travail masquée. Besoin d'utiliser les propriétés personnalisées CSS . Ajoutez des styles à la portée globale.

ion-content {
  // overwrite inline styles
  --offset-bottom: auto!important;
  --overflow: hidden;
  overflow: auto;
  &::-webkit-scrollbar {
    display: none;
  }
}


3 commentaires

Vous devez ajouter "scrollbar-width: none;" pour Firefox :)


Bien sûr, vous avez raison s'il s'agit de Firefox. Je suppose que pour Android et iOS utilise le composant WebView est basé sur le chrome. C'est pourquoi il peut être manqué.


Cette solution masque les barres de défilement mais bloque la fonction <ion-content> scrollToTop et scrollToBottom qui a cessé de fonctionner pour moi. Est-ce la même chose pour vous aussi?



0
votes

Voici un hack? 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>


1 commentaires

Ce "hack" ne fonctionne que lorsque vous n'utilisez pas d'en-tête ionique ou quoi que ce soit d'autre en dehors du contenu ionique.



1
votes

Solution @Sergey Oleynikov refactorisée et cela a parfaitement fonctionné pour moi

ion-content {
  // overwrite inline styles
  // --offset-bottom: auto !important; 
  --overflow: hidden;
  overflow: auto;

  &::-webkit-scrollbar {
    display: none;
  }
}


0 commentaires

0
votes

Le <ion-content> est un élément personnalisé avec le DOM shadom. Il y a quelque chose appelé le pseudo élément :: part pour cibler un élément dans un élément DOM shadom. Si vous regardez le dom de l'ombre, vous verrez ceci:

teneur en ions

Faites attention à la part="scroll" . Ionic a ajouté des parties à leurs éléments que nous pouvons utiliser via le pseudo élément ::part pour cibler ceci et appliquer notre CSS personnalisé pour masquer la barre de défilement:

ion-content::part(scroll)::-webkit-scrollbar {
   display: none;
}

Testé avec succès sur iOS et Android. Je ne parviens pas à le faire fonctionner sur Chrome.


1 commentaires

Cela fonctionne aussi pour moi dans Chrome. stackoverflow.com/a/59838653/1603234



0
votes

Je crois que vous pouvez utiliser slot="fixed" pour rendre l'élément fixe supprimant ainsi la barre de défilement par défaut pour vous.

Consulter la documentation ionique


0 commentaires

0
votes

Je n'ai pas pu trouver un moyen fiable de le faire en utilisant les méthodes mentionnées précédemment, elles n'ont pas fonctionné ou ont arrêté le défilement tous ensemble. Mon approche était de rendre la fenêtre de contenu ionique plus large que l'écran.

.noscroller {
  left: -10px;
  width: calc(100% + 20px);
}


0 commentaires

1
votes
::-webkit-scrollbar,
*::-webkit-scrollbar {
display: none;
}

ion-content {
 --offset-bottom: auto!important;
 --overflow: hidden;
 overflow: auto;
 &::-webkit-scrollbar {
   display: none;
 }
 }

0 commentaires