Por qué pero por qué no


Un pariente mío que comenzó a aprender Desarrollo web me hizo esta pregunta.

¿Por qué <script src="min.js"></script> pero <link rel="stylesheet" href="min.css"> ¿por qué no <style href="min.css"></style> por qué usamos la etiqueta link para agregar css externo en la página pero cuando vinculamos css a la página pero usamos <style>...</style> cuando escribimos css dentro de <head>?

Le dije que es por Especificación. ¿Hay más información para darle?

6 answers

Es histórico... coincidencia? Puedes recomendarle que lea parte sobre el pasado de diveintohtml5.info, donde hay algunas historias interesantes, en realidad correspondencia por correo, entre desarrolladores web. Los desarrolladores web significa que estaban, de hecho, desarrollando la Web que vemos hoy en día;)

Es decir, <img> etiqueta estamos acostumbrados a:

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

Podría ser:

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

O

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

O

<INCLUDE HREF="...">

Pero finalmente los desarrolladores decidieron quedarse con <img>, que ya se ha implementado :

No estamos preparados para soportar INCLUDE/EMBED en este punto. So Así que estamos probablemente va a ir con (no ICONO, ya que no todos las imágenes en línea se pueden llamar iconos de manera significativa). Por el momento, las imágenes en línea no serán explícitamente de tipo de contenido; en el futuro, plan para apoyar que (junto con la adaptación general de MIME). En realidad, las rutinas de lectura de imágenes que estamos utilizando actualmente averiguar el formato de imagen sobre la marcha, por lo que el extensión de nombre de archivo ni siquiera será significativo.

No conozco la respuesta directa a tu pregunta, pero también tengo curiosidad por la etiqueta <link>. Encontrar una respuesta probablemente incluiría algunas búsquedas de archivos web.

 41
Author: Xaerxess,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-05 12:08:11

Hay una diferencia, al menos desde el punto de vista del W3C.

Un elemento <style> introduce un bloque de reglas CSS que se aplican al documento actual. Sin embargo, las hojas de estilo externas en realidad se consideran documentos completos relacionados con la página actual, y los agentes de usuario son libres de ignorar dichos documentos, dependiendo de los atributos type y media del enlace. Por ejemplo:

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

En esta situación, los agentes de usuario normalmente solo seguirían uno de los enlaces, ya sea el screen uno (para la representación normal) o el print uno (para, bueno, la impresión). La idea era preservar el ancho de banda descargando solo el recurso apropiado, en lugar de buscar todo y filtrar el tipo de medio más tarde.

Esto se menciona en la especificación:

Cuando el elemento LINK vincula una hoja de estilo externa a un documento, type atributo especifica el lenguaje de la hoja de estilo y el media atributo especifica el medio de renderizado deseado o los medios. Usuario los agentes pueden ahorrar tiempo al recuperar de la red solo aquellos estilos hojas que se aplican al dispositivo actual.

 24
Author: Frédéric Hamidi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-19 14:29:13

Ambos tienen un significado básicamente idéntico, y usted ha detectado una especie de inconsistencia en HTML. La causa de esto es que los estándares se basaban en las implementaciones de diferentes navegadores. Diferentes navegadores se les ocurrieron los atributos en las diferentes etiquetas, y el W3C simplemente decidió mantener algunas de las inconsistencias con el fin de mantener la compatabilidad hacia atrás.

Elementos que utilizan src: script img iframe input video frame

Elementos que utilizan href: a link base

 3
Author: Peter Olson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-19 14:15:40

Esto podría explicar las cosas, supongo: http://www.w3.org/TR/html4/struct/links.html

 1
Author: Edgar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-19 14:03:00

La etiqueta <link> se usa para "vincular" otros documentos al actual y describir su relación, o rel, con él.

También puede usar <link> para vincular otras cosas al documento. Por ejemplo, favicons:

<link rel="shortcut icon" href="favicon.ico" />
 1
Author: Rocket Hazmat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-19 14:05:59

Posible razón para link ref vs style:

link solo puede ir en el head, donde se permite "Contenido de metadatos", típicamente head,

style no se pudo ir en el body antes de HTML5 (ahora se puede con scoped, pero todavía no a estilos externos). Por lo tanto, la elección entre link ref y style src es arbitraria.

script, sin embargo, ya podría incluir un script externo en el body antes de HTML5, por lo que tenía que haber script src. Pero ya que tenía que existir, ¿por qué no permitirlo en el head también (donde script ya estaba permitido), y no permitir link rel=script para evitar la duplicación?

 1
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-11 09:08:18