<a href...="">text</a>标记对后,css格式不会返回到先前的格式

时间:2014-08-14 05:08:39

标签: html css

我有一个格式不正确的页面,或者至少没有像我期望的那样格式化。

以下是代码的简化版本。

<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;之后导致格式化的情况有任何想法标签,我很想听听。

谢谢,

约翰

2 个答案:

答案 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>的链接会将其更改为蓝色。