2010-03-23 2 views
1

J'ai des difficultés à obtenir une balise span pour fonctionner correctement dans une table. Il semble que l'ensemble de la balise span est ignorée et est définie n'importe où entre les balises de table dans Firefox, mais dans IE cela s'affiche correctement. Peut-être qu'il me manque quelque chose, mais j'ai créé un petit exemple de fichier CSS et html qui affiche différemment dans Firefox et Internet Explorer. J'espère que quelqu'un peut me dire pourquoi il se comporte de cette façon ou comment je peux réorganiser le code HTML pour résoudre le problème dans Firefox.Firefox et IE - Gestion de Firefox de <span> tables interieures (html et css)

--- --- main.css

.class1 A:link {color:#960033; text-decoration: none} 
.class1 A:visited {color:#960033; text-decoration: none} 
.class1 A:hover {color:#0000FF; font-weight: bold; text-decoration: none} 
.class1 A:active {color:#0000FF; font-weight: bold; text-decoration: none} 

.class2 A:link {color:#960033; text-decoration: none} 
.class2 A:visited {color:#960033; text-decoration: none} 
.class2 A:hover {color:#0000FF; text-decoration: none} 
.class2 A:active {color:#0000FF; text-decoration: none} 

--- --- test.htm

<HTML> 
<HEAD> 
<title>Title Page</title> 
<style type="text/css">@import url("/css/main.css");</style> 
</HEAD> 

<span class="class1"> 
<BODY> 

<table><tr><td> 
---Insert Hyperlink---<br> 
</td></tr> 

</span><span class="class2"> 

<tr><td> 
---Insert Hyperlink---<br> 

</td></tr></table> 

</span> 
</BODY> 
</HTML> 
+1

http://validator.w3.org/ – Quentin

+0

Gawd, un tel gâchis ... il serait difficile d'écrire ce balisage mal. Je recule particulièrement au qui commence avant le (!) Et se termine avant le! – Robusto

Répondre

3

Vous ne pouvez pas avoir une portée il y a la réponse courte, seulement un <tr>

<body> doit contenir vos éléments, rien que <html> doit contenir <body>

Ce que vous êtes est probablement après:

<html> 
<head> 
    <title>Title Page</title> 
    <style type="text/css">@import url("/css/main.css");</style> 
</head> 
<body> 
    <span class="class1"> 
    <table> 
     <tr> 
     <td>---Insert Hyperlink---<br></td> 
     </tr> 
    </table> 
    </span> 
    <span class="class2"> 
    <table> 
     <tr> 
     <td>---Insert Hyperlink---<br></td> 
     </tr> 
    </table> 
    </span> 
</body> 
</html> 

Une autre chose à garder à l'esprit, il n'y a aucune raison pour que ces travées (table peut avoir une classe) ou les tables (si vous utilisez seulement un seul cellule, utilisez un <div> ou quelque chose), un <div> simple serait probablement faire tout ce que vous voulez:

<div class="class2"> 
    ---Insert Hyperlink--- 
</div> 
+0

Ce que Nick a dit. Techniquement, IE devrait l'ignorer là aussi. Enveloppez-le dans un '', vous pouvez toujours nous l'attribut colspan du td si vous devez. –

+0

Merci beaucoup! Fermeture des étiquettes dans le bon ordre travaillé. :) – user300091

1

vous ne pouvez pas avoir span contenu directement par table. En gros, le texte dans les tableaux doit être contenu dans les cellules (td ou th), qui à son tour doit être contenu par des lignes (tr), qui devrait être contenu par tbody, thead ou tfoot éléments, qui peuvent ensuite être contenus par table. À partir de HTML5, tbody peut être formellement implicite (alors qu'auparavant c'était juste quelque chose que les navigateurs faisaient, malgré une spécification précédente nécessitant quelque chose entre table et tr). Le HTML validation service est utile pour traiter ce genre de choses.

7

Je suis désolé de le dire, mais votre HTML est un gâchis. La raison pour laquelle IE affichera la durée est probablement un vestige de la guerre des navigateurs, quand Netscape et Microsoft se sont constamment battus pour savoir qui pourrait donner un sens au pire code HTML. Les seules étiquettes autorisées à l'intérieur du <table> -tag sont <legend>, <colgroup>, <tbody>, <tfoot>, <thead> et <tr>. Si vous voulez que votre <span> soit visible, placez-le dans <td> l'intérieur <tr>

Quelque chose comme:

<HTML> 
<HEAD> 
<title>Title Page</title> 
<style type="text/css">@import url("/css/main.css");</style> 
</HEAD> 

<BODY> 

<table> 
    <tr> 
    <td> 
    ---Insert Hyperlink---<br> 
    </td> 
    </tr> 

    <tr> 
    <td> 
     <span class="class2"></span> 
     ---Insert Hyperlink---<br> 
    </td> 
    </tr> 
</table> 
</BODY> 
</HTML> 

En outre, décider si vous allez utiliser des caractères majuscules ou minuscules dans vos balises. Cela facilite le suivi de votre code.

+3

+1 pour "qui pourrait donner un sens au pire HTML" –

0

Je ne pense pas qu'il devrait y avoir un problème ayant une SPAN dans une table en supposant qu'il est dans une cellule
Assurez-vous que le tableau lui-même est formaté correctement avec des lignes appropriées et les cellules. IE peut être le rendu de la table, même si elle est cassée

0

Cant vous mettez la classe directement sur la balise tr comme ceci:

<table><tr class="class1" ><td> 
---Insert Hyperlink---<br> 
</td></tr> 

être conscient du fait que votre code est niché, essayez donc de garder les classes directes sur les étiquettes

0

Votre imbrication de balises est un gâchis ..

vous ne pouvez pas

<tag1> 
<tag2> 
</tag1> 
</tag2> 

il doit être

<tag1> 
<tag2> 
</tag2> 
</tag1> 

et vous utilisez également span entre tr qui n'est pas permis

0

C'est tout simplement pas HTML valide. vous ne pouvez pas simplement de tags aléatoires ouvrir et fermer ... essayer quelque chose de plus comme ceci:

<HTML> 
<HEAD> 
<title>Title Page</title> 
<style type="text/css">@import url("/css/main.css");</style> 
</HEAD> 

<BODY> 

<table><tr><td> 
<span class="class1"> 
---Insert Hyperlink---<br> 
</span> 
</td></tr> 


<tr><td> 
<span class="class2"> 
---Insert Hyperlink---<br> 
</span> 
</td></tr></table> 


</BODY> 
</HTML> 
0

Vous avez deux problèmes: vous commencez à la première travée en dehors du corps tandis que des portées ne peuvent être à l'intérieur du corps. De même, vous ne pouvez pas terminer/démarrer les plages entre les balises table et tr.

Vous devez utiliser les balises tbody pour séparer les sections de la table:

<HTML> 
<HEAD> 
    <title>Title Page</title> 
    <style type="text/css">@import url("/css/main.css");</style> 
</HEAD> 

<BODY> 

    <table> 

     <tbody class="class1"> 

      <tr><td> 
      ---Insert Hyperlink---<br> 
      </td></tr> 

     </tbody> 
     <tbody class="class2"> 

      <tr><td> 
      ---Insert Hyperlink---<br> 

      </td></tr> 
     </tbody> 
    </table> 


    </BODY> 
</HTML> 
Questions connexes