2012-08-13 15 views
10

Chicos Soy programador y cuando necesito agregar algo que se ve como una tabla en el ojo y uso tablas html, siempre me gusta mi compañero web diseñadores. ¿Cómo puedo construir una estructura html div común para divs así puedo simplemente tenerla y siempre copiar pegar el html cuando necesito algo que se parece a una tabla?en lugar de tablas html use div .. ok pero las tablas son fáciles así que

Así, en el caso de esta estructura html tabla

<table> 
<tr><td></td><td></td></tr> 
<tr><td></td><td></td></tr> 
<tr><td></td><td></td></tr> 
</table> 

lo que es la estructura div similar?

Respuesta

15

Usted querrá utilizar la pantalla table, table-row y table-cell:

CSS:

.table 
{ 
    display:table; 
} 

.table-row 
{ 
    display:table-row; 
} 

.table-cell 
{ 
    display:table-cell; 
} 

HTML:

<div class="table"> 
    <div class="table-row"> 
     <div class="table-cell">1</div> 
     <div class="table-cell">2</div> 
    </div> 
    <div class="table-row"> 
     <div class="table-cell">3</div> 
     <div class="table-cell">4</div> 
    </div> 
</div> 

Demo

Tenga en cuenta que la table, table-row y table-cell los valores de visualización no son compatibles con IE7 o inferior y IE8 necesita un! DOCTYPE.

Además, las tablas se deben usar para representar datos tabulares, ya que le da al marcador un significado más semántico sobre un grupo de div con clases. Usted simplemente no debería usar tablas para propósitos de diseño.

+0

estructura Beutifull y como pruebo veo que puedo agregar más columnas y filas sin necesidad de editar el CSS todo el tiempo .. parece amuura perfecta – themis

+7

Si eres voy a copiar completamente toda la estructura y el diseño de una tabla, entonces creo que en la mayoría de los casos lo que realmente está buscando es una tabla. Especialmente si sigues nombrando tus clases "tabla", "tr", "td", etc. (vale, no exactamente, pero sí). Sin embargo, estoy de acuerdo en que 'display: table' puede ser extremadamente útil en los casos en que lo que se está diseñando no es semánticamente una tabla. Pero cambiar de 'table',' tr' y 'td'-elements a' div.table', 'div.tr',' div.td'-elements me parece casi inútil. – powerbuoy

+2

display: table-cell; No es compatible con IE7 e IE8 que IE8 necesite doctype? y qué tipo de doctype por favor? – themis

3

voy a utilizar los estilos en línea de simplicidad, pero no lo recomendaría en un proyecto real:

<div style="overflow: hidden"> 
    <div style="width: 50%; float: left"></div> 
    <div style="width: 50%; float: right"></div> 
    <div style="width: 50%; clear: both; float: left"></div> 
    <div style="width: 50%; float: right"></div> 
</div> 

Ésta es una de las muchas soluciones.

El bit overflow: hidden se usa para "borrar automáticamente" el contenedor div (sin él, el div no se ajustará alrededor de sus hijos flotados). La razón por la cual el tercer div aclara ambos es para que se renderice en su propia fila.

Editar: Dado que los divs tienen un ancho del 50%, no hay necesidad de flotar cada dos div a la derecha (puede flotarlos todos a la izquierda y se verá idéntico) pero si quiere un margen entre los divs puede simplemente cambie el ancho y todos los demás div estarán alineados a la derecha (lo que no sería el caso si todos estuvieran flotando hacia la izquierda).

Editar: Si de hecho está marcando los datos tabulares (como sugieren algunos comentarios), apóyate con el elemento de la tabla. Para eso está ahí. Debe absolutamente no simplemente cambie de table, tr y td a div s con las clases del mismo nombre.

8

Si está utilizando el elemento HTML table para datos tabulares, ¡entonces le recomiendo que vuelva a golpear a sus colegas diseñadores web!

Las tablas HTML no son malas, es aceptable & recomendado, para usar HTML table al mostrar datos tabulares.

http://webdesign.about.com/od/tables/a/aa122605.htm

+0

Leeré esto para mi defensa. lo tengo .. – themis

+0

Oh, absolutamente, si se trata de datos tabulares, definitivamente _deberías_ estar usando una tabla. – powerbuoy

+0

Además, cuando me hacen crear un boletín informativo, no escapan de las tablas, pero en el caso de los sitios web son realmente peludos con las tablas html ... Pero veo su punto ahora – themis

1

sugeriría a utilizar algún diseño como PowerBuoy sugerido pero ya que tendrá que adaptarse a la estructura de tamaño diferente en diferentes escenarios puede que desee utilizar un sistema de red en el CSS para centralizar la disposición de diseño .

.left { float:left; } 
.right { float: right } 
.onetenth { width: 10%; } 
.onetwentieth { width: 5%; } 

y así sucesivamente ...

te prometo que este enfoque reducirá su estilismo de una gran cantidad que resulta en un mayor rendimiento.

véase: https://github.com/stubbornella/oocss/wiki/ (CSS orientado a objetos)

+0

El CSS orientado a objetos se ve bien, lo leeré más adelante. Gracias otra vez Mutu – themis

+1

sí, no hay problema! Deberías buscar a Nicole Sullivan a quien pertenece el ejemplo. –

Cuestiones relacionadas