37 votes

Firefox 1 pixel bug avec border-collapse, solution de contournement?

Est-il une solution de contournement pour le suivant "1 pixel vers la gauche" bug?

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">                                   
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   
<body>
<div style="padding: 50px">
<div style="border: 1px solid red">Table header info</div>
<table style="border: 1px solid green; border-collapse: collapse; width: 100%">
	<tbody>
		<tr>
			<th>Col1</th>
			<th>Col2</th>
		</tr>
		<tr>
			<td>Hello</td>
			<td>World</td>
		</tr>
	</tbody>
</table>
<div style="border: 1px solid red">Table footer info</div>
</div>
</body>
</html>

Il ressemble à ceci:

Firefox CSS bug

Est-il un pur CSS solution à cela?


Modifier

J'était un peu confus au sujet de ma table donc, ici, il est à nouveau:

Avec border-collapse:

Firefox CSS bug

Avec cellspacing="0" et sans border-collapse comme l'a suggéré:

Firefox CSS bug

Alors maintenant, les frontières à l'intérieur de ma table sont doublés, mais je veux 1px frontière sur ma table.

Quand j'enlève 1px frontière à partir de la table je termine par:

Firefox CSS bug

Les frontières sont encore doublé à l'intérieur de ma table.

Je pouvais seulement à droite et en bas de la frontière pour chaque TD, TH et de la bordure gauche de chaque enfant dans les TR de réaliser ce que je veux, mais je pense qu'il y a un moyen plus simple?

BTW c'est un bug connu depuis 7 ans, il sera probablement corrigé dans la version 3.6 duh! Cas de Test est valide ici (prises de bugzilla de discussion).

18voto

Emily Points 6999

Enlever les border-collapse et l'utilisation cellspacing=0 à la place.

<table style="border: 15px solid green; width: 100%"  cellspacing="0">

Cela se produit parce que lorsque vous définissez border-collapse:collapse, Firefox 2.0 met de la frontière, à l'extérieur de la tr. Les autres navigateurs le mettre à l'intérieur.

Définissez vos largeurs de la bordure de 10px dans votre code pour voir ce qui se passe vraiment.


edit après l'OP modifier

Vous pouvez utiliser la vieille table de la "frontière" truc. Définir la couleur d'arrière-plan sur la table. Définir la td et th de couleur blanc. L'utilisateur cellspacing = 1;

table {background-color: green;width:100%;}
td, th{background-color:white;}

<div style="padding: 50px">
<div style="border: 1px solid red">Table header info</div>
<table cellspacing="1" >
        <tbody>
                <tr>
                        <th>Col1</th>
                        <th>Col2</th>
                </tr>
                <tr>
                        <td>Hello</td>
                        <td>World</td>
                </tr>
        </tbody>
</table>
<div style="border: 1px solid red">Table footer info</div>
</div>

2voto

chovy Points 8012

table {border-spacing: 0; border-collapse: effondrement; } / * fonctionne dans FF 3.5 * /

2voto

thartmann Points 11
 table { border-spacing: 0; *border-collapse: collapse; }
 

ne fonctionnait pas pour moi dans FF 31. Puisque j'ai différentes couleurs pour les cellules de tête et de corps, l'astuce de la couleur d'arrière-plan du tableau ne fonctionnait pas aussi. La seule solution était la suivante:

 table {
  border-collapse: separate;
}    
table tbody td {
  border: 1px solid #000;
  border-top: none;
  border-left: none;

  &:first-child {
    border-left: 1px solid #000;
  }
}
table thead th {
  border-bottom: 1px solid #ff0000;

  &:first-child {
    border-left: 1px solid #ff0000;
  }
  &:last-child {
    border-right: 1px solid #ff0000;
  }
}
 

0voto

Jonathan Sampson Points 121800

Je ne pense pas avoir jamais entendu parler d'un bug "1px vers la gauche", vous devriez télécharger votre code quelque part afin que nous puissions le vérifier et nous assurer qu'il ne s'agit pas d'un bug "J'ai raté quelque chose quelque part" :) Je suggérerais également exécuter votre balisage avec Firebug pour déterminer s'il y a autre chose qui ne va pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X