Tengo una tabla simple que se usa para una bandeja de entrada de la siguiente manera:
<table border="1">
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
¿Cómo configuro el ancho para que Desde y Fecha sean el 15% del ancho de la página y el Asunto sea el 70%? También quiero que la tabla ocupe todo el ancho de la página.
html
css
html-table
alamodey
fuente
fuente
width attribute
; está utilizando aCSS *style* width
, que es lo que reemplazó al atributo de ancho <col>. (¡a pesar de que varias personas votaron por ese comentario!)span="1"
es superfluo ya que 1 es el valor predeterminado.HTML:
CSS:
La mejor práctica es mantener su HTML y CSS separados para una menor duplicación de código y para la separación de preocupaciones (HTML para estructura y semántica, y CSS para presentación).
Tenga en cuenta que, para que esto funcione en versiones anteriores de Internet Explorer, es posible que deba asignar un ancho específico a su tabla (por ejemplo, 900 px). Ese navegador tiene algunos problemas para representar un elemento con dimensiones porcentuales si su contenedor no tiene dimensiones exactas.
fuente
Use el CSS a continuación, la primera declaración asegurará que su tabla se adhiera al ancho que proporcione (necesitará agregar las clases en su HTML):
fuente
table{table-layout:fixed};.from,.date{width:15%}
es suficiente. A menos que las clases se utilicen también en otros elementos, la escriturath.from
es redundante y se puede acortar a justa.from
.De forma alternativa con solo una clase mientras mantiene sus estilos en un archivo CSS, que incluso funciona en IE7:
Más recientemente, también puede usar el
nth-child()
selector de CSS3 (IE9 +), donde simplemente pondría el nr. de la columna respectiva en el paréntesis en lugar de unirlos con el selector adyacente. Así, por ejemplo:fuente
:nth-child
solución propuesta es horrible en términos de rendimiento. No hay una razón válida para usarlo (especialmente con el selector universal) en este ejemplo donde solo hay tres elementos (th
ocol
) para diseñar. Además, solo necesita establecer el anchoth
en la primera fila. El.mytable td
en el primer ejemplo es redundante.tr
y luego si pertenecen.mytable
. Si realmente desea utilizar "enésimo", entonces algo como esto probablemente será mucho mejor:.mytable th:nth-of-type(1) {width: 15%}; .mytable th:nth-of-type(2) {width: 70%};
. Tampoco es necesario especificar el ancho de la tercera columna en este caso..mytable th+th{width: 70%}.mytable th+th+th{width:15%}
. Los "enésimos" selectores pueden ser muy útiles, pero en este caso particular (una tabla pequeña con solo 3 columnas) no son realmente necesarios. Cuando se utilizatable-layout: fixed
incluso se puede hacer precisamente esto:table{table-layout:fixed}th:first-child+th{width:70%}
.Estas son mis dos sugerencias.
Usando clases. No es necesario especificar el ancho de las otras dos columnas, ya que el navegador las establecerá en un 15% cada una automáticamente.
Sin usar clases. Tres métodos diferentes pero el resultado es idéntico.
una)
si)
c) Este es mi favorito. Igual que b) pero con mejor soporte de navegador.
fuente
Dependiendo de su cuerpo (o el div que está envolviendo su tabla) 'configuraciones', debería poder hacer esto:
Manifestación
fuente
fuente
Manifestación
fuente
Intenta esto en su lugar.
fuente
No use el atributo de borde, use CSS para todas sus necesidades de estilo.
Pero incrustar CSS de esa manera es una mala práctica: en su lugar, se deben usar clases de CSS y colocar las reglas de CSS en un archivo CSS externo.
fuente
Aquí hay otra forma mínima de hacerlo en CSS que funciona incluso en navegadores más antiguos que no son compatibles
:nth-child
y selectores similares: http://jsfiddle.net/3wZWt/ .HTML:
CSS:
fuente
Agregue colgroup después de su etiqueta de tabla. Defina el ancho y el número de columna aquí. y agregue la etiqueta tbody. Pon tu tr dentro de tbody.
fuente
fuente