我有一些这样的html结构:
<span class="foo">
<a href="#" class="bar">text</a>
</span>
或者
<span class="foo">
text
</span>
我需要做的是,替换span.foo
if it has not child的内容a
,但如果有则保留。
不幸的是,css 没有 has-child 或类似的选择器。这是我尝试过的:
.foo {
visibility: hidden;
}
.foo:before {
content: 'text-replaced';
visiblity: visible;
display: inline-block;
}
.foo a {
margin-left : -10px;
display: inline-block;
}
我使用 css text replace hack,并尝试将 childa
与其父级重叠。问题是,a
不会隐藏在跨度之上 - 它们都被显示,这很丑陋。而且我觉得这不是正确的方法——我不能真正硬编码 的值margin-left
,因为里面的文本长度a
是可变的。-10 只是一个例子,无论我使用什么数字,它都可以比实际需要的数字长或短。此外,有许多带有 的跨度class="foo"
,每个跨度可能有也可能没有内部a
标签 - 并且并非所有a
都有相同长度的文本。这样做的正确方法是什么?我不能使用 javascript 来解决这类问题。