【问题标题】:Automatically copy text from element to :before content attribute自动将文本从元素复制到 :before 内容属性
【发布时间】:2018-03-02 02:40:49
【问题描述】:

我正在尝试在我的标题上添加缩放文本效果,而不创建其他文本元素。尝试这样做,我正在使用 ::before 伪元素。然而,要创建这种效果,伪元素必须具有与实际元素相同的content。由于这不能在 HTML 中完成并且在 CSS 中需要做很多工作(因为它被多次定位..),所以我正在寻找一种通用方法来处理所有具有这种效果的元素。

我正在考虑使用 jQuery 方式使用 .attr() 函数来复制文本并将其附加到伪元素,但据我所知这是无法做到的。

$(function() {
  $('h1').each(function() {
    var Text = "$(`this`).text()";
    $('this::before').attr('content', Text);
  });
});

还有其他选择吗?


效果的 CSS 目前比较简单。

:before {
  transform: scale(1.5)
  opacity: .2
  content: "text here"
}

【问题讨论】:

  • 我试图在第一段中解释这一点。此效果应用于每个H1 元素,在header 的每个页面上放置一次。好吧,目前的观点是只有 5 个页面,这并不是额外的 CSS 行。我只是希望有一个简单的方法,以防万一会有更多的页面,这意味着更多的 CSS 行。

标签: jquery css-selectors pseudo-element


【解决方案1】:

您不能使用 javascript 访问伪元素,但可以使用 CSS 访问元素。 检查sn-p。

h1::before{
  content: attr(data-before);
}
<h1 data-before="Before Content">
Some Content
</h1>

我猜你甚至不需要 javascript。编辑了片段。

【讨论】:

  • 哇,这太聪明了!
  • 快速更新:内容需要引号内的内容,即“attr(data-before)”。至少,它确实在 Chrome 中实际显示了内容。
  • 嗯,我想我写/复制了错误的 javascript,因为一旦我将它添加到 html 中,它就起作用了。你真是个了不起的家伙。
猜你喜欢
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 2016-09-29
相关资源
最近更新 更多