javascript 可以通过在其他地方定义的选择器简单地更改CSS样式

6yoyoihd  于 2022-10-30  发布在  Java
关注(0)|答案(1)|浏览(118)

首先,我使用的是react-swipe-to-delete-component,但我觉得这对问题没有什么影响。
我正在尝试改变一个“built out”元素的background-color属性。我无法控制插件使用的类名,而且我也不能给它(我认为)分配一个单独的类名。有没有办法像vanilla JavaScript那样,只根据选择器来改变元素的样式?
我有一个元素<SwipeToDelete>,它构建了一个div,我需要通过选择器访问它:

<div class="swipe-to-delete">
    <div class="js-delete">

因此我需要能够访问

.swipe-to-delete .js-delete

作为选择器。
有没有办法像在JS IE document.getElementsByClassName('.swipe-to-delete .js-delete')[0].style.background-color = "#FFF")
我需要根据调用的函数更改背景颜色:

const [isRight, setRight] = useState(false);
const [isLeft, setLeft] = useState(false);

const onLeft = (...args) => {
    // Make Mask Red with Icon
    console.log('Set left to true');
    setLeft(true);
}
const onRight = (...args) => {
    // Make Mask Green with icon
    console.log('Set right to true');
    setRight(true);
}

<SwipeToDelete
  onLeft={onLeft}
  onRight={onRight}
  >

这是可行的..我只是不知道如何合并这个伪语句

isRight ? '.swipe-to-delete .js-delete'.backgroundColor="green" : ''

因为我无法访问<SwipeToDelete>的内部工作机制来设置某个类名,而不修改节点模块代码。我真的被困在这里了。
我只是想简单地改变.swipe-to-delete .js-delete的背景颜色,这取决于右或左功能。我看错了吗?

dzhpxtsq

dzhpxtsq1#

有一个classNameTag属性可以用来在<SwipeToDelete>的 Package 器元素(带有className="swipe-to-delete"的元素)上定义一个className。
根据滑动方向,您可以相应地设置className

<SwipeToDelete
  classNameTag={isRight ? "is-right" : isLeft ? "is-left" : ""}
  onLeft={onLeft}
  onRight={onRight}
>

使用CSS进行样式设置:

.swipe-to-delete.is-right .js-delete {
  background-color: green;
}
.swipe-to-delete.is-left .js-delete {
  background-color: red;
}

相关问题