如何用CSS“显示:无”到一些相邻的文本?

时间:2012-11-29 01:28:49

标签: css css-selectors

我需要处理的代码如下所示:

    <p>
    <a href="http://foo.com/foo.html"></a>
    <a href="http://creativecommons.org/publicdomain/mark/1.0/" rel="license">
    <img alt="Public Domain Mark" src="http://i.creativecommons.org/p/mark/1.0/88x31.png" style=""></a>
    <br> This work is free of known copyright restrictions... 
    </p>

它会在图像后显示图像,然后显示一些文字。我不需要显示。

这样可以摆脱图像:

a[rel="license"] {display:none;}

但是,我需要一种方法来摆脱<br>之后的文本(如果可能的话,还有未公开的标记),并且不能丢失结束</p>标记。

我从远程站点抓取HTML并且无法控制那里的标记。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

没有办法使用CSS隐藏此文本,而无需添加标签 - 取决于您抓取网站的方式,您最好的选择是尝试查找"This work is free of known copyright restrictions..."并将其替换为相同由<span></span>包围的文字;或者完全删除它。

答案 1 :(得分:0)

我意识到这是一个老问题,但我发现它很有趣。我想知道是否不能使用<p>标签的盒子模型,以便你隐藏你想要“摆脱”的东西,即使它仍然是有?

例如,假设我想要显示图像,而不是后面的非元素文本。 (我意识到你也希望消除图像,但出于演示目的,在<p>内部有一些可见的内容是有帮助的。)因为我知道图像是31px高,我可能只是喜欢:

p {
    height: 31px;
    overflow: hidden;
}

Etvoilà。无论这是否适合您的特定需求,我觉得我们没有足够的背景来确定。您询问的内容是留下一个包含不可见链接的空段落,没有更大的上下文没有明显的目的。

考虑一下,但是......如果我想隐藏图像,我只需稍微修改一下你的风格,并追加:

a[rel="license"] { visibility: hidden; }

(您不想使用display: none,因为这会影响<p> CSS框的尺寸。)

这肯定会对屏幕阅读器等造成不幸影响,但对于某些快速和肮脏的显示需求,它可能就足够了。