css - 仅使用 css 更改元素中的文本

标签 css

您好,我想知道是否可以将列表中第 6 个子 li 的文本更改为一些自定义文本。它用于存档小部件的博客。我希望第 6 个月只说“更远的地方”之类的话。我知道如何选择第 6 个 child ,但我不知道将文本更改为始终说“再往前”的最佳方法。

如有任何帮助,我们将不胜感激。

最佳答案

您可能会使用:

li:nth-child(6) {
    /* to hide the original text */
    color: transparent;
}

li:nth-child(6)::before {
    content: 'Further back';
    color: #000;
}

JS Fiddle demo .

但是 CSS 不能改变实际的文本;它可以显示此文本(但它不会出现在 DOM 中,也不会被 JavaScript 访问,也不会供用户选择/交互)。

如果将原文包裹在自己的节点中,比如一个span,如:

<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
    <li>Five</li>
    <li><span>Six</span></li>
    <li>Seven</li>
    <li>Eight</li>
</ul>

然后可以使用以下内容隐藏:

li:nth-child(6) span {
    display: none;
}

li:nth-child(6)::before {
    content: 'Further back';
    color: #000;
}

JS Fiddle demo .

如评论中所述,我应该解释双冒号 :: 的用法,而不是单冒号 : 前缀。在 CSS 中,这两者用于区分伪元素(::before::first-line::first-letter)和伪类 :first-child:hover 等)。在 Internet Explorer 下,它在版本 8 中才开始理解/实现伪元素, 支持使用单冒号选择器(而大多数其他更现代的浏览器都支持这两个版本),所以通常最好硬着头皮使用::before/:after(等),同时使用:::之前, :before {/* css */>.

引用资料:

关于css - 仅使用 css 更改元素中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593789/

相关文章:

html - 为什么我的 font-size 是 62.5% 高度是 1.6rem 时 font-height 等于 20px?

html - CSS3 径向渐变...长轴和短轴的百分比(即大小)在 Firefox 中不起作用吗?

html - CSS - 如何并排放置 div,左右没有空格

javascript - jquery-free-transform + AngularJS

javascript - 仅使用 CSS 的 wordpress 博客的粘性侧边栏?

javascript - JQuery 不加载通过服务获得的效果

html - chrome 中的@font-face 未捕获的语法错误

html - Bootstrap 100% height with navbar

html - css网格的垂直间距问题

html - 如何链接到 html 文档中的 .woff 字体文件