显示伪元素但不显示父元素

时间:2014-07-31 13:39:08

标签: css css3 pseudo-element

您好我有一个包含以下文字的列表项:

<li>Search</li>

我希望使用字体真棒

显示图标
li:before {
  content: "\f002";
}

我无法删除“搜索”文本(它是从Drupal CMS生成的,标记和类名称也是如此),但我想隐藏搜索文本,但显示伪元素(搜索图标)。我该怎么做呢?通常,我要隐藏文本的方法就是:

li {
  text-indent: -1000px;
  overflow: hidden;
}

但这也会隐藏伪元素

4 个答案:

答案 0 :(得分:4)

您可以坚持使用“text-indent”方法(或更好的“Kellum Method”)并对伪元素使用CSS定位:

li {
display:block;
position:relative;
text-indent: -100%;
white-space: nowrap;
overflow: hidden;
}
li:after {
content: "visible pseudo-element";
position:absolute;
right:0;
}

http://jsfiddle.net/Fiddel/aopteq8m/

答案 1 :(得分:2)

派对有点晚了,但您可以随时将li的字体大小更改为0,并将图标的字体大小更改回原始字体大小。像这样:

li {
    font-size: 0;
}

li:after {
    font-size: 1em;
}

答案 2 :(得分:1)

这非常hacky,不要告诉任何人我这样做,但是jsfiddle.net/57BGV

li {
    list-style: none;
    text-indent: -65px;
}

li:after {
    content: "Test";
    display: inline-block;
    padding-left: 80px;
}

答案 3 :(得分:0)

一种方法是将字体颜色更改为背景颜色。这不会从流程中删除文本,但会将其隐藏起来,这就是您所要求的技术。

假设你的背景是白色的:

li {
    color: #FFF;
}