我需要删除此div中的所有文本,同时保留< a>中的任何内容。
<div class="footer">
Lorem ipsum etc etc etc... <img src="trash.png"> <img src="garbage.jpg">
<a href="something.html">Somewhere</a>
... blah blah <em>blah</em> blah ...
<a href="anotherlink.html>Another Link</a>
... in conclusion earthworms are interesting.
</div>
然而,当我使用它时:
.footer :not(a)
{
display: none;
}
文字仍然存在。
我只能使用CSS,因为它是一个用户风格。这可能吗?
答案 0 :(得分:8)
由于您无法选择文本节点,因此一个选项是将父元素的font-size
设置为0
,然后为font-size
重新指定a
.footer {
font-size: 0;
}
.footer :not(a) {
display: none;
}
.footer a {
font-size: 16px;
}
元素。
.footer {
font-size: 0;
}
.footer :not(a) {
display: none;
}
.footer a {
font-size: 16px;
}
<div class="footer">
Lorem ipsum etc etc etc... <img src="trash.png"/> <img src="garbage.jpg"/>
<a href="something.html">Somewhere</a>
... text nodes.. text nodes <strong>text nodes</strong>
<a href="anotherlink.html">Another Link</a>
... some other text node
</div>
&#13;
font-size
&#13;
不幸的是,此方法的缺点是,您将无法使用相对a
单位设置em
元素的visibility
。
作为旁注,值得一提的是,您还可以将父footer
元素的hidden
设置为visibility
,然后设置a
将visible
个元素添加到display: none
。
这显然没有达到与display: block
/ .footer {
visibility: hidden;
}
.footer a {
visibility: visible;
}
相同的效果,但尽管如此,我认为值得指出。
.footer {
visibility: hidden;
}
.footer a {
visibility: visible;
}
<div class="footer">
Lorem ipsum etc etc etc... <img src="trash.png"/> <img src="garbage.jpg"/>
<a href="something.html">Somewhere</a>
... text nodes.. text nodes <strong>text nodes</strong>
<a href="anotherlink.html">Another Link</a>
... some other text node
</div>
&#13;
{{1}}&#13;
答案 1 :(得分:0)
尝试:
.show {
display: block !important;
}
.hide {
display: none;
}
并将show class应用于所有标记并隐藏到div。