Outbook

HTML+CSS+JS, Accesibilidad, PHP y más

Datos de búsqueda

Categoría: ‘XHTML’

HTML: diferencias entre las DTD

Fecha de publicación: 2007/05/06

Son tres las DTD de HTML: Strict, Transitional y Frameset.

  • Strict (HTML 4.01 Strict): es la de uso recomendado, destinada a separación de presentación y contenido.
  • Transitional (HTML 4.01 Transitional): esta DTD permite el uso de elementos obsoletos, para documentos que no tengan una total separación de presentación y contenido.
  • Frameset (HTML 4.01 Frameset): para páginas con marcos. De todas formas los marcos son obsoletos.

Referencias y enlaces relacionados

CSS Sprites: rollover utilizando una sola imagen

Fecha de publicación: 2007/05/01

Actualizado 18 septiembre 2007

A veces para un elemento se define un fondo que cambia según el estado de dicho elemento.

¿Varios fondos suponen varias imágenes? No.

Pongamos por ejemplo un listado de enlaces en una barra de navegación vertical, en la que los enlaces de los elementos de lista (li) tienen tres fondos distintos:

  • El fondo de estado normal.
  • El fondo para estado hover (cuando se pasa sobre el enlace).
  • Y el fondo para el elemento de lista correspondiente a la página que se visualiza en este momento.

Se pueden crear esos fondos por separado, de forma que al cargar la página solo se descargarán el primer y el tercer fondo. El del estado hover se descargará cuando algún enlace sufra ese estado, por lo que al pasar el puntero sobre un enlace con ese fondo para el estado hover, el fondo no aparecerá de inmediato.

O se puede crear una imagen que contenga al mismo tiempo todos los fondos. Antes había tres reglas CSS para definir los fondos de los enlaces de los elementos de lista, y ahora también, con la diferencia que se pondrá la misma imagen en las tres reglas. La diferencia estará en el posicionamiento del fondo. Con la propiedad background-position (o en background) se seleccionará que parte de la imagen se mostrará como fondo. ¿Como? Jugando con posiciones negativas.

La imagen utilizada:

Imagen de ejemplo CSS sprites

Este es el XHMTL utilizado para la lista:

<ul>
 <li><a href="#">Opción 1</a></li>
 <li class="seleccionado"><a href="#">Opción 2</a></li>
 <li><a href="#">Opción 3</a></li>
 <li><a href="#">Opción 4</a></li>
 <li><a href="#">Opción 5</a></li>
</ul>

Y este el CSS:

ul {
list-style:none;
width:160px;
}

ul li a {
display:block;
width:142px;
height:18px;
line-height:18px;
padding-left:18px;
text-decoration:none;
background:#D4DDED url(bg_css_sprites.gif) no-repeat 0 0;
color:#003596;
font-weight:bold;
font-family:verdana,arial,sans-serif;
font-size:12px;
}

ul li.seleccionado a {
background:#CCE5A2 url(bg_css_sprites.gif) no-repeat 0 -18px;
color:#4A601C;
}

ul li a:hover {
background:#F8A1BE url(bg_css_sprites.gif) no-repeat 0 -36px;
color:#762938;
}

Ver ejemplo de CSS sprites.

Referencias y enlaces relacionados

CSS sprites

Recursos de apoyo

Datos del artículo:

HTML: uso del atributo accesskey

Fecha de publicación: 2007/04/17

Actualizado 2011-03-10.

¿En que elementos se usa?

Lo primero que hay que saber es en que elementos puede utilizarse el atributo accesskey:

  • a
  • area
  • button
  • input
  • label
  • legend
  • textarea

Excepto a y area se trata de elementos de formulario.

¿Cómo funciona?

Activando las teclas de acceso y pulsando la tecla de acceso (depende de cada navegador):

Pressing an access key assigned to an element gives focus to the element. The action that occurs when an element receives focus depends on the element. For example, when a user activates a link defined by the A element, the user agent generally follows the link. When a user activates a radio button, the user agent changes the value of the radio button. When the user activates a text field, it allows input, etc.

Comportamiento en distintos navegadores

  • Internet Explorer: ALT + [Tecla de acceso] y despues ENTER.
  • Firefox: ALT + MAYUSCULAS + [Tecla de acceso].
  • Opera: MAYUSCULAS + ESC para activar teclas de acceso, y después la tecla de acceso.
  • Chrome, Safari: ALT + [Tecla de acceso].

Se puede probar con la tecla de acceso 7. Enlace de prueba con la tecla de acceso 7.

Referencias y enlaces relacionados

Datos del artículo:

CSS: display run-in

Fecha de publicación: 2007/03/27

Para casos en los que el principio de un párrafo tenga importancia suficiente para ser un encabezado (h1-h6) en lugar de un mero strong.

¿Qué hacer para que un encabezado y un párrafo situado a continuación (p) aparezcan al mismo nivel (en la misma línea del texto)?

Definir una regla CSS con display: run-in;. Tiene la pega de funcionar solamente en Opera (probado en la versión 9.10), y parece ser que funciona de mala manera en Safari 1.3.2, y de muy mala manera en Internet Explorer 5.2 de Mac, lo que indica que su uso no es muy recomendable.

El código XHTML utilizado es el siguiente (yo he utilizado un h2, pero valen todos):

<h2>A run-in heading.</h2>
<p>And a paragraph of text that follows it.</p>

Aplicar la regla display con el valor run-in al encabezado, con el siguiente código CSS:

h2 {display: run-in;}
h2:after{content: ". ";} /*para no tener que incluir el punto en el encabezado*/
p {background:lime; margin-left:20px;
width:200px; display:block;}/*Para darle forma al ejemplo*/

Viendo el resultado la caja del encabezado queda insertada en la del párrafo, cosa que no ocurre si la regla aplicada al párrafo (la última de todas) se aplicase al encabezado.

Ver ejemplo.

Referencias y enlaces relacionados

Datos del artículo:

XHTML: Listas anidadas

Fecha de publicación: 2007/03/03

Las listas en XHTML pueden estar anidadas, usando al mismo tiempo diferentes tipos de listas (ver resultado en el navegador):

<dl>

<dt>Aplicaciones a utilizar:</dt>
<dd>
<ul>
 <li>Quanta</li>
 <li>The Gimp</li>
 <li>Mozilla Firefox</li>
</ul>
</dd>

<dt>Pasos a seguir:</dt>
<dd>
<ol>
 <li>Prototipado en papel de la interfaz y la estructura del sitio.</li>
 <li>Evaluar la usabilidad de los resultados obtenidos en los pasos anteriores.</li>
 <li>Escribir el código y crear las imágenes con las aplicaciones listadas.</li>
</ol>
</dd>

<dt>Nota:</dt>
<dd>Las aplicaciones utilizadas pueden variar.</dd>

</dl>

<dl>

Artículo relacionado: XHTML: creación de listas (odenadas, desordenadas y de definiciones).

Datos del artículo:

XHTML: creación de listas (ordenadas, desordenadas y de definiciones)

Fecha de publicación: 2007/03/01

Existen tres tipos de listas:

  • Listas desordenadas.
  • Listas ordenadas.
  • Listas de definiciones.

Listas desordenadas

Para crear listas desordenadas se utilizarán las etiquetas ul y li. Con la etiqueta ul se delimitará la lista, y con la etiqueta li se delimitarán los elementos de la lista.

Este es el código XHTML de una lista desordenada (ver resultado en el navegador):

<ul>
 <li>Elemento 1</li>
 <li>Elemento 2</li>
 <li>Elemento 3</li>
</ul>

Listas ordenadas

Se trata de listas numeradas. Funcionan de la misma forma que las ordenadas, pero cambiando la etiqueta ul por la etiqueta ol.

Este es el código XHTML de una lista ordenada (ver resultado en el navegador):

<ol>
 <li>Elemento 1</li>
 <li>Elemento 2</li>
 <li>Elemento 3</li>
</ol>

Listas de definiciones

Las listas de definiciones quedan delimitadas mediante la etiqueta dl. Cada elemento de la definición se divide en dos partes:

  • El término, delimitado por la etiqueta dt.
  • La definición delimitada por la etiqueta dd.

Este es el código XHTML de una lista de definiciones (ver resultado en el navegador):

<dl>
 <dt>Término 1.</dt>
 <dd>Texto asociado al término 1.</dd>

 <dt>Término 2.</dt>
 <dd>Texto asociado al término 2.</dd>

 <dt>Término 3.</dt>
 <dd>Texto asociado al término 3.</dd>
</dl>

Artículo relacionado: XHTML: Listas anidadas.

Referencia y enlaces relacionados

Datos del artículo:

CSS: Personalizar viñetas en listas desordenadas

Fecha de publicación: 2007/02/19

Cuando se quiere una viñeta personalizada para listas desordenadas en XHTML no hay más que crear la imagen para la viñeta, y después adaptar la hoja de estilo para hacer la personalización.

Primero hay que definir las reglas para la etiqueta ul:

ul {
padding-left: 0; /*Limpieza de márgenes (se puede cambiar)*/
margin-left: 36px; /*Indentado de la lista (se puede cambiar)*/
list-style-type: none; /*Quitar estilo de viñeta*/
}

Y después las reglas para la etiqueta li:

li {
background: url(imagen.gif) left center no-repeat;
margin-bottom: 10px;
padding-left: 15px;
}

Ver ejemplo de viñetas personalizadas

Si no dispones de una imagen o no se te ocurre como hacerla puedes encontrar un montón de imágenes en Bullet Madness (la imagen utilizadas en el ejemplo procede de ese sitio).

Datos del artículo:

Utilización apropiada de CSS y Javascript en documentos XHTML

Fecha de publicación: 2007/02/18

Documento basado en Properly Using CSS and JavaScript in XHTML Documents (Mozilla Developer Center), distribuido bajo licencia Creative Commons Reconocimiento-Compartir igual.

XHTML es XML, no HTML

Una de las principales confusiones con XHTML es considerarlo como una nueva versión de HTML, cuando en realidad se trata de XML.

XHTML debe llevar el tipo MIME text/xml o application/xhtml+xml.

XHTML tiene algunas peculiaridades:

  1. Los caracteres < y & no están permitidos, salvo dentro de secciones CDATA: <!CDATA...>.
  2. En los comentarios (<!-- ... -->) no deben incluirse guiones dobles: .
  3. El contenido incluido dentro de los comentarios puede ser ignorado.

Problemas con las etiquetas style y script

Las etiquetas style y script dentro del propio documento XHTML pueden causar problemas cuando es tratado como XML en lugar de HTML.

Javascript contiene caracteres no permitidos en XHTML

El lenguaje Javascript suele contener caracteres que no pueden existir en XHTML fuera de las secciones CDATA:

<script type="text/javascript">
var i = 0;
while (++i < 10) {      // ...    }
</script>

El ejemplo anterior no es XHTML correcto, puesto que contiene el caracter <, que solo es permitido para el marcado en XHTML o XML.

Uso de comentarios en las etiquetas style y script

Los desarrolladores que están familiarizados con HTML, habitualmente insertan esos estilos y scripts dentro de comentarios con el objetivo de ocultar sus contenidos a los navegadores que no los entiendan:

<style type="text/css">
<!--
body {background-color: blue; color: yellow;}
-->
</style>

<script type="text/javascript">
<!--
var i = 0;
var sum = 0;
for (i = 0; i < 10; ++i)    {      sum += i;    }
alert('sum = ' + sum);
// -->
</script>

Resultados en diferentes navegadores:

  • Mozilla 1.1 y Opera 7: no se aplican el CSS ni el Javascript.
  • Netscape 7.0x y Mozilla 1.0.x: no aplican el CSS, pero si el Javascript.
  • Internet Explorer 5.5+: no puede visualizar el documento.

Etiquetas style y script y guiones dobles

Este código causará problemas, debido a los guiones dobles dentro de los comentarios:

<script type="text/javascript">
<!--
var i;
var sum = 0;
for (i = 10; i > 0; --i)    {  sum += i;    }
// -->
</script>

Utilización de CDATA en lugar de comentarios

La forma apropiada para introducir un script es dentro de secciones CDATA, pero esto puede causar problemas en navegadores antiguos que no son capaces de entender XML. Sin embargo, es posible combinar comentarios con secciones CDATA, para asegurar la compatibilidad hacia atrás:

<script type="text/javascript">
//<![CDATA[
var i = 0;
while  (++i < 10)    {      // ...    }
//]]>
</script>

Ejemplos

Utilización de reglas CSS en la etiqueta style con comentarios

Ejemplo 1 – XHTML 1.0 Strict como text/html
Este ejemplo muestra el comportamiento del XHTML servido como text/html cuando las reglas CSS están contenidas dentro del documento y entre comentarios. Este ejemplo es soportado por Netscape 7.x, Mozilla, Opera 7 e Internet Explorer 5.5+, los cuales aplican las reglas CSS adecuadamente.
Ejemplo – XHTML 1.0 Strict como text/xml
Este ejemplo muestra la misma situación que el anterior con la diferencia de que el XHTML se sirve como text/xml. En este caso Internet Explorer 5.5+ falla, y Netscape 7.x, Opera 7 y Mozilla consideran que el contenido que hay dentro de los comentarios ha de ser ignorado.
Example 3 – XHTML 1.0 Strict como application/xhtml+xml
Este ejemplo muestra la misma situación que los anteriores con la diferencia de que el XHTML se sirve como application/xhtml+xml . Los navegadores se comportan de la misma forma que en el ejemplo 2.

Utilización de reglas CSS en un archivo externo

Ejemplo 4 – XHTML 1.0 Strict como text/html
Este ejemplo muestra el comportamiento del XHTML servido como text/html y con las reglas CSS en un archivo externo. Este ejemplo es soportado por Netscape 7.x, Mozilla, Opera 7 e Internet Explorer 5.5+.
Ejemplo 5 – XHTML 1.0 Strict como text/xml
Este ejemplo muestra el comportamiento del XHTML servido como text/xml con las reglas CSS en un archivo externo. Este ejemplo es soportado por Netscape 7.x, Mozilla, y Opera 7 pero no porInternet Explorer 5.5+.
Ejemplo 6 – XHTML 1.0 Strict como application/xhtml+xml
Este ejemplo muestra el comportamiento del XHTML servido como application/xhtml+xml con las reglas CSS en un archivo externo. Este ejemplo es soportado por Netscape 7.x, Mozilla, y Opera 7 pero no por Internet Explorer 5.5+.

Recomendaciones

No usar etiquetas script o style dentro de XHTML

La mejor forma de evitar el uso de estas etiquetas es la utilización de CSS y Javascript contenidos en archivos externos, de forma que no importará si el documento XHTML es servido como text/html, text/xml o application/xhtml+xml.

Seguir las pautas de compatibilidad de XHTML 1.0 con HTML

Las pautas de compatibilidad de XHTML 1.0 con HTML ayudarán a consegir documentos XHTML compatibles con navegadores antiguos sin soporte de XML.

Datos del artículo:

XHTML: categorización de los elementos OPTION en SELECT mediante OPTGROUP

Fecha de publicación: 2007/02/12

Cuando dentro de la etiqueta select hay muchos elementos option resulta muy interesante su categorización, pero con alguna etiqueta que permita que esas categorías no se puedan seleccionar. La solución es la etiqueta optgroup:

<select>

<optgroup label="Historia">
  <option value ="e_antigua">Edad Antigua</option>
  <option value ="e_media">Edad Media</option>
  <option value ="e_moderna">Edad Moderna</option>
</optgroup>

<optgroup label="Geografía">
  <option value ="europa">Europa</option>
  <option value ="america">América</option>
  <option value ="asia">Asia</option>
</optgroup>

</select>

Resultado del ejemplo:

Tiene dos atributos (aparte de los predeterminados), label, que es obligatorio, y deberá rellenarse con el texto que se quiere obtener, y disabled, cuyo valor será “disabled” (en XHTML todos los atributos han de tener un valor, por eso se repite).

Referencias

Datos del artículo:

XHTML: Etiquetas de énfasis (STRONG y EM)

Fecha de publicación: 2007/02/10

Se trata de etiquetas para marcar énfasis en las partes importantes de un texto.

La etiqueta strong

De las dos etiquetas es la que concede mayor importancia al texto contenido en ella.

Con frecuencia es confundida con la etiqueta b, que aparentemente conduce al mismo resultado (y escribiendo menos): tipografía en negrita.

La etiqueta strong es un estado lógico, y b es un estado físico. El estado lógico separa la presentación del contenido, por ello la presentación dependerá del navegador (strong suele representarse en negrita) o de la hoja de estilo CSS. Utilizando b no se da énfasis al texto, sino que se especifica que ese texto va en negrita: es un elemento de presentación visual.

Para conseguir un texto en negrita sin utilizar b se puede recurrir a las hojas de estilo:

.negrita {
  font-weight:bold;
}

La etiqueta em

Da menor énfasis que la etiqueta strong. Los navegadores suelen representar el texto que contiene en cursiva.

En la etiqueta em también hay lugar a la confusión, esta vez con la etiqueta i, que sirve para delimitar texto en cursiva, siendo, igual que la etiqueta b, un elemento de presentación.

Para conseguir texto en cursiva también se debe recurrir a las hojas de estilo:

.cursiva {
  font-style: italic;
}

Ejemplo de uso

Ejemplo de uso de las etiquetas de énfasis y de los estilos visuales en negrita y cursiva (con las clases CSS especificadas anteriormente):

<p>
En este párrafo hay texto con
<em>poco énfasis</em>,
texto con <strong>bastante énfasis</strong>,
texto <span class="cursiva">en cursiva</span>
y texto <span class="negrita">en negrita</span>.
</p>

Referencias

Datos del artículo:

Información del sitio