J'ai un tableau simple qui est utilisé pour une boîte de réception comme suit:
<table border="1">
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
Comment définir la largeur de sorte que le début et la date représentent 15% de la largeur de la page et que le sujet soit 70%. Je veux également que le tableau occupe toute la largeur de la page.
html
css
html-table
alamodey
la source
la source
width attribute
; il utilise aCSS *style* width
, ce qui a remplacé l'attribut width <col>. (malgré les multiples votes positifs de ce commentaire !!)span="1"
est superflu puisque 1 est la valeur par défaut.HTML:
CSS:
La meilleure pratique consiste à garder votre HTML et CSS séparés pour moins de duplication de code et pour la séparation des préoccupations (HTML pour la structure et la sémantique et CSS pour la présentation).
Notez que, pour que cela fonctionne dans les anciennes versions d'Internet Explorer, vous devrez peut-être donner à votre table une largeur spécifique (par exemple, 900 px). Ce navigateur a quelques problèmes pour rendre un élément avec des dimensions en pourcentage si son wrapper n'a pas de dimensions exactes.
la source
Utilisez le CSS ci-dessous, la première déclaration garantira que votre table respecte les largeurs que vous fournissez (vous devrez ajouter les classes dans votre HTML):
la source
table{table-layout:fixed};.from,.date{width:15%}
suffit donc. À moins que les classes ne soient également utilisées sur d'autres éléments, l'écritureth.from
est redondante et peut être réduite à juste.from
.Autre moyen avec une seule classe tout en conservant vos styles dans un fichier CSS, qui fonctionne même dans IE7:
Plus récemment, vous pouvez également utiliser le
nth-child()
sélecteur de CSS3 (IE9 +), où vous venez de mettre le nr. de la colonne respective entre parenthèses au lieu de les enchaîner avec le sélecteur adjacent. Comme ça, par exemple:la source
:nth-child
solution proposée est horrible en termes de performances. Il n'y a aucune raison valable de l'utiliser (en particulier avec le sélecteur universel) dans cet exemple où il n'y a que trois éléments (th
oucol
) à styliser. De plus, il vous suffit de définir la largeur surth
la première ligne. Le.mytable td
premier exemple est redondant.tr
et ensuite s'ils appartiennent à.mytable
. Si vous voulez vraiment utiliser « nième » alors quelque chose comme ceci sera probablement beaucoup mieux:.mytable th:nth-of-type(1) {width: 15%}; .mytable th:nth-of-type(2) {width: 70%};
. Il n'est également pas nécessaire de spécifier la troisième largeur de colonne dans ce cas..mytable th+th{width: 70%}.mytable th+th+th{width:15%}
. Les "nième" sélecteurs eux-mêmes peuvent être très utiles mais dans ce cas particulier (un petit tableau avec seulement 3 colonnes) ne sont pas vraiment nécessaires. Lors de l' utilisation ,table-layout: fixed
vous pouvez même faire ceci:table{table-layout:fixed}th:first-child+th{width:70%}
.Ce sont mes deux suggestions.
Utilisation des classes. Il n'est pas nécessaire de spécifier la largeur des deux autres colonnes car elles seront définies automatiquement à 15% par le navigateur.
Sans utiliser de cours. Trois méthodes différentes mais le résultat est identique.
une)
b)
c) Celui-ci est mon préféré. Identique à b) mais avec une meilleure prise en charge du navigateur.
la source
En fonction de votre corps (ou de la div qui enveloppe votre table) les "paramètres", vous devriez pouvoir faire ceci:
Démo
la source
la source
Démo
la source
Essayez ceci à la place.
la source
N'utilisez pas l'attribut border, utilisez CSS pour tous vos besoins de style.
Mais l'incorporation de CSS comme ça est une mauvaise pratique - il faut utiliser des classes CSS à la place et mettre les règles CSS dans un fichier CSS externe.
la source
Voici une autre façon minimale de le faire en CSS qui fonctionne même dans les anciens navigateurs qui ne prennent pas en charge
:nth-child
et les sélecteurs similaires: http://jsfiddle.net/3wZWt/ .HTML:
CSS:
la source
Ajoutez colgroup après votre balise de table. Définissez ici la largeur et le nombre de colonnes. et ajoutez la balise tbody. Mettez votre tr à l'intérieur du corps.
la source
la source