Firefox和IE - Firefox处理<span>内部表(html和css)</span>

时间:2010-03-23 16:13:25

标签: html css firefox html-table

我很难让span标记在表格内正常工作。看起来似乎忽略了整个span标记,它被定义在Firefox中的表标记之间的任何位置,但是在IE中它显示正确。

也许我错过了一些东西,但我创建了一个小例子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>

8 个答案:

答案 0 :(得分:7)

我很遗憾地说,但你的HTML很乱。 IE浏览器大战中显示跨度的原因可能是浏览器大战的残余,当时Netscape和微软不断相互争斗,谁能理解最糟糕的HTML。 <table> - 标记内允许的唯一标记是<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>

此外,决定是否要在标签中使用小写或大写字符。这样可以更轻松地遵循您的代码。

答案 1 :(得分: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>

答案 2 :(得分:1)

span不能直接包含table。基本上,表中的文本必须包含在单元格(tdth)中,而这些单元格又必须包含在行(tr)中,而这些行又是应由tbodytheadtfoot元素包含,然后table可以包含这些元素。从HTML5开始,tbody可以被正式暗示(而以前这只是浏览器所做的事情,尽管之前的规范需要tabletr之间的某些内容。)

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

答案 3 :(得分:0)

我不认为在表格中有一个SPAN应该有问题假设它在一个单元格内
确保使用正确的行和单元格正确格式化表本身。 IE可能正在渲染表,即使它已被破坏

答案 4 :(得分:0)

你不能把这个类直接放在tr-tag上:

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

请注意您的代码是嵌套的,因此请尝试将类直接保留在标记上

答案 5 :(得分:0)

你的标签嵌套是一团糟..

你不能拥有

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

必须是

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

并且您还在span之间使用了tr,这是不允许的

答案 6 :(得分: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>

答案 7 :(得分: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>