aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/html/element/style/index.md
blob: 2cc4ed33b946122dc4137bbc202a760a21f66665 (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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
---
title: '<style> : l''élément d''information de style'
slug: Web/HTML/Element/style
tags:
  - Element
  - HTML
  - Reference
  - Web
translation_of: Web/HTML/Element/style
---
{{HTMLRef}}

L'élément HTML **`<style>`** contient des informations de mise en forme pour un document ou une partie d'un document. Par défaut, les instructions de mise en forme écrites dans cet élément sont écrites en [CSS](/fr/docs/Web/CSS).

{{EmbedInteractiveExample("pages/tabbed/style.html", "tabbed-standard")}}

L'élément `<style>` peut être inclus dans l'élément {{htmlelement("head")}} ou dans l'élément {{htmlelement("body")}} du document et les styles seront appliqués. Toutefois, il est recommandé de placer les styles dans l'élément` <head>` afin de clairement séparer la présentation du contenu autant que possible. La méthode idéale en ce sens consiste à utiliser des feuilles de style dans des fichiers externes et de les appliquer au document grâce à des éléments {{htmlelement("link")}}.

Si plusieurs éléments `<style>` et `<link>` sont appliqués au document, ils seront appliqués dans l'ordre dans lequel ils sont inclus dans le document. Aussi, vérifiez l'ordre afin d'éviter tout problème de cascade.

À l'instar des éléments `<link>`, les éléments `<style>` peuvent inclure des attributs `media` qui décrivent des [requêtes média](/fr/docs/Web/CSS/Requêtes_média) qui permettent d'appliquer des feuilles de styles selon certains critères provenant du média utilisé (la largeur de l'écran par exemple).

## Attributs

Cet élément inclut [les attributs universels](/fr/docs/Web/HTML/Attributs_universels).

- {{htmlattrdef("media")}}
  - : Cet attribut est [une requête média](/fr/docs/Web/CSS/Requêtes_média/Utiliser_les_Media_queries) qui indique le média auquel la mise en forme doit s'appliquer. Cet attribut est optionnel, la valeur par défaut est `all`.
- {{htmlattrdef("nonce")}}
  - : Un _nonce_ cryptographique utilisé pour inscrire les styles en ligne sur une liste blanche pour la règle [`style-src`](/fr/docs/Web/HTTP/Headers/Content-Security-Policy/style-src) de la CSP (_Content Security Policy_). Le serveur doit générer un nonce unique chaque fois qu'il transmet une règle de sécurité. Ce nonce ne doit pas pouvoir être deviné car sinon, il devient trivial d'outrepasser la règle de sécurité.
- {{htmlattrdef("type")}}
  - : Cet attribut définit le langage de la feuille de style sous la forme d'un type MIME (le jeu de caractères ne doit pas être indiqué). Cet attribut est optionnel, la valeur par défaut est `text/css`.
- {{htmlattrdef("title")}}
  - : Cet attribut indique un ensemble [de feuilles de style alternatif](/fr/docs/Web/CSS/Feuilles_de_style_alternatives).

### Attributs dépréciés ou obsolètes

- {{htmlattrdef("scoped")}} {{non-standard_inline}} {{obsolete_inline}}
  - : Cet attribut indique que les règles de mises en forme ne s'appliquent qu'aux éléments ayant le même élément parent que l'élément courant.

## Exemples

### Une feuille de style simple

#### HTML

```html
<!doctype html>
<html>
<head>
  <style>
    p {
      color: red;
    }
  </style>
</head>
<body>
  <p>Voici un paragraphe.</p>
</body>
</html>
```

#### Résultat

{{EmbedLiveSample('Une_feuille_de_style_simple', '100%', '60')}}

### Utiliser plusieurs éléments `<style>`

Dans cet exemple, on utilise deux éléments `<style>`, on peut voir comment les déclarations en conflit sont gérées : c'est le deuxième élément qui a la priorité si les [spécificités](/fr/docs/Apprendre/CSS/Introduction_à_CSS/La_cascade_et_l_héritage#Spécificité) sont égales car les feuilles sont appliquées dans l'ordre.

#### HTML

```html
<!doctype html>
<html>
<head>
  <style>
    p {
      color: white;
      background-color: blue;
      padding: 5px;
      border: 1px solid black;
    }
  </style>
  <style>
    p {
      color: blue;
      background-color: yellow;
    }
  </style>
</head>
<body>
  <p>Voici un paragraphe.</p>
</body>
</html>
```

#### Résultat

{{EmbedLiveSample('Utiliser_plusieurs_éléments_style', '100%', '60')}}

### Utiliser une requête média

Dans cet exemple (basé sur le précédent), on ajoute un attribut `media` sur le deuxième élément `<style>` afin que les règles correspondantes ne soient appliquées que si la largeur de la zone d'affichage (_viewport_) est inférieure à 500 pixels.

#### HTML

```html
<!doctype html>
<html>
<head>
  <style>
    p {
      color: white;
      background-color: blue;
      padding: 5px;
      border: 1px solid black;
    }
  </style>
  <style media="all and (max-width: 500px)">
    p {
      color: blue;
      background-color: yellow;
    }
  </style>
</head>
<body>
  <p>Voici un paragraphe.</p>
</body>
</html>
```

#### Résultat

{{EmbedLiveSample('Utiliser_une_requête_média', '100%', '60')}}

## Résumé technique

<table class="properties">
  <tbody>
    <tr>
      <th>
        <a href="/fr/docs/Web/HTML/Catégorie_de_contenu"
          >Catégories de contenu</a
        >
      </th>
      <td>
        <a href="/fr/docs/Web/HTML/Catégorie_de_contenu#Contenu_de_méta-données"
          >Contenu de métadonnées</a
        >.
      </td>
    </tr>
    <tr>
      <th>Contenu autorisé</th>
      <td>
        Du contenu textuel correspondant à l'attribut
        <code>type</code> (c'est-à-dire <code>text/css</code>).
      </td>
    </tr>
    <tr>
      <th>Omission de balises</th>
      <td>Les deux balises doivent être présentes.</td>
    </tr>
    <tr>
      <th>Parents autorisés</th>
      <td>
        Tout élément qui accepte du
        <a href="/fr/docs/Web/HTML/Catégorie_de_contenu#Contenu_de_méta-données"
          >contenu de métadonnées</a
        >.
      </td>
    </tr>
    <tr>
      <th scope="row">Rôles ARIA autorisés</th>
      <td>Aucun</td>
    </tr>
    <tr>
      <th>Interface DOM</th>
      <td>{{domxref("HTMLStyleElement")}}</td>
    </tr>
  </tbody>
</table>

## Spécifications

| Spécification                                                                                            | État                             | Commentaires                         |
| -------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------------------------------ |
| {{SpecName('HTML WHATWG', 'semantics.html#the-style-element', 'style')}}         | {{Spec2('HTML WHATWG')}} | Ajout de l'attribut `nonce`.         |
| {{SpecName('HTML5 W3C', 'document-metadata.html#the-style-element', 'style')}} | {{Spec2('HTML5 W3C')}}     | L'attribut `type` devient optionnel. |
| {{SpecName('HTML4.01', 'present/styles.html#h-14.2.3', 'style')}}                 | {{Spec2('HTML4.01')}}     |                                      |

## Compatibilité des navigateurs

{{Compat("html.elements.style")}}

## Voir aussi

- L'élément {{HTMLElement("link")}} qui permet d'utiliser des feuilles de style externes.