Scroll-margin - Propriété CSS

Cette page concerne aussi les propriété(s) physique(s) :
- scroll-margin-top
Définit les marges du haut de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
- scroll-margin-right
Définit les marges à droite de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
- scroll-margin-bottom
Définit les marges en bas de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
- scroll-margin-left
Définit les marges en haut de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
Et les propriétés logiques :
- scroll-margin-block
Définit les marges de la fenêtre de défilement pour le début et pour la fin des blocs.
- scroll-margin-block-start
Définit les marges de la fenêtre de défilement pour le début des blocs.
- scroll-margin-block-end
Définit les marges de la fenêtre de défilement pour pour la fin des blocs.
- scroll-margin-inline
Définit les marges de la fenêtre de défilement pour le début et pour la fin des lignes.
- scroll-margin-inline-start
Définit les marges de la fenêtre de défilement pour le début des lignes.
- scroll-margin-inline-end
Définit les marges de la fenêtre de défilement pour la fin des lignes.
scroll-margin

Résumé des caractéristiques de la propriété scroll-margin

Description rapide
Définit les marges de la fenêtre de défilement dans le contexte d'un défilement avec accrochages (Scroll Snap).
Statut
Standard
S'applique à
Tous les éléments.
Utilisable sur
HTML
Pourcentages
Ne s'appliquent pas.
Valeur initiale
0
Héritée par défaut
Non.
Computed value : lors d'une animation, la propriété scroll-margin passe progressivement d'une valeur à une autre.
Per grammar : sérialisation dans l'ordre de la syntaxe.
Module W3C
Module CSS - Défilement avec accrochages
Statut du document: CR (document candidat à la recommandation)

Schéma de la syntaxe de scroll-margin.

scroll-margin - Syntax DiagramSyntax diagram of the scroll-margin CSS property. See stylescss.free.fr for details. length length {1,4} {1,4}scroll-margin:;scroll-margin:;
Schéma syntaxique de la propriété scroll-margin.
Cliquez sur les liens du schéma pour plus de précisons sur les valeurs.

Description de la propriété scroll-margin.

La propriété scroll-margin est utilisable dans le contexte d'un défilement avec accrochages (Scroll Snap). Elle définit les marges autour des éléments d'accrochage. Reportez-vous à nos explications plus générales sur les défilements avec accrochages. La propriété s'applique aux éléments qui sont définis comme accrochages.

Ne confondez pas avec les marges classiques (voir margin) : celles-ci s'appliquent entre les éléments successifs. Tandis que les marges de défilement sont positionnées entre un élément et le bord du conteneur défilant.

Les exemples ci-dessous illustrent l'effet de la propriété scroll-margin. Ce sont deux conteneurs défilant avec accrochages. En faisant défiler les contenus vous constaterez que, en effet, le défilement s'arrête toujours sur une image positionnée en haut du conteneur. Dans le premier exemple, aucune marge de défilement n'a été définie : les images sont collées au début du conteneur, sans aucun espace, ce qui n'est pas très esthétique. Dans le deuxième exemple une marge de défilement est présente.

Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
 
 
Pas de marges de défilement
Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
 
 
Avec des marges de défilement

La propriété scroll-margin est une propriété résumée. Il est possible de définir individuellement chacune des marges avec les quatre propriétés ci-dessous. Ces propriétés sont dites "physiques" car elles sont indépendantes du mode d'écriture.

  • scroll-margin-top : Définit les marges du haut de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
  • scroll-margin-right : Définit les marges à droite de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
  • scroll-margin-bottom : Définit les marges en bas de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
  • Scroll-margin-left : Définit les marges en haut de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.


Voyez également les propriétés suivantes :

Gestion des débordements, lorsque le contenu est trop grand pour les dimensions imposées à l'élément.
Définit les principales caractéristiques d'un défilement avec accrochages (Scroll Snap). A appliquer sur un conteneur défilant.
Définit l'alignement des éléments servant d'accrochage par rapport à la fenêtre d'affichage (scroll Snap).
Permet de forcer l'arrêt d'un défilement sur certains éléments.
Définit les marges intérieures de la fenêtre de défilement.

Prise en charge du mode d'écriture.

Si le texte n'est pas en langue latine, il est recommandé d'utiliser plutôt les propriétés logiques, qui s'adaptent au mode d'écriture :

  • scroll-margin-block-start : correspond à la marge de défilement du haut pour les langues latines.
  • scroll-margin-block-end : la marge de défilement du bas pour les langues latines.
  • scroll-margin-inline-start : la marge de défilement de gauche pour les langues latines.
  • scroll-margin-inline-end : la marge de défilement de droite pour les langues latines.
  • scroll-margin-block : propriété résumée, définit les marges de début de bloc et de fin de bloc.
  • scroll-margin-inline : propriété résumée, définit les marges de début de ligne et de fin de ligne.

scroll-margin-top
scroll-margin-left
La direction et le sens d'écriture de ce texte s'adaptent à la langue choisie.
scroll-margin-right
scroll-margin-bottom

Valeurs pour scroll-margin.

  • scroll-margin: 20px; scroll-margin: 20px 10px; scroll-margin: 20px 10px 15px; scroll-margin: 20px 10px 15px 15px;

    Toutes les valeurs doivent être suivies d'une des unités de dimension. Les pourcentages ne sont pas autorisés. Quatre valeurs sont acceptées mais il est possible de ne pas les spécifier toutes. Voici comment sont affectées les valeurs en fonction de leur nombre :

    • Si une seule valeur est précisée, elle s'applique de façon identique aux quatre marges.
    • Si deux valeurs sont précisées, la première définit les marges haute et basse, et la deuxième valeur définit les marges gauche et droite.
    • Lorsque trois valeurs sont indiquées, elle définissent respectivement la marge du haut, les marges gauche et droite, la marge du bas.
    • Enfin, si les quatre valeurs sont précisées, elles définissent chacune des marges, dans l'ordre suivant : marge du haut, marge de droite, marge du bas, marge de gauche.
    Une seule valeur pour scroll-margin
    Une seule valeur
    Deux valeurs pour scroll-margin
    Deux valeurs
    Trois valeurs pour scroll-margin
    Trois valeurs
    Quatre valeurs pour scroll-margin
    Quatre valeurs

    Pour modifier une seule des marges, il est possible d'utiliser les propriétés individuelles (scroll-margin-top par exemple).

  • scroll-margin: initial; (0) scroll-margin: inherit; scroll-margin: revert; scroll-margin: revertLayer; scroll-margin: unset;

    Les valeurs communes sont présentées sur ces pages : initial, inherit, revert, revert-layer, unset.

Exemple d'animation de scroll-margin.

La propriété scroll-margin peut être animée, mais il semblerait que les navigateurs aient du mal à réaliser cet exploit : sur Firefox   l'animation ne se fait pas du tout ; sur Edge   et Chrome  , elle se fait de façon brutale, contrairement à ce que prévoit la spécification du W3C.

Visuellement, l'animation de scroll-margin fait varier le décalage entre le contenu et le conteneur défilant. Ce décalage est visible même en l'absence d'action de l'utilisateur pour faire défiler le contenu.

Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
Scroll-margin
 
 

Accéder à la propriété scroll-margin par programme.

Modifier les marges de défilement avec Javascript.

En Javascript, voici comment modifier les marges de défilement, autrement dit la valeur de scroll-margin. Il y a deux syntaxes, la première en utilisant le tableau des styles et la notation typique de CSS (le nom de la propriété écrit en kebab-case), et la deuxième, avec une notation objet et le nom de la propriété écrit en camel-case.

Javascript
let el = document.getElementById('id'); el.style['scroll-margin'] = '10mm'; // ou let el = document.getElementById('id'); el.style.scrollMargin = '10mm';

Avec Javascript, lire la valeur de scroll-margin.

Le code ci-dessous récupère la valeur de scroll-margin lorsque celle-ci a été définie dans le code HTML, avec l'attribut style, et non pas en passant par un sélecteur CSS.

Javascript
let el = document.getElementById('id'); let value = el.style['scroll-margin']; // ou let el = document.getElementById('id'); let value = el.style.scrollMargin;

Avec Javascript, lire la valeur calculée de scroll-margin.

La valeur calculée est celle soit celle qui est affecte directement à l'élément, via son attribut style ou via un sélecteur CSS, soit celle qui résulte de la cascade des héritages., soit encore, ce sera la valeur initiale de la propriété (0 pour scroll-margin). Dans tous les cas, la valeur calculée est définie.

Javascript
let el = document.getElementById('id'); let value = window.getComputedStyle(el).getPropertyValue('scroll-margin');

Avec JQuery, modifier la valeur de scroll-margin.

JQuery est une libraire qui est moins utilisé maintenant (en particulier à cause des nouvelles fonctionnalités de CSS). Nous donnons cependant les syntaxes pour écrire une valeur dans scroll-margin ou pour relire sa valeur calculée..

JQuery

$('#id').css('scroll-margin', '10mm');
// ou
$('#id').css('scrollMargin', '10mm');

Avec JQuery, lire la valeur calculée de scroll-margin.

JQuery
let value = $('#id').css('scroll-margin');

Testez vous-même.

Les boutons ci-dessous appliquent la valeur saisie à la propriété scroll-margin et affichent ensuite soit la valeur telle qu'elle a été appliquée, soit la valeur calculée. Cette deuxième option permet de voir comment est mémorisée (sérialisée) la valeur de scroll-margin. On constate en particulier que toutes les unités absolues ou relatives sont converties en pixels.

Compatibilité des navigateurs avec scroll-margin.

La prise en charge de la propriété scroll-margin est correcte sur tous les navigateurs actuels.

Colonne 1
Prise en charge du défilement par accrochages (lors de la manipulation des barres de défilement, le contenu s'arrête à des endroits pertinents).
Colonne 2
Support des propriétés scroll-margin-... qui définissent les marges laissées par l'élément d'accrochage avec le bord du contenu défilant.
1
Défilement avec
accrochages
2
Propriété
scroll-margin
Estimation de la prise en charge globale.
96%
95%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

UC Browser pour Androïd

Opéra Mobile

QQ Browser

Baidu Browser

Opéra

Samsung Internet

Firefox pour Androïd

Edge

Firefox

Chrome pour Androïd

Androïd Brower

Safari

Safari sur IOS

Chrome

KaiOS Browser

Opéra mini

Histoire de la propriété scroll-margin.

  • Module CSS - Défilement avec accrochages - Niveau 1

    Ce module de spécification définit les fonctionnalités concernant les défilements avec positions d'accrochage. Autrement dit les défilements calés par le contenu, pour éviter par exemple qu'une image se retrouve coupée en haut ou en bas de son conteneur.

    Concernant scroll-margin. Première présentation de la propriété scroll-margin.
    WD
    26 Mars 2015
    Document de travail.
    CR
    20 Octobre 2016
    Candidat à la recommandation.
    PR
    REC

Voir aussi, à propos des défilements avec accrochages.

Les défilements avec accrochage sont décrits dans le module Module CSS - Défilement avec accrochages. La propriété scroll-margin et toutes celles qui se rapporte au sujet sont également présentes dans ce module :

Propriétés :

Scroll-margin
Définit les marges de la fenêtre de défilement dans le contexte d'un défilement avec accrochages (Scroll Snap).
Scroll-margin-block
Définit les marges de la fenêtre de défilement pour le début et pour la fin des blocs.
Scroll-margin-block-end
Définit les marges de la fenêtre de défilement pour pour la fin des blocs.
Scroll-margin-block-start
Définit les marges de la fenêtre de défilement pour le début des blocs.
Scroll-margin-bottom
Définit les marges en bas de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
Scroll-margin-inline
Définit les marges de la fenêtre de défilement pour le début et pour la fin des lignes.
Scroll-margin-inline-end
Définit les marges de la fenêtre de défilement pour la fin des lignes.
Scroll-margin-inline-start
Définit les marges de la fenêtre de défilement pour le début des lignes.
Scroll-margin-left
Définit les marges en haut de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
Scroll-margin-right
Définit les marges à droite de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
Scroll-margin-top
Définit les marges du haut de la fenêtre de défilement dans le contexte d'un défilement avec accrochages.
scroll-padding
Définit les marges intérieures de la fenêtre de défilement.
scroll-padding-block
Définit la marge intérieure de la fenêtre de défilement, pour le début et la fin des blocs.
scroll-padding-block-end
Définit la marge intérieure de la fenêtre de défilement, pour le début des blocs.
scroll-padding-block-start
Définit la marge intérieure de la fenêtre de défilement, pour le début des blocs.
scroll-padding-bottom
Définit la marge intérieure du bas de la fenêtre de défilement.
scroll-padding-inline
Définit la marge intérieure de la fenêtre de défilement, pour le début et la fin des lignes.
scroll-padding-inline-end
Définit la marge intérieure de la fenêtre de défilement, pour la fin des lignes.
scroll-padding-inline-start
Définit la marge intérieure de la fenêtre de défilement, pour le début des lignes.
scroll-padding-left
Définit la marge intérieure à la gauche de la fenêtre de défilement.
scroll-padding-right
Définit la marge intérieure de droite de la fenêtre de défilement.
scroll-padding-top
Définit la marge intérieure du haut pour la fenêtre de défilement.
scroll-snap-align
Définit l'alignement des éléments servant d'accrochage par rapport à la fenêtre d'affichage (scroll Snap).
scroll-snap-stop
Permet de forcer l'arrêt d'un défilement sur certains éléments.
scroll-snap-type
Définit les principales caractéristiques d'un défilement avec accrochages (Scroll Snap). A appliquer sur un conteneur défilant.