Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

overscroll-behavior

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2022.

La propriété raccourcie CSS overscroll-behavior définit le comportement d'un navigateur lorsqu'il atteint la limite d'une zone de défilement.

Exemple interactif

overscroll-behavior: auto;
overscroll-behavior: contain;
overscroll-behavior: none;
<section class="default-example" id="default-example">
  <div class="example-container">
    <div class="box">
      Ceci est un conteneur défilable. Le trimestre de Michaelmas est terminé,
      et le Lord Chancelier est assis dans le hall de Lincoln's Inn. Temps de
      novembre implacable. Autant de boue dans les rues que si les eaux venaient
      de se retirer de la surface de la terre.
      <br /><br />
      Lorem Ipsum a été le texte factice standard de l'industrie depuis les
      années 1500, lorsqu'un imprimeur inconnu a pris une galère de caractères
      et l'a brouillée pour créer un livre d'échantillons de caractères. Il a
      survécu non seulement à cinq siècles, mais aussi au passage à la
      composition électronique, restant essentiellement inchangé.
    </div>
    <div id="example-element">
      Ceci est le conteneur interne. Concentrez-vous sur ce conteneur, faites
      défiler jusqu'en bas et lorsque vous atteignez le bas, continuez à faire
      défiler.
      <p>
        Si vous avez sélectionné
        <code class="language-css">overscroll-behavior: auto;</code>, le
        conteneur externe commencera à défiler.
      </p>
      Si vous avez sélectionné
      <code class="language-css">overscroll-behavior: contain;</code>, le
      conteneur externe ne défilera pas à moins que vous ne déplaciez votre
      curseur en dehors du conteneur interne et que vous essayiez de faire
      défiler le conteneur externe.
    </div>
  </div>
</section>
.example-container {
  width: 35em;
  height: 18em;
  border: medium dotted;
  padding: 0.75em;
  text-align: left;
  overflow: auto;
  display: flex;
}

.box {
  width: 50%;
}

#example-element {
  width: 50%;
  height: 12em;
  border: medium dotted #1b76c4;
  padding: 0.3em;
  margin: 0 0.3em;
  text-align: left;
  overflow: auto;
  overscroll-behavior: contain;
}

Propriétés constitutives

Cette propriété est un raccourci pour les propriétés CSS suivantes :

Syntaxe

css
/* Valeurs avec un mot-clés */
overscroll-behavior: auto; /* Par défaut */
overscroll-behavior: contain;
overscroll-behavior: none;

/* Valeurs avec deux mots-clés */
overscroll-behavior: auto contain;

/* Valeurs globales */
overscroll-behavior: inherit;
overscroll-behavior: initial;
overscroll-behavior: revert;
overscroll-behavior: revert-layer;
overscroll-behavior: unset;

La propriété overscroll-behavior est définie avec un ou deux mots-clés parmi ceux de la liste ci-après.

Deux mots-clés définissent la valeur de overscroll-behavior sur les axes x et y respectivement. Si une seule valeur est spécifiée, les axes x et y sont supposés avoir la même valeur.

Valeurs

auto

Le comportement de dépassement de défilement par défaut se produit normalement.

contain

Le comportement de dépassement de défilement par défaut (par exemple, les effets de « rebondissement ») est observé à l'intérieur de l'élément où cette valeur est définie. Cependant, aucun enchaînement de défilement ne se produit sur les zones de défilement voisines ; les éléments sous-jacents ne défileront pas. La valeur contain désactive la navigation native du navigateur, y compris le geste de « tirer pour actualiser » vertical et la navigation par balayage horizontal.

none

Aucun enchaînement de défilement ne se produit vers les zones de défilement voisines, et le comportement de dépassement de défilement par défaut est empêché.

Description

Par défaut, les navigateurs mobiles ont tendance à fournir un effet de « rebondissement » ou même un rafraîchissement de la page lorsque le haut ou le bas d'une page (ou d'une autre zone de défilement) est atteint. Vous avez peut-être également remarqué que lorsque vous avez une boîte de dialogue avec du contenu défilant en haut d'une page qui a également du contenu défilant, une fois que la limite de défilement de la boîte de dialogue est atteinte, la page sous-jacente commence alors à défiler — cela s'appelle enchaînement de défilement.

Dans certains cas, ces comportements ne sont pas souhaitables. Vous pouvez utiliser overscroll-behavior pour vous débarrasser de l'enchaînement de défilement indésirable et du comportement de type « tirer pour actualiser » inspiré des applications Facebook/Twitter.

Notez que cette propriété s'applique uniquement aux conteneurs de défilement. En particulier, comme un <iframe> n'est pas un conteneur de défilement, définir cette propriété sur un cadre intégré n'a aucun effet. Pour contrôler l'enchaînement de défilement depuis un cadre intégré, définissez overscroll-behavior à la fois sur les éléments <html> et <body> du document du cadre intégré.

Définition formelle

Valeur initialeauto
Applicabilitéles éléments de bloc non remplacés et les éléments en bloc en ligne et en bloc (inline-block)
Héritéenon
Valeur calculéepour chaque propriété individuelle de la propriété raccourcie :
Type d'animationdiscrète

Syntaxe formelle

overscroll-behavior = 
[ contain | none | auto ]{1,2}

Exemples

Prévenir le défilement d'un élément sous-jacent

Dans notre exemple sur overscroll-behavior (angl.) (voir également le code source (angl.)), nous présentons une liste de contacts factices sur toute la page et une boîte de dialogue contenant une fenêtre de discussion.

Une fenêtre de discussion contextuelle intitulée 'Active chat', montrant une conversation entre Chris et Bob. Derrière la fenêtre de discussion se trouve une liste de contacts intitulée 'overscroll-behavior demo'.

Les deux zones peuvent défiler ; normalement, si vous faites défiler la fenêtre de discussion jusqu'à atteindre une limite de défilement, la fenêtre de contacts sous-jacente commencerait également à défiler, ce qui n'est pas souhaitable. Cela peut être empêché en utilisant overscroll-behavior-y (overscroll-behavior fonctionnerait également) sur la fenêtre de discussion, comme ceci :

css
.messages {
  height: 220px;
  overflow: auto;
  overscroll-behavior-y: contain;
}

Nous voulions également nous débarrasser des effets de dépassement de défilement standard lorsque les contacts sont défilés jusqu'en haut ou en bas (par exemple, Chrome sur Android actualise la page lorsque vous dépassez la limite supérieure). Cela peut être empêché en définissant overscroll-behavior: none sur l'élément <html> :

css
html {
  margin: 0;
  overscroll-behavior: none;
}

Spécifications

Spécification
CSS Overscroll Behavior Module Level 1
# overscroll-behavior-properties

Compatibilité des navigateurs

Voir aussi