Me gustaría pedir algunos ejemplos simples que muestran los usos de <div>
y <span>
. Los he visto a ambos marcar una sección de una página con un id
o class
, pero estoy interesado en saber si hay momentos en que uno es preferido sobre el otro.
div
es un elemento de bloquespan
Es un elemento en línea .Esto significa que para usarlos semánticamente, los divs deben usarse para envolver secciones de un documento, mientras que los tramos deben usarse para envolver pequeñas porciones de texto, imágenes, etc.
<div>This a large main division, with <span>a small bit</span> of spanned text!</div>
<div>Some <span>text that <div>I want</div> to mark</span> up</div>
...es ilegal.
EDITAR: a partir de HTML5, algunos elementos de bloque se pueden colocar dentro de algunos elementos en línea. Consulte la referencia de MDN aquí para obtener una lista bastante clara. Lo anterior sigue siendo ilegal, ya que <span>
solo acepta contenido de fraseo y <div>
es contenido de flujo.
Usted pidió algunos ejemplos concretos, por lo que es uno tomado de mi sitio web de bolos, BowlSK :
<div id="header">
<div id="userbar">
Hi there, <span class="username">Chris Marasti-Georg</span> |
<a href="/edit-profile.html">Profile</a> |
<a href="https://www.bowlsk.com/_ah/logout?...">Sign out</a>
</div>
<h1><a href="/">Bowl<span class="sk">SK</span></a></h1>
</div>
h1
. La barra de usuario, al ser una sección, está envuelta en una div
. Dentro de eso, el nombre de usuario está envuelto en un span
, para que pueda cambiar el estilo. Como puede ver, también he envuelto span
alrededor de 2 letras en el título, esto me permite cambiar su color en mi hoja de estilo.
También tenga en cuenta que HTML5 incluye un nuevo conjunto amplio de elementos que definen estructuras de página comunes, como artículo, sección, navegación, etc.
La Sección 4.4 del borrador de trabajo de HTML 5 los enumera y da pistas sobre su uso. HTML5 sigue siendo una especificación funcional, por lo que nada es "final" todavía, pero es muy dudoso que alguno de estos elementos vaya a alguna parte. Hay un truco de JavaScript que necesitará usar si desea diseñar estos elementos en alguna versión anterior de IE: debe crear uno de cada elemento document.createElement
antes de especificar cualquiera de esos elementos en su fuente. Hay un montón de bibliotecas que se encargarán de esto por usted: una búsqueda rápida en Google mostró html5shiv .
div
yspan
semánticamente ya que no tienen ningún significado asociado a ellos.div
es un elemento de nivel de bloque genérico sin sentido, mientras quespan
es un elemento en línea genérico sin sentido.Solo por completo, los invito a pensarlo así:
<p>
es un párrafo, an<li>
es un elemento de la lista, etc., y se supone que debemos usar la etiqueta correcta para el propósito correcto, no como en los viejos tiempos cuando sangrado usando<blockquote>
si el contenido era una cita o no.<div>
y<span>
, de lo contrario, las personas volverían a abusar de los elementos que tienen significados.fuente
Aquí ya hay buenas respuestas detalladas, pero no hay ejemplos visuales, así que aquí hay una ilustración rápida:
<div>
es una etiqueta de bloque, mientras que<span>
es una etiqueta en línea.fuente
<div>
es un elemento a nivel de bloque y<span>
es un elemento en línea.Si desea hacer algo con un texto en línea, este
<span>
es el camino a seguir, ya que no introducirá saltos de línea como lo<div>
haría.Como han señalado otros, hay una semántica implícita con cada uno de estos, más significativamente el hecho de que a
<div>
implica una división lógica en el documento, similar a quizás una sección de un documento o algo, a la:fuente
La verdadera diferencia importante ya se menciona en la respuesta de Chris. Sin embargo, las implicaciones no serán obvias para todos.
Como elemento en línea,
<span>
solo puede contener otros elementos en línea. Por lo tanto, el siguiente código es incorrecto:El código anterior no es válido. Para ajustar elementos a nivel de bloque, se debe usar otro elemento a nivel de bloque (como
<div>
). Por otro lado,<div>
solo se puede usar en lugares donde los elementos a nivel de bloque son legales.Por otra parte, estas reglas se fijan en (X) HTML y que están no alterados por la presencia de reglas CSS! ¡Entonces los siguientes códigos también están mal!
fuente
La importancia del "elemento de bloque" está implícita pero nunca se declara explícitamente. Si ignoramos toda la teoría (la teoría es buena), la siguiente es una comparación pragmática. El seguimiento:
produce:
Eso demuestra que no sólo debe un div no ser usado en línea, simplemente no producirán el efecto deseado.
fuente
Como se menciona en otras respuestas, por defecto
div
se representará como un elemento de bloque, mientrasspan
que se representará en línea dentro de su contexto. Pero tampoco tiene ningún valor semántico; existen para permitirle aplicar un estilo y una identidad a cualquier parte del contenido. Usando estilos, puedes hacer undiv
acto comospan
ay viceversa.Uno de los estilos útiles para
div
esinline-block
Ejemplos:
http://dustwell.com/div-span-inline-block.html
Pantalla CSS: bloque en línea vs bloque en línea
He tenido
inline-block
mucho éxito en proyectos web de juegos.fuente
Div es un elemento de bloque y span es un elemento en línea y su ancho depende del contenido de sí mismo donde div no
fuente
Yo diría que si sabes un poco de español para mirar esta página , donde se explica correctamente.
Sin embargo, una definición rápida sería
div
dividir secciones yspan
aplicar algún tipo de estilo a un elemento dentro de otro elemento de bloque comodiv
.fuente
Solo quería agregar un contexto histórico a cómo surgió
span
vsdiv
Historia de
span
:- Fuente (w3 wiki)
Del borrador de RFC que introduce
span
:- Fuente (borrador de IETF)
Historia de
div
:Especificación HTML 3.2
En pocas palabras, ambos elementos surgieron de la necesidad de un contenedor más semánticamente genérico. Span fue propuesto como un reemplazo más genérico para un
<text>
elemento para dar estilo al texto. Div se propuso como una forma genérica de dividir páginas y tuvo el beneficio adicional de reemplazar la<center>
etiqueta por contenido de alineación central. Div siempre ha sido un elemento de bloque debido a su historial como divisor de página. Span siempre ha sido un elemento en línea porque su propósito original era el estilo de texto y hoy div y span han llegado a ser elementos genéricos con propiedades predeterminadas de bloque y visualización en línea respectivamente.fuente
En HTML hay etiquetas que agregan estructura o semántica al contenido. Por ejemplo, la
<p>
etiqueta se usa para identificar un párrafo. Otro ejemplo es la<ol>
etiqueta para una lista ordenada.Cuando no hay una etiqueta adecuada disponible en HTML como se muestra arriba, generalmente se recurre a las etiquetas
<div>
y<span>
.La
<div>
etiqueta se usa para identificar una sección / división de nivel de bloque de un documento que tiene un salto de línea tanto antes como después.Ejemplos de dónde se pueden usar etiquetas div son encabezados, pies de página, navegaciones, etc. Sin embargo, en HTML 5 estas etiquetas ya se han proporcionado.
La
<span>
etiqueta se usa para identificar una sección / división en línea de un documento.Por ejemplo, se puede usar una etiqueta span para agregar pictografías en línea a un elemento.
fuente
Recuerde, básicamente, y ellos mismos tampoco realizan ninguna función. Son no específica acerca de la funcionalidad con solo sus etiquetas .
Solo se pueden personalizar con la ayuda de CSS.
Ahora que viene a tu pregunta:
La etiqueta SPAN junto con un poco de estilo será útil para mantenerla dentro de una línea, digamos en un párrafo, en el html. Este es un tipo de nivel de línea o nivel de instrucción en HTML.
Ejemplo:
La funcionalidad de la etiqueta DIV, como se dijo anteriormente, solo se puede ver respaldada con estilo, puede tener grandes fragmentos de código HTML.
DIV es nivel de bloque
Ejemplo:
Ambos tienen su tiempo y su caso cuando deben usarse, según su requisito.
Espero estar claro con la respuesta. Gracias.
fuente