358 votes

Barre de défilement personnalisée en CSS dans un div

Comment puis-je personnaliser une barre de défilement via CSS (Cascading Style Sheets) pour une div et non la page entière ?

0 votes

Appliquer overflow:auto; juste pour ça <div> . D'autres détails sur le contexte ?

0 votes

Je l'ai fait, mais j'ai besoin d'une barre de défilement personnalisée, euh le design de la barre de défilement.

0 votes

Couleur personnalisée ? Cela n'est pris en charge que par IE, et pas par les autres navigateurs modernes. Il n'est pas possible d'y parvenir en utilisant du pur CSS.

706voto

JSuar Points 11811

J'ai pensé qu'il serait utile de regrouper les dernières informations sur les barres de défilement, les CSS et la compatibilité des navigateurs.

Support CSS de la barre de défilement

Actuellement, il n'existe pas de définitions de style CSS pour la barre de défilement inter-navigateurs. L'article du W3C Je mentionne à la fin a la déclaration suivante et a été récemment mis à jour (FRI 21 DEC 2012 06:20:49 AM CET) :

Certains navigateurs (IE, Konqueror) prennent en charge les propriétés non standard suivantes 'scrollbar-shadow-color', 'scrollbar-track-color' et autres. Ces propriétés sont illégales : elles ne sont pas définies dans une spécification CSS ni marquées comme propriétaires (en les faisant précéder de "-vendor-"). avec "-vendor-")

Microsoft

Comme d'autres l'ont mentionné, Microsoft prend en charge le style de la barre de défilement ( exemple ) mais, seulement pour IE8 et plus.

Chrome et Safari (webkit)

De même, webkit a maintenant sa propre version :

Firefox (Gecko)

Firefox ne dispose pas de sa propre version des styles de barre de défilement. selon cette réponse de SO de Barre de défilement CSS personnalisée pour Firefox .

Il n'y a pas d'équivalent Gecko à ::-webkit-scrollbar et des amis.

Vous devrez vous en tenir à jQuery.

Beaucoup de gens aimeraient cette fonctionnalité, vous voyez :
https://bugzilla.mozilla.org/show_bug.cgi?id=77790

Ce rapport demande exactement la même chose que vous : https://bugzilla.mozilla.org/show_bug.cgi?id=547260

Stylisation de la barre de défilement pour tous les navigateurs

Les bibliothèques JavaScript et les plug-ins peuvent fournir une solution multi-navigateurs. Les options sont nombreuses.

La liste pourrait être longue. Votre meilleure chance est de chercher, de faire des recherches et de tester les solutions disponibles. Je suis sûr que vous trouverez quelque chose qui répondra à vos besoins.

Empêcher le style illégal de la barre de défilement

Juste au cas où vous voudriez empêcher le style de la barre de défilement qui n'a pas été correctement préfixé avec "-vendeur", Cet article du W3C fournit des instructions de base. . En gros, vous devrez ajouter les feuilles de style CSS suivantes à une feuille de style utilisateur associée à votre navigateur. Ces définitions remplaceront le style invalide de la barre de défilement sur toutes les pages que vous visitez.

body, html {
  scrollbar-face-color: ThreeDFace !important;
  scrollbar-shadow-color: ThreeDDarkShadow !important;
  scrollbar-highlight-color: ThreeDHighlight !important;
  scrollbar-3dlight-color: ThreeDLightShadow !important;
  scrollbar-darkshadow-color: ThreeDDarkShadow !important;
  scrollbar-track-color: Scrollbar !important;
  scrollbar-arrow-color: ButtonText !important;
}

Questions dupliquées ou similaires / Source non liée ci-dessus

Note : Cette réponse contient des informations provenant de diverses sources. Si une source a été utilisée, elle est également mentionnée dans cette réponse.

269 votes

Le web existe depuis plus de vingt ans et il n'existe toujours pas de méthode standard pour concevoir des barres de défilement. Vingt ans que les comités de normalisation ne s'aperçoivent pas que les gens font défiler les choses. Il n'y a pas de rythme d'applaudissements lents et sarcastiques qui puisse exprimer adéquatement ce que je ressens. Mais un délai de 20 ans entre le premier et le deuxième applaudissement serait, je pense, approprié. Pour mettre les choses en perspective, je n'étais pas encore né quand le WWW est apparu, et je suis maintenant ingénieur en informatique. Bien joué, W3C.

1 votes

Expérience : Tiny scrollbar nécessite d'insérer beaucoup de DIV dans le document, ce qui est peu pratique à utiliser. Tiny Scroll est plus facile à mettre en œuvre.

3 votes

Juste pour ajouter mes deux cents : Gmail et Youtube ont une barre de défilement stylisée dans Chrome, et une barre de défilement native dans Explorer et Firefox. Si ces normes sont suffisantes pour eux, elles le sont aussi pour moi.

15voto

Essayez-le

Source : http://areaaperta.com/nicescroll/

Mise en œuvre simple

<script type="text/javascript">
 $(document).ready(

  function() { 

    $("html").niceScroll();

  }

);
</script>

0 votes

Je suis sûr que c'est probablement personnalisable, mais la démo sur leur page défile beaucoup trop lentement et la barre de défilement est beaucoup trop difficile à saisir.

4 votes

Comme pratiquement tous les plugins jQuery -- [frissons] -- c'est terriblement lent par rapport aux implémentations de défilement natives, threadées et accélérées par le GPU. Complètement inadapté aux applications sérieuses, et un obstacle à une bonne UX. Je vous recommande de l'éviter, sauf si c'est pour un site web de jouets.

3 votes

Je déteste quand les gens appellent quelque chose de pur javascript puis BAM ! un plugin jquery.

11voto

elclanrs Points 40467

Les barres de défilement personnalisées ne sont pas possibles avec les CSS, il faut de la magie JavaScript.

Certains navigateurs prennent en charge des règles CSS non spécifiques, telles que ::-webkit-scrollbar dans Webkit, mais ce n'est pas idéal puisqu'il ne fonctionne que dans Webkit. IE avait aussi quelque chose comme ça, mais je ne pense pas qu'ils le supportent encore.

Une simple recherche sur Google vous donnera la réponse. Barre de défilement personnalisée

Jetez également un coup d'œil à la FAQ sur la façon de poser les bonnes questions et assurez-vous de faire des recherches sur Stack Overflow avant de les poser ; cette question a été posée de nombreuses fois.

3 votes

Réponse obsolète

1 votes

@T.Todua Qu'est-ce qui est obsolète dans cette réponse ?

8voto

Capaj Points 575

Je pense qu'il manque une chose dans ce fil de discussion - juste un conseil sur lequel de tous les plugins de défilement est le meilleur. Si, par hasard, vous souhaitez mettre en œuvre le défilement via un plugin, le meilleur en 2014 est de loin le suivant Sly . Il a les meilleures performances et caractéristiques. Aucun autre ne s'en approche. Ne perdez pas de temps à choisir parmi des myriades de bibliothèques boguées et à moitié développées.

5voto

Ouadie Points 2802

J'ai essayé de nombreux plugins, mais la plupart ne sont pas compatibles avec tous les navigateurs. iScroll et nanoScroller fonctionne pour tous ces navigateurs :

  • IE11 -> IE6
  • IE10 - WP8
  • IE9 - WP7
  • IE Xbox One
  • IE Xbox 360
  • Google Chrome
  • FireFox
  • Opéra
  • Safari

Mais iScroll ne fonctionne pas avec le tactile !

Démonstration iScroll : http://lab.cubiq.org/iscroll/examples/simple/
Démonstration nanoScroller : http://jamesflorentino.github.io/nanoScrollerJS/

0 votes

Nano scroller ne prend pas en charge le défilement horizontal.

0 votes

Le repo est archivé github.com/cubiq/iscroll Je suggère de chercher d'autres alternatives

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X