javascript - 从 javascript 更改伪元素样式

标签 javascript css dom pseudo-element

这个问题在这里已经有了答案:





Selecting and manipulating CSS pseudo-elements such as ::before and ::after using javascript (or jQuery)

(25 个回答)


1年前关闭。




如何将 CSS 更改为伪元素样式?

我正在尝试获取 CSS before::规则和改变left:95%4px .
如何在我的上下文中执行此操作?

我还使用 document.querySelector 进行了一些测试但它不起作用,我得到一个计算只读错误。

你有什么建议吗?

Example:



css
.iziToast-wrapper-bottomLeft .iziToast.iziToast-balloon:before {
  border-right: 15px solid transparent;
  border-left: 0 solid transparent;
  right: auto;
  left: 8px;
}

js
    if(description_iziToast){
        let RightMode = event.x>window.innerWidth/2;
        let bubblePosition = document.getElementsByClassName("iziToast-balloon")[0]; // get the div that hold the bubble
        let ajustScreenLR = RightMode && document.getElementsByClassName("iziToast")[0].offsetWidth || 0; // halfScreen ajustement
        //bubblePosition.style.left = RightMode && '95%' || '4px'; // here i need to change the position in the befor:: attribut
        description_iziToast.style.left = `${event.x-20-ajustScreenLR}px`; 
        description_iziToast.style.top = `${event.y-105}px`;
    }
    }else{
        if(description_iziToast){ iziToast.destroy(); description_iziToast = false; };
    }

这里是应用程序控制台调试

enter image description here

enter image description here

最佳答案

由于 DOM 中不存在伪元素,因此无法在 Javascript 中访问它们。
解决方法是创建一个 <span>而不是使用:before并且必须应用相同的逻辑。

关于javascript - 从 javascript 更改伪元素样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49106088/

相关文章:

javascript - fs-path 似乎没有创建正确的文件/文件夹

javascript - 如何在 Bootstrap 中制作这样的导航栏?

html - 如何删除链接上的下划线?

javascript - TinyMCE.dom.Event.add 的最佳替代品是什么?

javascript - 如何检查 DOM 中是否存在 htmlElement 对象

javascript - 使用 jquery 和 javascript 获取标签名称

javascript - 将字符串替换为 unicode 字符

javascript - 如何使用 javascript 在 Firefox 中的 facebook 中共享图像?

javascript - 按钮内的 div 不响应高度

javascript - 如何将 DOM 元素传递给 API 函数?