Est-ce que type = "text / css" est nécessaire dans une balise <link>?

195

Je me demandais s'il était nécessaire ou non d'utiliser <link rel="stylesheet" type="text/css" href=...>plus <link rel="stylesheet" href=...>. Les rel="stylesheet"marques les informations qu'il s'agit d'une feuille de style - donc text/cssn'ajoute rien en fait pour moi.

Le seul format de feuille de style utilisé par HTML est de toute façon CSS, alors qu'est-ce que text/css«dit» au navigateur? Certains sites Web semblent ajouter l' type="text/css"attribut ( http://www.jquery.com/ ), tandis que d'autres ne le font pas ( http://www.youtube.com/ ).

Alors, à quoi sert type="text/css"un <link rel="stylesheet">élément et est-il nécessaire de l'inclure?

pimvdb
la source
1
Il a peut - être été mis en œuvre pour agir comme solution de repli pour les serveurs qui ne renvoient pas le bon MIME-typesur les .cssfichiers, mais il semble qu'il était jamais nécessaire. Je l'utilise juste pour des raisons de cohérence.
drudge
Quelque chose que je viens de rencontrer, ne spécifiez pas type = "" ou IE ne chargera pas votre feuille de style.
mhenry1384
De nos jours, le site jquery.com ne l'utilise pas type="text/css", mais le site Stackoverflow l'utilise toujours.
Marco Demaio

Réponses:

153

Ce n'est pas obligatoire avec la spécification HTML5, mais pour les anciennes versions de HTML, c'est nécessaire.

Spécification Html 4 W3.org

http://www.w3.org/TR/html40/struct/links.html#edef-LINK http://www.w3.org/TR/html40/present/styles.html

Type signifie Le type MIME de la feuille de style. La seule valeur prise en charge que j'ai jamais vue est Text / CSS, ce qui explique probablement pourquoi HTML5 l'a abandonnée. J'imagine qu'ils l'avaient pour les versions antérieures pour permettre des possibilités d'extension futures qui ne se sont jamais produites.

En utilisant HTML5 et en ne spécifiant pas le type, je n'ai rencontré jusqu'à présent aucun problème de compatibilité, même lors du test d'anciennes versions d'IE.

Tom Gullen
la source
24
il peut être requis dans la spécification HTML4, mais aucun navigateur ne l'applique réellement.
Spudley
4
Eh
2
En fait, la spécification HTML4.01 ne semble pas exiger l' typeattribut.
Tous les travailleurs sont essentiels
31

Ce n'est pas obligatoire, non.

La partie du HTML Living Standard qui vous intéresse est L' linkélément , qui déclare:

Un linkélément doit avoir un relattribut ou un itempropattribut, mais pas les deux.

L' typeattribut donne le type MIME de la ressource liée. C'est purement consultatif. La valeur doit être une chaîne de type MIME valide.

Pour les liens de ressources externes, l' typeattribut est utilisé comme une indication aux agents utilisateurs ...

Alexmuller
la source
Que signifie "comme un conseil aux agents utilisateurs ..."? Que sont les «agents utilisateurs»?
ScottyBlades le
@ScottyBlades Bonne question! Un agent utilisateur est tout ce qui peut agir au nom d'un utilisateur pour télécharger (dans ce cas) du HTML. La plupart du temps, il s'agit d'un navigateur Web, mais il peut également s'agir d'un client terminal comme curl.
alexmuller le
7

HTML4.01 ne nécessite pas l' typeattribut sur une <link>balise. Selon la spécification, l' typeattribut est un indice pour le navigateur. Si le navigateur ne prend pas en charge le type de contenu suggéré, il peut ignorer sa récupération.

type = type de contenu [CI]

Cet attribut donne une indication sur le type de contenu du contenu disponible à l'adresse cible du lien. Il permet aux agents utilisateurs de choisir d'utiliser un mécanisme de secours plutôt que de récupérer le contenu s'ils sont informés qu'ils obtiendront du contenu dans un type de contenu qu'ils ne prennent pas en charge.

Les auteurs qui utilisent cet attribut assument la responsabilité de gérer le risque qu'il devienne incompatible avec le contenu disponible à l'adresse cible du lien.

  • REMARQUE: <link>renvoie à <a>la définition de l' typeattribut.
Tous les travailleurs sont essentiels
la source
1
C'est la réponse la plus utile => en gros: n'utilisez l'attribut type que si le navigateur ne prend pas en charge le type => inutile pour les fichiers standard Web comme CSS.
jave.web
4

Je crois comprendre que c'est pour permettre la spécification de feuilles de style dans des formats autres que texte / css.

Bien que ce soit devenu le format de livraison dominant (et standard) pour les feuilles de style pour les documents HTML (X), la spécification est en fait suffisamment large pour permettre la transmission d'une variété de types MIME différents, c'est juste que les navigateurs standard ne les implémentent pas.

GShenanigan
la source
1

Pas pertinent pour la plupart des gens, mais certains systèmes (au moins Microsoft SharePoint 2013) utiliseront cet attribut de type lors du traitement du HTML (par exemple lors de la création d'un fichier de page .master).

David Gilbertson
la source
-1

Non, cela signifie simplement le type MIME, il est obsolète en HTML, nous pouvons abandonner son utilisation sans aucune compatibilité de navigateur.

prasen sinha
la source