Usando CSS, ¿cómo puedo diseñar lo siguiente:
<dl>
<dt>Mercury</dt>
<dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
<dt>Venus</dt>
<dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
<dt>Earth</dt>
<dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
</dl>
Entonces, ¿el contenido del dt
programa en una columna y el contenido del programa dd
en otra columna, con cada uno dt
y el correspondiente dd
en la misma línea? Es decir, producir algo que se parece a:
Respuestas:
fuente
clear: left
estilo dt para garantizar que permanezcan en línea, incluso si necesitan ajustarse.* { ... }
declaración hace que todo pierda el margen y el relleno, y eliminarlo distorsiona el DL. Usar una clase tampoco funcionará. Parece que si quiero algo más que el DL, tendré que ir sin márgenes y rellenos en todas partes ... ¿O?¡Tengo una solución sin usar flotadores! mira
esto en codepen
Verbigracia.
Actualización - 3 rd Ene 2017 solución basada He añadido flex-caja para el problema. Verifique eso en el codepen vinculado y refínelo según las necesidades. ¡Gracias!
fuente
Diseño de cuadrícula CSS
Para cambiar el tamaño de las columnas, eche un vistazo a la
grid-template-columns
propiedad.fuente
Si usa Bootstrap 3 (o anterior) ...
fuente
dl-horizontal
realidad, se eliminó de Bootstrap 4. En BS4, debe usar clases de cuadrícula en su lugar.Suponiendo que conoce el ancho del margen:
fuente
Debido a que aún no he visto un ejemplo que funcione para mi caso de uso, esta es la solución más completa que pude darme cuenta.
Por extraño que parezca, no funciona
display: inline-block
. Supongo que si necesita establecer el tamaño de cualquiera de losdt
elementos odd
elementos, puede configurar ladl
visualización de ladisplay: flexbox; display: -webkit-flex; display: flex;
y laflex
abreviatura de losdd
elementos ydt
elementos como algo asíflex: 1 1 50%
comodisplay
comodisplay: inline-block
. Pero no lo he probado, así que acércate con precaución.fuente
Ver demostración de jsFiddle
Necesitaba una lista exactamente como se describe para un proyecto que mostraba a los empleados de una empresa, con su foto a la izquierda e información a la derecha. Me las arreglé para lograr la limpieza usando psuedo-elements después de cada
DD
:Además, quería que el texto solo se mostrara a la derecha de la imagen, sin ajustarse debajo de la imagen flotante (efecto de pseudocolumna). Esto se puede lograr agregando un
DIV
elemento con el CSSoverflow: hidden;
alrededor del contenido de laDD
etiqueta. Puede omitir este extraDIV
, pero el contenido de laDD
etiqueta se ajustará debajo del flotanteDT
.Después de jugar un rato, pude soportar múltiples
DT
elementos porDD
, pero no múltiplesDD
elementos porDT
. He intentado añadir otra clase opcional para borrar sólo después de la últimaDD
, pero subsiguientesDD
elementos envueltos bajo losDT
elementos (no es mi efecto deseado ... yo quería que elDT
yDD
los elementos de las columnas de formulario y el extraDD
elementos eran demasiado ancho).Por todos los derechos, esto solo debería funcionar en IE8 +, pero debido a una peculiaridad en IE7, también funciona allí.
fuente
Aquí hay otra opción que funciona mostrando dt y dd en línea y luego agregando un salto de línea después de dd.
Esto es similar a la solución anterior de Navaneeth, pero usando este enfoque, el contenido no se alineará como en una tabla, pero el dd seguirá al dt inmediatamente en cada línea, independientemente de la longitud.
fuente
Necesito hacer esto y tener el
<dt>
contenido centrado verticalmente, en relación con el<dd>
contenido. Solíadisplay: inline-block
, junto convertical-align: middle
Ver ejemplo completo en Codepen aquí
fuente
Dependiendo de cómo diseñe los elementos dt y dd, puede encontrar un problema: hacer que tengan la misma altura. Por ejemplo, si desea un borde visible en la parte inferior de esos elementos, lo más probable es que desee mostrar el borde a la misma altura, como en una tabla.
Una solución para esto es hacer trampa y hacer de cada fila un elemento "dl". (esto es equivalente a usar tr en una tabla) Perdemos el interés original de las listas de definiciones, pero por el contrario, esta es una manera fácil de obtener pseudo-tablas que tengan un estilo rápido y bonito.
EL CSS:
EL HTML:
fuente
quatreVingtCinqPts
? :)He encontrado una solución que me parece perfecta, pero necesita
<div>
etiquetas adicionales . Resulta que no es necesario usar la<table>
etiqueta para alinear como en una tabla, es suficiente usardisplay:table-row;
ydisplay:table-cell;
estilos:fuente
dl
s solo se les permite tenerdt
s ydd
s como hijos.dt
s solo puede tener elementos en línea como elementos secundarios.dd
s, por alguna razón, puede tener elementos de nivel de bloque como elementos secundarios.DI
elemento, como yo . Pero con cualquier elemento de este tipo, no necesita nada esotérico como tablas CSS ... De todos modos, ese elemento no existe, por lo que no debe usarlo.run-in
CSSdisplay
es exactamente lo que quiero (en mi caso, quiero listas simples de metadatos de nombre-valor).Recientemente necesité mezclar pares dt / dd en línea y no en línea, especificando la clase
dl-inline
en los<dt>
elementos que deberían seguir los<dd>
elementos en línea .fuente
Esto funciona en IE7 +, cumple con los estándares y permite diferentes alturas.
Ver el JSFiddle .
fuente
esto funciona para mostrarlos como tabla, con borde, debe responder con 3em del ancho de la primera columna. El ajuste de palabras solo divide cualquier palabra más que la columna
Comparación de
<table>
con<dl>
:fuente
Normalmente comienzo con lo siguiente cuando las definiciones de estilos se enumeran como tablas:
fuente
La mayoría de lo que la gente aquí sugirió funciona, sin embargo, solo debe colocar el código genérico en la hoja de estilo y colocar el código específico en el código html como se muestra a continuación. De lo contrario, terminará con una hoja de estilo hinchada.
Así es como lo hago:
Su código de hoja de estilo:
Tu código html:
Se ve como esto
fuente