aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/css/overscroll-behavior/index.md
blob: 16e2cc10039d4b725a7df1f7febd0a16f27a2ddb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---
title: overscroll-behavior
slug: Web/CSS/overscroll-behavior
tags:
  - CSS
  - Propriété
  - Propriété raccourcie
  - Reference
translation_of: Web/CSS/overscroll-behavior
---
{{CSSRef}}

La propriété CSS **`overscroll-behavior`** est une propriété raccourcie permettant de définir les propriétés {{cssxref("overscroll-behavior-x")}} et {{cssxref("overscroll-behavior-y")}}. Ces propriétés contrôlent le comportement du navigateur lorsqu'on dépasse la limite d'une zone de défilement (_scrolling_).

Par défaut, les navigateurs mobiles fournissent un effet de rebondissement voire déclenchent un rafraîchissement de la page lorsqu'on défile jusqu'en haut ou jusqu'en bas de la page. Vous avez pu remarquer que, lorsqu'une boîte de dialogue possède du contenu qu'on peut faire défiler, si on atteint la limite de défilement pour ce contenu, c'est la page sous-jacente qui défilera sous la boîte de dialogue : c'est ce qu'on appelle **le chaînage du défilement** (_scroll chaining_).

Dans certains cas, ces effets ne sont pas souhaitables. On peut alors utiliser `overscroll-behavior` pour éviter les chaînages intempestifs et les comportements du type "défiler pour rafraîchir".

## Syntaxe

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

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

/* Valeurs globales */
overflow: inherit;
overflow: initial;
overflow: unset;
```

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

Lorsqu'on utilise cette propriété raccourcie avec deux valeurs, la première est utilisée pour `overscroll-behavior-x` et la seconde pour `overscroll-behavior-y`. Si une seule valeur est fournie, c'est cette même valeur qui est utilisée pour les deux propriétés.

### Valeurs

- `auto`
  - : Le dépassement de la zone de défilement se déroule normalement.
- `contain`
  - : Le comportement normal est utilisé à l'intérieur de l'élément pour lequel s'applique cette valeur (on a donc un effet de rebondissement) mais aucun effet associé n'a lieu sur les zones de défilement environnantes. Autrement dit, les éléments sous-jacents ne défilent pas.
- `none`
  - : Il n'y a pas d'effet associé sur les zones de défilement environnantes et on empêche le comportement normal de se produire sur l'élément lorsqu'on dépasse de la zone de défilement.

### Syntaxe formelle

{{csssyntax}}

## Exemples

Dans notre exemple sur [`overscroll-behavior`](https://mdn.github.io/css-examples/overscroll-behavior/) (cf. [le code source](https://github.com/mdn/css-examples/tree/master/overscroll-behavior) associé), on affiche une page entière de contacts et une boîte de dialogue avec une fenêtre de discussion.

![](example.png)

Ces deux zones possèdent du contenu qui entraîne leur défilement. Normalement, si on défile la fenêtre de discussion jusqu'à une limite de défilement, ce serait au tour de la liste de contacts de défiler en dessous. Cependant, cet effet n'est pas souhaitable ici. On utilise donc `overscroll-behavior-y` (`overscroll-behavior` fonctionnerait également) sur la fenêtre de discussion :

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

On souhaite également se débarasser des effets de bord lorsqu'on défile jusqu'en haut ou jusqu'en bas de la liste des contacts (Chrome pour Android rafraichit la page lorsqu'on défile après la limite haute par exemple). Pour cela, on utilise `overscroll-behavior: none` sur l'élément {{htmlelement("body")}} :

```css
body {
  margin: 0;
  overscroll-behavior: none;
}
```

## Spécifications

Jusqu'à ce que le CSSWG publie son propre brouillon, la spécification est consutable sur [le dépôt GitHub du WICG](https://wicg.github.io/overscroll-behavior/).

| Spécification                                                                                                                | État                                             | Commentaires |
| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | ------------ |
| {{SpecName('CSS Overscroll Behavior', '#propdef-overscroll-behavior', 'overscroll-behavior')}} | {{Spec2('CSS Overscroll Behavior')}} |              |

{{cssinfo}}

## Compatibilité des navigateurs

{{Compat("css.properties.overscroll-behavior")}}

## Voir aussi

- [Take control of your scroll: customizing pull-to-refresh and overflow effects (en anglais)](https://developers.google.com/web/updates/2017/11/overscroll-behavior#demo)
- {{cssxref("-ms-scroll-chaining")}}