2008-09-14 15 views
28

¿Debería seguir usando tablas de todos modos?Usando CSS, ¿cuál es la mejor manera de mostrar los pares de valores de nombre?

código de la tabla estaría reemplazando es:

<table> 
    <tr> 
     <td>Name</td><td>Value</td> 
    </tr> 
    ... 
</table> 

Por lo que he estado leyendo que debería tener algo como

<label class="name">Name</label><label class="value">Value</value><br /> 
... 

Las ideas y los enlaces a las muestras en línea muy apreciados. Soy un desarrollador de mi profundidad de diseño.

EDITAR: Mi necesidad es poder mostrar los datos a un usuario y editar los valores en una forma separada (pero casi idéntica).

+0

¿Puedes explicar qué tipo de página es esa? P.ej. ¿es un formulario o tiene datos que deben mostrarse en una "tabla"? ;) – Till

+0

Buena idea, voy a editar ahora. –

+0

El título principal es engañoso, sería bueno si alguien pudiera editar para reflejar el hecho de que IainMH estaba hablando sobre el diseño de los campos de formulario. – andyuk

Respuesta

39

Creo que las listas de definición son semánticamente muy cercanas a los pares nombre/valor.

<dl> 
    <dt>Name</dt> 
    <dd>Value</dd> 
</dl> 

Definition lists - misused or misunderstood?

+0

El texto sangrará el valor y lo hará en una nueva línea Nombre Valor –

+0

Eso depende de la hoja de estilo. Eche un vistazo al enlace en mi respuesta y compruébelo usted mismo. – Espo

+0

Como dijo Espo, las listas de definiciones se pueden diseñar de la forma que desee. Puede anular fácilmente el estilo predeterminado de nueva línea/sangría. – macbirdie

6

Creo que las tablas se utilizan mejor para los datos tabulares, que parece que tiene allí.

Si no desea utilizar tablas, lo mejor sería usar listas de definiciones (<dl> and <dt>). A continuación, se indica cómo diseñarlos para que se vean como el diseño anterior de <td>. http://maxdesign.com.au/articles/definition/

0

utilizar el flotador: por ejemplo, la propiedad: css:

.left { 
    float:left; 
    padding-right:20px 
} 

html:

<div class="left"> 
Name<br/> 
AnotherName 
</div> 
<div> 
Value<br /> 
AnotherValue 
</div> 
+1

Este enfoque contiene un acceso deficiente ya que los nombres/valores no están juntos. También es un problema si se produce el ajuste de palabras ya que los nombres y valores quedarán fuera de alineación. –

4

Es perfectamente razonable utilizar tablas para lo que parece ser tabular datos.

+0

Pero no es una mesa. En los formularios web de ASP.NET, supongo que podría ser la diferencia entre GridView y DetailsView. –

2

Si estoy escribiendo una forma que suelen utilizar esto:

<form ... class="editing"> 
    <div class="field"> 
     <label>Label</label> 
     <span class="edit"><input type="text" value="Value" ... /></span> 
     <span class="view">Value</span> 
    </div> 
    ... 
</form> 

Luego, en mi css:

.editing .view, .viewing .edit { display: none } 
.editing .edit, .editing .view { display: inline } 

Luego, con un poco de JavaScript que puede cambiar la clase de la forma de la edición para ver.

Menciono este enfoque ya que quería mostrar y editar los datos con casi el mismo diseño y esta es una forma de hacerlo.

1

Me gusta macbirdie Me inclino a marcar datos como esto como una lista de definiciones a menos que el contenido de la tabla existente pueda juzgarse como realmente ser contenido tabular.

Evitaría usar la etiqueta de la manera que usted propone. Eche un vistazo a la explicación de la etiqueta @http://www.w3schools.com/tags/tag_label.asp - en realidad tiene la intención de permitirle concentrarse en el control asociado. También evite usar divs y tramos genéricos ya que desde un punto de vista semántico son débiles.

Si muestra varios pares de nombre-valor en una pantalla, pero solo edita uno en una pantalla de edición, usaría una tabla en la pantalla anterior y una lista de definiciones en la última.

8

listas de definiciones horizontales funcionan bastante bien, es decir

<dl class="dl-horizontal"> 
     <dt>ID</dt> 
     <dd>25</dd> 

     <dt>Username</dt> 
     <dd>Bob</dd> 
    </dl> 

La clase dl-horizontal es proporcionada por el marco Bootstrap CSS.

+0

Esto funciona muy bien si tienes el marco CSS bootstrap. –

Cuestiones relacionadas