complacido no pertenecer
Quiero diferentes estilos en cada columna de una tabla. He leído que podrías hacer eso usando <colgroup>
o <col>
, pero no tuve suerte. tengo un ejemplo aquí, y nada parece cambiar. ¿Estoy haciendo algo mal? ¿Funcionará esto en XHTML?
Sé que podría agregar un atributo de “clase” en cada <td>
pero eso parece débil.
Aarón Digulla
Eso es correcto. Mientras colgroup
en sí mismo es compatible con todos los navegadores, esto no es cierto para los atributos del interior col
elemento. De los posibles atributos, sólo width
es compatible con todos los navegadores. Pero a diferencia de CSS, <col width="">
solo admite anchos de píxeles y porcentajes.
No lo uses. En su lugar, cree clases CSS y asígnelas a cada td
. Sí, apesta.
-
¡gracias! parece que html5 hará que colgroup funcione… pero hasta entonces, usaré clases o el nth-child
– contento de no pertenecer
7 de septiembre de 2010 a las 12:54
-
La página a la que te refieres dice La etiqueta
es compatible con todos los navegadores principales Quizás deberías quitar la referencia, porque están desinformando a la gente. -Jannie Theunissen
14 de agosto de 2012 a las 12:36
-
Estoy de acuerdo con @JannieT, esto parece ser compatible con todos los principales navegadores. Ver: referencia.sitepoint.com/html/colgroup y webdesign.about.com/od/htmltags/p/bltags_colgroup.htm
-Michael La Voie
15/04/2013 a las 22:20
-
@MichaelLaVoie: Mientras que el elemento es compatible con todos los principales navegadores, el atributos no son compatibles en todas partes. En tu primer enlace, dice Un mejor enfoque es aplicar nombres de clase a los elementos colgroup respectivos, luego dejar que el estilo CSS se encargue de la alineación, los colores, el ancho, etc.
– Aarón Digulla
16 de abril de 2013 a las 8:12
-
@JannieT: De los atributos, solo
width
es compatible con todos los navegadores e incluso eso es muy limitado: solo permite un número (ancho de píxel) o un porcentaje.– Aarón Digulla
16 de abril de 2013 a las 8:15
John
Establecer su table-layout
a automático en lugar de fijo…
table {table-layout: auto;}
Mi sitio personal admite varios temas y veo este tipo de diferencias todo el tiempo.
-
Fantástica propiedad! 🙂 developer.mozilla.org/en-US/docs/Web/CSS/table-layout
–Volker E.
11 de junio de 2013 a las 20:33
Aquí hay un truco que usé que realmente funcionó bien. En un archivo css genérico (en todo el sitio) pongo:
.mytable td:nth-child(1) { width: var(--w1);}
.mytable td:nth-child(2) { width: var(--w2);}
.mytable td:nth-child(3) { width: var(--w3);}
.mytable td:nth-child(4) { width: var(--w4);}
y así sucesivamente hasta lo que consideré que era el número máximo de columnas en cualquier tabla que necesitaría en mi sitio.
Luego, en cada tabla, podría definir el ancho con un estilo como:
<table class="mytable" id="tbl1" style="--w1: 30px; --w2: 100px; --w3: 80px;">
Esto facilitó la configuración de los anchos de columna y además pude agregar código para cambiar el tamaño de las columnas, lo que simplemente tuvo que cambiar la propiedad de estilo en la tabla para la columna deseada. Esto evitó tener que hacer numerosas entradas CCS cada vez que quería definir los anchos de columna de una tabla. Para cambiar el ancho de una columna, podría usar algo como esto:
document.getElementById("tbl1").style.setProperty("--w2", "123px");
Lo anterior simplemente cambia el ancho de la columna 2 cambiando el valor de la variable –w2.
ramjamx
Puede usar selectores de CSS para obtener resultados similares sin agregar clases adicionales.
Como ejemplo, si desea dar un estilo específico a una segunda columna, puede usar:
table>tbody>td:nth-child(2){font-weight: bolder;}
Conejo blanco
En 2020, si desea diferentes estilos en las columnas, puede:
1. estilo/CSS
2. use th/td:nth-child(#number) en CSS (mi solución preferida, no tengo idea de lo que sucede con colspans)
3. agregue manualmente una clase a los elementos th/td
Referencias:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col
https://www.w3.org/TR/CSS22/tables.html#columns
Se supone que no debes usar el atributo HTML de “ancho”, en su lugar usa estilo/CSS. En el estilo/CSS para
Estoy confundido: w3 dice “La propiedad ‘ancho’ da el ancho mínimo para la columna”. lo que me parece contradictorio, dada la existencia de una propiedad de “ancho mínimo”. En Firefox 72 (Ubuntu)
<col style="width: 13em">
establece un ancho “fijo” (como esperaba). Si cambio el tamaño de la ventana, estrechándola, la columna cambia de tamaño y el contenido se envuelve en más líneas.
Conejo blanco
Así que acabo de tener este mismo problema… el verdadero problema es que incluso cuando se usa estilo/CSS en
- ancho
- fronteras
- colores de fondo
- visibilidad
Pedro Mortensen
Si realmente necesita usar etiquetas cols sin Reaccionar restricción entonces dangerouslySetInnerHTML
ayudará:
<colgroup dangerouslySetInnerHTML={{
__html: `
<col style="background: red;"/>
<col style="width: 20px;"/>
`
}}/>
Tenga en cuenta que si bien esto funciona, esta no es la forma recomendada de trabajar con React.