我有一个格式不正确的页面,或者至少没有像我期望的那样格式化。
以下是代码的简化版本。
<div ...>
<div class="db_notes">
<pre>
Some Text.
<span class="blue">Lots more text that may be one line or multiple lines and is
retrieved from a database in preformatted form and often has one or more
<a href="...">links</a> within the preformatted text.</span>
Some Additional text.
<span class="blue">More text that may be one or more lines and is reformatted
and comes from a database and often contains one or more <a href="...">links</a>
within the text.</span>
And more text.
</pre>
</div>
</div>
<span class="blue">
仅更改了字体颜色。
<span class="blue">
和<a href...>
之间的文字颜色为蓝色(根据需要),但</a>
和</span>
之间的文字颜色为黑色(而不是蓝色)。
为什么在</a>
标记后,文字颜色不会返回蓝色?
谢谢!
约翰
*更新*
首先,感谢所有创建示例的人,以测试在&lt; / a&gt;之后颜色应该是蓝色的前提。标签!你证明我不是疯了! (或者不是完全疯狂)。
我在JS Bin和复制页面上制作了一个示例副本,该页面粘贴在页面的主要部分,带有文本颜色问题。令我惊讶的是,&lt; / a&gt;之后的文字。标签是蓝色的,应该是。
接下来,我浏览了CSS,找到了可能影响div,span,a或pre标签的任何样式元素,并将它们放在JS Bin的CSS部分中。生成的格式仍然看起来正确,并且&lt; / a&gt;之后的文本标签仍然是蓝色。
然后我复制了整个CSS文件并将其粘贴到JS Bin上的CSS部分。打破了它。 &lt; / a&gt;之后的文字标签变为黑色,这是我在页面上遇到的问题。
所以,在这个庞大的CSS文件的某处,有一些东西会影响这个页面的呈现方式。为什么,我不知道。我一直认为,在内联结束标记之后,格式化应该返回到开始标记之前的格式,但某种程度上正在改变这种行为。
现在大概是凌晨2点15分,所以我打算叫它一天,睡一会儿,休息一下后重新看一下。
约翰
*更新*
我已经浏览了整个页面,确保所有标签都匹配,嵌套正确(SPAN中没有DIV元素等),并且仍然无法正确格式化。
我不能再花时间了,所以我想出了一个kludge - 在&lt; a href ...&gt;之前关闭跨度。并打开一个新的&lt; span class =“blue”&gt;紧跟在&lt; / a&gt;之后,如下所示。我知道它不应该是必要的,但如果这是使它工作所需要的,那就这样吧。所以,这是修订后的简化代码。
<div ...>
<div class="db_notes">
<pre>
Some Text.
<span class="blue">Lots more text that may be one line or multiple lines and is
retrieved from a database in preformatted form and often has one or more
</span><a href="...">links</a><span class="blue"> within the preformatted text.</span>
Some Additional text.
<span class="blue">More text that may be one or more lines and is reformatted
and comes from a database and often contains one or more
</span><a href="...">links</a><span class="blue">
within the text.</span>
And more text.
</pre>
</div>
</div>
我仍然想知道为什么浏览器会以这种方式运行。如果有人对在&lt; / a&gt;之后导致格式化的情况有任何想法标签,我很想听听。
谢谢,
约翰
答案 0 :(得分:0)
我无法进入另一个项目的源代码文件(被锁定以进行编辑),所以在等待的时候我又看了一下问题页面。
在浏览Firebug中的页面时,我注意到,虽然页面源只有一个&lt; a name =&#34; top&#34;&gt;标签,Firebug显示屏显示该标签的多个实例。奇怪。
然后我仔细观察,注意到没有&lt; / a&gt;标签与&lt; a name =&#34; top&#34;&gt;匹配标签
更换后:
<a name="top">
使用:
<a name="top"></a>
页面正常工作!!!
在某些时候,需要更新网站以替换:
<a name="top"></a>
......和其他&#34;一个名字=&#34;标签:
<a id="top"></a>
...标记符合HTML 5,但有超过2,300个动态页面,大多数都有1到30个&lt; a name =&#34; text&#34;&gt;标签,这将是很长一段时间才有资金支持这样的努力。为了向后兼容,需要支持某些标记和选项的另一个原因。
再次感谢所有以任何形式提供帮助的人!
祝福,
约翰
答案 1 :(得分:-1)
<span class="blue">
和<a href...>
之间的文字颜色为蓝色(根据需要),但</a>
和</span>
之间的文字颜色为黑色(而不是蓝色)。
如果我假设您为.blue {color: blue;}
使用span
此属性,那么它会将文本颜色更改为span
标记内的文字。 <span>
中的文字将为黑色。
看一下 DEMO 。
在这种情况下,我已将<span>
颜色从blue
更改为red
,您看到<a>
标记文字仍然是蓝色,默认为。
注意:只有span
内的文字为blue
颜色,不包含<a>
标记内的文字。默认情况下,指向<a>
的链接会将其更改为蓝色。