¿Por qué los elementos div no están implicados?

HTML ha estado evolucionando durante mucho tiempo.

Inicialmente, HTML era solo una forma de marcar texto normal (“este texto está en negrita”, “este texto está en cursiva”, “este es un hipervínculo a otro documento con texto”). Luego comenzó a obtener más estructura visual (imágenes, tablas, etc.) que condujo a un montón de elementos nuevos.

Finalmente, las personas estaban diseñando sus páginas web creando tablas para diseñar contenido, similar a los periódicos, etc. Para acomodar a las personas en el diseño de sus páginas web más allá de piratear con tablas e imágenes, se creó CSS, que permitió a las personas agregar mucha variación a los elementos más allá de lo permitido a través de atributos (que en ese momento era la única forma de controlar la apariencia).

Una vez que se introdujo CSS (junto con los atributos de estilo y clase ), hubo por primera vez un caso de uso para elementos genéricos que no tenían un aspecto predefinido. Esto es cuando se introdujeron y

(división). Su único propósito era aplicarles estilos CSS, uno para texto en línea y otro para contenido de bloque. En aquel entonces,

era un elemento muy poderoso.

Una vez que se redactó HTML 5, los desarrolladores web comenzaron a exigir formas más semánticas para marcar su contenido. Aparecieron elementos como , y

ya no era muy importante.

Hoy el mundo web es muy diferente de lo que era. La gente apenas sabe sobre el elemento , o sobre el atributo bgcolor . Pero en aras de la compatibilidad con versiones anteriores, todavía existen. Y también lo hace

, incluso si ya no es realmente necesario.

Si desea escribir HTML realmente semántico, puede usar muchos de los nuevos elementos HTML 5 (hay

Div s existen para denotar una “división” de marcado. No tiene significado semántico.

¿Por qué lo usamos?
Hay dos razones por las que deberíamos usar el div, con la llegada de HTML5 y CSS3:

  1. Lograr la presentación de un contenido en particular no se puede hacer sin un contenedor Y
  2. No hay un elemento semántico apropiado para usar.

La especificación misma incluso dice:

Se recomienda encarecidamente a los autores que vean el elemento div como un elemento de último recurso.

Entonces, lo siento si es un último recurso, pero tendrás que culpar a los límites de CSS y al avance del lenguaje humano por eso.

Haciendo de todo un div

Me parece que lo único que tendría que suceder para que esto funcione en los navegadores es que los navegadores podrían comenzar a interpretar cada elemento sin una definición de elemento html existente que implique

ATA

Los Divs son elementos contenedores genéricos específicamente para el uso de elementos sin aplicarles ningún significado semántico, lo que los hace excelentes para anidar, agrupar y habilitar diseños que pueden requerir más que solo los elementos semánticos de su contenido para ser diseñados o estructurados como deseado. No desea aplicar el significado semántico cuando no lo desee, y los div son la solución (muy necesaria) para ese problema.

Si está buscando elementos genéricos implícitos en los que pueda invocar su propia semántica utilizando cualquier nombre de “clase” que se le ocurra, lo que está hablando es XML. Ya funciona exactamente así, y es bastante popular para muchas cosas, especialmente la transferencia de datos. Sin embargo, se ha demostrado que es menos popular y utilizable para la creación de páginas web, donde la familiaridad con el suministro relativamente limitado de elementos fue algo que hizo que aprender, descubrir y comprender HTML fuera mucho más accesible.

No hay mucho beneficio de hacer que los divs estén implícitos y tener elementos de cualquier nombre de la forma en que XML lo hace, porque eso hace que la tecnología de asistencia entienda mucho más la semántica de su contenido. Estas herramientas, utilizadas por personas con una gran variedad de discapacidades, se basan en un alcance de semántica consistente y predecible para ayudar a explicar y diferenciar el contenido para sus usuarios. Cuando todos y cada uno de los elementos pueden ser significativos o no, comparativamente, pero no se sabe cuál es, las páginas web se vuelven inutilizables e inaccesibles para grandes grupos de personas.

Entonces, la respuesta a su pregunta de por qué esto no ha sucedido, ni lo hará, es que no mejora la estructura o el contenido de la web; solo lo empeora.

Un div implícito podría parecer tener más claridad en este momento congelado, pero hacer una suposición a largo plazo basada en el uso actual sería un caso clásico de optimización prematura.

Algunos pensamientos dispersos sobre por qué esto es así:

– las clases no son identificadores. Un div, como cualquier otro elemento, puede tener múltiples clases aplicadas. ¿Cómo sería eso en esta nueva sintaxis? Estarías reemplazando la verbosidad con la complejidad. No es una buena compensación.

– susurros, “(ya lo tenemos)” Hecho disimulado: los navegadores siempre han podido diseñar etiquetas no válidas. Al menos ya en HTML3.2, uno podría mezclar bits aleatorios de XML básico y aún tener CSS reconocerlos en la cascada de estilo. Más tarde, a medida que XHTML se hizo popular, uno podía usar DTD y XSL para personalizar legalmente su marcado. No he probado esto en ningún navegador moderno porque ahora me estoy ahogando en una semántica HTML5 + no estructurada, pero apuesto a que todavía funciona.

– Rompe la compatibilidad futura. Entonces Chrome 52 decide agregar su propia etiqueta de propuesta html6 llamada ““, ¿cómo se supone que Chrome 51 distinga entre

y ? Para el caso, ¿qué hace IE 11.5 con él ya que su contrapropuesta HTML6 es ““?

– componentes web. Están llegando y tienen numerosos rellenos de código abierto de JavaScript disponibles en este momento. Por lo tanto, esencialmente podría escribir

Semántica. Si pudieras definir un elemento como ese, habría 400 elementos, todos con diferentes estilos y nombres diferentes. Ahora hay etiquetas

, etiquetas

El elemento HTML

(o Elemento de división de documento HTML) es el contenedor genérico para el contenido de flujo, que no representa nada inherentemente. Se puede usar para agrupar elementos con fines de estilo (usando los atributos de clase o id), o porque comparten valores de atributo, como lang. Debe usarse solo cuando ningún otro elemento semántico (como o

El punto es que los divs son genéricos y, por lo tanto, pueden usarse para una gran cantidad de propósitos.

No tengo la razón, pero tengo la solución. Si solo quiere omitir tener que escribir divs todo el tiempo, simplemente consulte jade. Jade es html lo que sass es css. En jade, la etiqueta predeterminada implica ser un div, por lo tanto:

.hero ¡Hola! se convierte en

¡Hola!