首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript或jquery修改psedo-element之前的属性?

问如何使用javascript或jquery修改psedo-element之前的属性?
EN

Stack Overflow用户
提问于 2011-11-29 01:40:33
回答 3查看 1.6K关注 0票数 2

我正在尝试修改一个伪元素:before的"left“属性。使用JavaScript或jQuery修改任何其他元素都没有问题,但在尝试修改:before选项卡中的元素时似乎遇到了问题。

举个例子,我似乎不能将下面:before元素的left属性设置为200。

我的css:

代码语言:javascript
复制
#buttonBox {
    position: absolute;
    width:150px;
    z-index:10;
    left:298px;
    top: 130px;
}

#buttonBox:before {
    position: absolute;
    content: "";
    top: -8px;
    left: 80px;
    margin-left: -8px;  
    border-bottom: 8px solid #ddd;
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;        
    border-top: 0;
    border-bottom-color: #1e2227; 
}

在javascript中:

代码语言:javascript
复制
document.getElementById("#buttonBox:before")

会产生null,因此无法设置。

jQuery:

代码语言:javascript
复制
$("#buttonBox:before").offset({top: -8, left: 200});

在设置left属性时同样没有响应。

在如何修改伪元素的属性方面,我是否遗漏了什么?我在谷歌上搜索这个没有任何运气。

EN

回答 3

Stack Overflow用户

发布于 2011-11-29 01:45:45

不能使用JQuery修改伪元素。使用类来操作它们的CSS属性。示例:

代码语言:javascript
复制
#buttonBox.active:before {
   top: -8px;        
   left: 200px;
}

.active类将在必要时通过Javascript应用。

票数 1
EN

Stack Overflow用户

发布于 2011-11-29 02:15:15

您可以通过JS修改:before和:after,但这已经够烦人的了,您可能不应该这么做。

为此,您需要使用相同的选择器,并在包含新样式的网页的head中手动添加一个新的style元素:

代码语言:javascript
复制
$('<style type="text/css">#buttonBox:before { left: 200px; top: -8px; }</style>').appendTo('head');

伪元素实际上不是DOM元素(因此称为“伪”)。除了添加/删除样式表之外,它们不是以JavaScript可以访问的方式存在的。

票数 0
EN

Stack Overflow用户

发布于 2011-11-29 01:50:27

也许你可以在jQuery中使用prev()函数?

http://api.jquery.com/prev/

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

https://stackoverflow.com/questions/8299960

复制
相关文章

相似问题

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