[Ovillo] Lista de definición para una ficha

Gael gael en bdpcenter.com
Jue Ago 23 15:09:21 UTC 2007


Hola!

Me encuentro delante de un problema con una lista de definición. Tengo 
que escribir el XHTML y el CSS de una lista vertical de fichas de 
personas, plantas, animales o futbolistas (lo que más rabia os dé). Así 
que tengo una ul y, en cada li, una dl. Hasta aquí bien.

Las fichas constan del nombre, una foto y una descripción. El término 
"Nombre:" con el correspondiente nombre de la persona, planta o animal, 
ocupa todo el ancho de la lista. Debajo sólo aparecen la foto (sin el 
término "Fotografía:") a la izquierda en un bloque y la descripción 
(tampoco tiene el término "Descripción:") a su derecha.

Para que os hagáis una idea, he colgado un esquema aquí: 
http://img528.imageshack.us/img528/5343/esquemafd2.jpg

El marcado que encuentro más conveniente es el siguiente:

<ul>
  <li>
    <dl>
      <dt>Nombre:</dt><dd>Perico de los Palotes</dd>
      <dt>Fotografía:</dt><dd><img src="..." ... /></dd>
      <dt>Descripción:</dt><dd>Lorem ipsum bla bla bla...</dd>
    </dl>
  </li>
  <li>
    [...]
  </li>
</ul>

Ahora, ya no sé cuántas horas llevo con la hoja de estilos. He intentado 
dividir la lista por las guías rojas de la imagen anterior. Lo más 
parecido que he encontrado es lo siguiente:

- float: left; en todos los dt para que el dd quede a su derecha.
- una clase para los dt de la segunda línea con display: none; y que 
sólo se vea la foto y la descripción.
- float: left para el dd de la foto, para que la descripción quede a su 
derecha.

Pero si la descripción es más alta que la foto, el texto que sale por 
debajo se va hacia la izquierda (el dd de la foto no ocupa todo el 
alto). Esto es lo que mejor que he conseguido (por si queréis copiar y 
pegar):

XHTML:

<ul>
  <li>
    <dl>
      <dt>Nombre:</dt><dd>Perico de los Palotes</dd>
      <dt class="oculto">Fotografía:</dt><dd class="flotada"><img 
src="..." ... /></dd>
      <dt class="oculto">Descripción:</dt><dd>Lorem ipsum bla bla 
bla...</dd>
    </dl>
  </li>
</ul>


CSS:

ul {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

dl {
  margin: 0;
  padding: 0;
}

dt {
  float: left;
  margin: 0 7px 0 0;
  padding: 0;
  font-weight: bold;
}

dt.oculto {
  display: none;
}

dd {
  margin:0;
  padding:0;
}

dd.flotada {
  float: left;
  margin-right: 50px; /* para que quepa la foto */
}


Alguien puede echarme una mano, por favor? O a alguien se le ocurre una 
manera mejor de hacerlo? Me cuesta creer que sea tan complicado.

Muchas gracias y un saludo!


Gael



Más información sobre la lista de distribución Ovillo