1

我一直在使用带有站点管理员的 vs2010 中的默认模板在 ASP.net 中创建一个网站。我得到了奇怪的结果,其中带有跨度的图像不会对齐,因为它们之间总是有空格。我花了几个小时查看标记,最后绝望地创建了一个普通的 .htm 文件并将我的 html 复制到其中。令我惊讶的是,这实际上奏效了,所以在比较差异又一个小时后,我注意到模板创建了 site.master

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

而它创建 .htm 文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

谁能解释 Strict(这会导致我的布局出现错误)和 Transitional(这意味着布局与我预期的一样)之间的区别,如果在我的 aspx 页面中使用 Transitional 会在未来给我带来任何困难?

我在 VS 中有一个警告,指出

validation (xhtml 1.0 transitional): element 'h2' cannot be nested within element 'span'

我想这可能是使用 Strict 时错误的根源,但我不确定如何解决它。

编辑:这是导致错误的有问题的块

<a href="http://somelink.com">
    <img src="Images/test.png alt="Test" />
    <span class="Styling for hovering">
        <h2>
            Test
        </h2>
        <p>
            This Is A Test
        </p>
    </span>
</a>

我正在尝试创建一个由图像及其下方的文本激活的链接。我想将文本保存在容器中。将鼠标悬停在该容器背景上时会发生变化。我还为跨度设置了固定大小。这是我需要在它们周围放置某种容器的主要原因。

4

2 回答 2

2

无论您使用哪种 DOCTYPE,都不能将块级元素 ( <h2>) 放在行内元素 ( <span>) 内。这就是您收到该错误的原因。由于<span>通常用于样式,我怀疑您可以删除它<span>并使用 CSS 来设置样式<h2>以显示您想要的样式。

于 2012-05-23T18:05:42.670 回答
1

简短的回答?

传统 = 允许旧式不推荐使用的 HTML 标签,如 <font>、<center>、<s>,并对 HTML 中我们不应该再做的事情非常宽容。

Strict = 使用 css 替换大多数这些标签,并按照 W3C 定义的方式执行规则。

长答案:您可以阅读 W3C 中每种 HTML 规范类型的 25 多个页面规范,但是如果您正在创建新页面,您可能应该尝试坚持使用XHTML 1.0 Strict,因为它是未来和过渡性让一些平面设计师喜出望外。:)

W3schools对每种类型或多或少的含义进行了很好的细分:

XHTML 1.0 Strict此 DTD 包含所有 HTML 元素和属性,但不包括展示性或不推荐使用的元素(如字体)。不允许使用框架集。标记还必须编写为格式正确的 XML。

XHTML 1.0 过渡此 DTD 包含所有 HTML 元素和属性,包括表现性元素和不推荐使用的元素(如字体)。不允许使用框架集。标记还必须编写为格式正确的 XML。

于 2012-05-23T19:59:59.493 回答