首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript如何改变pseudo :before元素的内容值

问Javascript如何改变pseudo :before元素的内容值
EN

Stack Overflow用户
提问于 2012-05-08 16:35:56
回答 8查看 85.5K关注 0票数 49

我有一个由CSS构造的grap,它是由JS动态改变的。我将图的最大值按伪元素表示为:

代码语言:javascript
复制
.graph:before {
    content:""; //value that want set by JS
    position:absolute;
    top:0;
    left:0;
}

这就是为什么我需要用JS来设置这个值。我试过$(".graph:before").css("content", hh);,但没有用。如何获取该值?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-05-08 16:37:41

更新(2018):正如评论中所指出的,you now can do。

您不能通过JavaScript修改伪元素,因为它们不是DOM的一部分。最好的办法是在CSS中使用所需的样式定义另一个类,然后将其添加到元素中。由于从您的问题看这似乎是不可能的,也许您需要考虑使用真正的DOM元素,而不是伪元素。

票数 36
EN

Stack Overflow用户

发布于 2017-02-02 18:44:13

我希望下面的代码片段能有所帮助,您可以使用CSS attr()函数通过JS指定您想要的content值。下面有两个选项:使用JavaScript或jQuery:

jQuery:

代码语言:javascript
复制
$('.graph').on('click', function () {
    //do something with the callback
    $(this).attr('data-before','anything'); //anything is the 'content' value
});

JavaScript:

代码语言:javascript
复制
var graphElem = document.querySelector('.graph');
graphElem.addEventListener('click', function (event) {
    event.target.setAttribute('data-before', 'anything');
});

CSS:

代码语言:javascript
复制
.graph:before {
    content: attr(data-before); /* value that that refers to CSS 'content' */
    position:absolute;
    top: 0;
    left: 0;
}
票数 90
EN

Stack Overflow用户

发布于 2018-05-22 21:34:54

你可以使用CSS变量

代码语言:javascript
复制
:root {
  --h: 100px;
}

.elem:after {
  top: var(--h);
}

let y = 10;

document.documentElement.style.setProperty('--h', y + 'px')

https://codepen.io/Gorbulin/pen/odVQVL

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10495243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档