2010-03-23 27 views
1

我很难让span标签在表格中正常工作。看起来好像整个span标签被忽略,这是Firefox中表格标签之间的任何地方定义的,但是在IE中,它正确显示。火狐浏览器和IE浏览器 - Firefox处理<span>里面的表格(html和css)

也许我错过了一些东西,但我创建了一个小的示例CSS和HTML文件,它们在Firefox和IE中的显示方式不同。希望有人能告诉我为什么这样做,或者我可以重新排列html来解决Firefox中的问题。

--- --- 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 2010-03-23 16:23:28

+0

天哪,这么乱......这将是很难写这个标记坏。我特别注意在(!)之前开始的,并在之前结束! – Robusto 2010-03-23 16:29:34

回答

3

你不能有一个跨度有简短的回答,只一个<tr>

<body>应该包含你的元素,不过<html>应该包含<body>

你是什么后大概是这样的:

<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> 

另一件事要记住,没有理由对那些跨度(表只能有一个类),或者那些表(如果你只使用一个单一的电池,使用<div>什么的),一个简单的<div>可能会做你想要的一切:

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

尼克说什么。从技术上讲,IE也应该忽略它。将它包装在'​​'中,如果必须的话,你可以随时使用td的colspan属性。 – 2010-03-23 16:20:18

+0

非常感谢!按适当的顺序关闭标签。 :) – user300091 2010-03-23 16:36:19

1

你不能有span通过table直接包含。基本上,在表文本必须包含细胞(tdth),而这又必须由行(tr),这反过来又应该由tbody被包含,thead,或tfoot元件,其然后可被包含被包含在通过table。从HTML5开始,tbody可以正式暗示(尽管先前的规范要求在tabletr之间),但之前这只是浏览器所做的一切。

HTML validation service对于处理这些事情很有用。

7

我很抱歉地说,但你的HTML是一团糟。 IE浏览器显示跨度的原因可能是浏览器大战的一个残余,当Netscape和微软互相争斗时,谁可以理解最糟糕的HTML。 <table> -tag内允许的唯一标签是<legend>,<colgroup>,<tbody>,<tfoot>,<thead><tr>。如果你希望你的<span>是可见的,把它放在里面<td><tr>

喜欢的东西:

<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> 

另外,决定是否要在您的标签使用大写或小写字符。它使得更容易遵循你的代码。

+3

+1为“谁可以理解最糟糕的HTML” – 2010-03-23 16:20:02

0

我不认为应该是具有表内SPAN问题假设它是细胞
确认表本身具有适当行和单元格的格式正确内。 IE浏览器可能会被渲染表,即使它被打破

0

广东话,你直接把类的TR-标签是这样的:

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

知道你的代码是坐落,所以尽量保持类直接在标签上

0

你的标签嵌套的是一个烂摊子..

你不能有

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

它必须是

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

,并且使用也这是不允许的trspan之间

0

这只是不是有效的HTML。你不能只是随机标签打开和关闭...尝试更多的东西是这样的:

<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

您这里有两个问题:您启动身体以外的第一跨度而跨度只能是身体内部。你也不能在table和tr标签之间结束/开始跨度。

您应该使用TBODY标签表中的部分分开:

<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> 
相关问题