web-dev-qa-db-fra.com

Pourquoi <script src = "min.js"> </script> mais <link rel = "stylesheet" href = "min"> pourquoi pas <style href = "min.css"> </style>

Un de mes parents qui a commencé à apprendre le développement Web m'a posé cette question.

Pourquoi <script src="min.js"></script> mais <link rel="stylesheet" href="min.css"> pourquoi pas <style href="min.css"></style> pourquoi nous utilisons la balise link pour ajouter des css externes dans la page, mais lorsque nous lions css à la page, mais nous utilisons <style>...</style> lorsque nous écrivons css à l'intérieur <head>?

Je lui ai dit que c'était à cause des spécifications. Y a-t-il d'autres informations à lui donner?

72
Jitendra Vyas

C'est historique ... une coïncidence? Vous pouvez lui recommander de lire partie sur Past of diveintohtml5.info , où il y a des histoires intéressantes, en fait des correspondances par courrier, entre les développeurs Web. Les développeurs Web signifient qu'ils étaient, en fait , en train de développer le Web que nous voyons de nos jours;)

C'est à dire. <img> tag nous sommes habitués à:

<IMG SRC="file://foobar.com/foo/bar/blargh.xbm">

pourrait être:

<ICON name="NoEntry" href="http://note/foo/bar/NoEntry.xbm">

ou

<A HREF="..." INCLUDE>See photo</A>

ou

<INCLUDE HREF="...">

mais enfin, les développeurs ont décidé de s'en tenir à <img>, qui était déjà implémenté :

Nous ne sommes pas prêts à prendre en charge INCLUDE/EMBED à ce stade. … Donc, nous allons probablement y aller (pas ICÔNE, car toutes les images en ligne ne peuvent pas être appelées des icônes). Pour le moment, les images intégrées ne seront pas explicitement de type contenu; d; sur la route, nous prévoyons de soutenir cela (avec l'adaptation générale de MIME). En fait, les routines de lecture d'images que nous utilisons actuellement déterminent le format d'image à la volée, donc l'extension du nom de fichier ne sera même pas significative.

Je ne sais pas de réponse directe à votre question, mais je suis assez curieux de savoir <link> tag aussi. Trouver la réponse comprendrait probablement des fouilles d'archives Web.

42
Xaerxess

Il y a une différence, du moins du point de vue du W3C.

Un élément <style> Introduit un bloc de règles CSS qui s'appliquent au document actuel. Cependant, les feuilles de style externes sont en fait considérées comme des documents entiers liés à la page actuelle, et les agents utilisateurs sont libres d'ignorer ces documents, en fonction de type et media attributs du lien. Par exemple:

<link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
<link rel="stylesheet" type="text/css" media="print" href="print.css" />

Dans cette situation, les agents utilisateurs ne suivraient généralement que l'un des liens, soit screen (pour le rendu normal) ou print (pour, enfin, l'impression). L'idée était de préserver la bande passante en téléchargeant uniquement la ressource appropriée, au lieu de tout récupérer et de filtrer le type de support ultérieurement.

Ceci est mentionné dans la spécification:

Lorsque l'élément LINK lie une feuille de style externe à un document, l'attribut type spécifie le langage de la feuille de style et l'attribut media spécifie le support ou le support de rendu prévu. Les agents utilisateurs peuvent gagner du temps en récupérant sur le réseau uniquement les feuilles de style qui s'appliquent au périphérique actuel.

26
Frédéric Hamidi

Ils ont tous deux une signification fondamentalement identique, et vous avez repéré une sorte d'incohérence dans HTML. La raison en est que les normes étaient basées sur les implémentations de différents navigateurs. Différents navigateurs ont trouvé les attributs dans les différentes balises, et le W3C a simplement décidé de conserver certaines des incohérences afin de maintenir la compatibilité descendante.

Éléments qui utilisent src: script img iframe input video frame

Éléments qui utilisent href: a link base

3
Peter Olson

La balise <link> Est utilisée pour "lier" d'autres documents au document actuel et décrire sa relation, ou rel, avec elle.

Vous pouvez également utiliser <link> Pour lier d'autres éléments au document. Par exemple, les favicons:

<link rel="shortcut icon" href="favicon.ico" />
1
Rocket Hazmat

Cela pourrait expliquer les choses, je suppose: http://www.w3.org/TR/html4/struct/links.html

1
Edgar

Raison possible de link ref vs style:

link ne peut aller que sur le head, où le "contenu de métadonnées" est autorisé, généralement head,

style ne pouvait pas aller dans le body avant HTML5 (maintenant vous pouvez avec scoped, mais toujours pas dans les styles externes). Par conséquent, le choix entre link ref et style src est arbitraire.

script, cependant, pouvait déjà inclure un script externe dans le body avant HTML5, donc il devait y avoir script src. Mais comme il devait exister, pourquoi ne pas l'autoriser également dans le head (où script était déjà autorisé), et interdire link rel=script pour éviter les doublons?