8
votes

La largeur de l'attribut de table est ignorée

Mon objectif est de générer un fichier HTML avec des tables et d'exporter en PDF.
Malheureusement, je ne peux pas obtenir la table pour agir comme je veux.

Une partie de la table doit afficher une échelon de temps avec des jours de la rangée la plus basse, des semaines, des mois et des années dans les lignes ci-dessus et disposent d'un colspan pré-calculé.

Seuls les s pour les jours ont une largeur donnée avec CSS ( style = "largeur: ..." ).

Le problème est que la largeur est totalement ignorée, de sorte que les champs avec des jours de 1 à 9 ne sont que la moitié de la largeur que les autres. Et en suivant, car les champs ci-dessus sont automatiquement car ils n'ont aucune largeur donnée, leur taille est également fausse.

Texte alt http://img217.imageshack.us/img217/6617/scale1x .jpg

Heres la source générée: http://pastebin.com/jyiqhszs

Qu'est-ce que nous avons essayé jusqu'à présent:

  • utilisé non CSS ( largeur = "" )
  • Donnez également à l'autre champ une largeur calculée (la valeur Colspan multipliée avec la largeur d'une journée)

    Définir également style = "mise en page de table: fixe;" pour la table mais qui n'a aucun effet.

    Donc je ne sais pas comment obtenir la table pour avoir la largeur que je veux avoir?


0 commentaires

4 Réponses :


2
votes

Vous ne pouvez pas simplement spécifier "largeur = ...", vous devez modifier la façon dont l'élément CSS affiche ...

permet de supposer que nous voulons que la cellule soit 30px large: < Pré> xxx

Affichage: bloc; essentiellement indique au CSS qu'il doit redimensionner l'élément en fonction des dimensions données de largeur: et la hauteur: et non basée sur ce qui est réellement dans l'élément.

Cependant, il y a une petite préoccupation avec le fait que le Le contenu de l'élément peut s'étirer au-delà des limites spécifiées par la largeur et la hauteur, mais dans ce type de situation, je ne pense pas que cela va être un gros problème.

hth >


3 commentaires

Ça ne marche pas pour moi. Mais je dois dire que je n'ai édité que les dernières rangées ou dois-je modifier tout?


Appliquez le changement à toutes les cellules qui posent des problèmes, à défaut, ajoutez un remplissage: 0 2px 0 2px! Important; au style. Cela placera 2px Extra Space à gauche et à droite des cellules.


Après avoir téléchargé votre code depuis la Pastebin and Fiddling, je vois que l'ajout de rembourrage ne fonctionnera pas. Si vous pouvez passer à Colspan sur les cellules "mauvaises", cela devrait le faire, mais cela pourrait signifier avoir à éditer chaque cellule pour l'obtenir à droite.



17
votes

au lieu de largeur: 23PX Utiliser min-largeur: 23px . Cela a fonctionné pour IE8 et Firefox. Je n'ai pas encore compris une formule magique pour IE7 pour ne pas réduire les journées à un chiffre (y travailler). Je sais que le (code> layouche de table: fixe n'est pas nécessaire et certainement causer des problèmes avec tout affichage IE7 pouvant fonctionner.

En outre, si vous voulez toujours qu'ils soient de la même taille, vous pouvez envisager d'utiliser EM de sorte que si la taille du texte change, votre table s'écaille de haut / bas avec elle proportionnellement. Je ne connais pas tous vos besoins, mais juste une suggestion d'examiner.

éditer: plus de solution de navigateur croisée. IE6 et 7 doit avoir tous les numéros dans les cellules "jours" enveloppé avec un div , puis au lieu de coiffer le style < Code> TD avec n'importe quel type de largeur, style div avec un largeur: 23px pas min-largeur: 23px .


1 commentaires

min-largeur travaillé pour moi aussi. Il serait intéressant de savoir pourquoi largeur ne fonctionne pas.



3
votes

est l'attribut code> style code> mis en erreur en tant que stiglye code> dans votre page réelle, aussi?

Quelques astuces supplémentaires: p>

  • Il est normal que la cellule de table soit rétrécie si la table ne correspond pas à la page entière, c'est la façon dont les tables HTML fonctionnent. LI>
  • ESSAYEZ DISPONIBLE DE TABLE: FIXE CODE> Après avoir fixé la faute de frappe. LI>
  • Si cela ne fonctionne toujours pas, vous devez ajouter un div code> (ou un autre élément) à chaque cellule et donner la largeur à la place li>
  • Une largeur dans les pixels ne fonctionnera pas si la police n'est pas la taille que vous attendez (et non, vous ne pouvez pas le forcer à une taille spécifique). Essayez 2ex code>. Li>
  • au lieu de régler le style dans chaque td code> Pourquoi ne vous définissez pas dans la feuille de style. LI> ul>

    Exemple: P>

    <tr class="days"><td>1</td><td>2</td></tr>
    
    tr.days td {
      width: 23px;
    }
    


0 commentaires

0
votes

J'ai résolu le même problème sur un cas similaire en réglant la largeur dans le niveau code> à quelque chose d'un peu plus grand que le texte attendu, comme:

<td style="width:50em">


0 commentaires