当前位置: 首页 > 面试题库 >

修改元素:在React中以编程方式在CSS规则之前

臧威
2023-03-14
问题内容

我有一个元素,其:before样式必须根据计算进行修改。

export class Content extends React.Component {
    render() {
        return (
            <div className="ring-base">
               <div className="ring-left" style={{/* Change here */}}></div>
               <div className="ring-right" style={{/* Change here */}}></div>
               <div className="ring-cover">
                   <div className="ring-text">10%</div>
               </div>
            </div>
        );
    }
}

CSS代码:

.ring-base {
    position: absolute;
    height: 200px;
    width: 200px;
    border-radius: 50%;
    background: red;
    transform: rotate(90deg);
    overflow:hidden;
}
.ring-cover {
    position: absolute;
    height: 180px;
    width: 180px;
    background: #fff;
    border-radius: 50%;
    top: 5%;
    left: 5%;
}

.ring-cover .ring-text {
    position: absolute;

    width: 100%;
    height: 100%;
    text-align: center;
    font-size: 2em;
    display: flex;
    justify-content:center;
    align-content:center;
    flex-direction:column;
    transform: rotate(-90deg);
}

.ring-right, .ring-left {
    height: 100px;
    width: 200px;
    overflow: hidden;
    position: absolute;  
}

.ring-right:before, .ring-left:before {
    height: inherit;
    width: inherit;
    position: absolute;
    content: "";
    border-radius: 100px 100px 0 0;
    background-color: grey;
    transform: rotate(0deg);
}

.ring-right {
    -webkit-transform-origin: 50% 0%;
    -moz-transform-origin: 50% 0%;
    -ms-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    transform: rotateZ(0deg);
}

.ring-left {
    transform: rotate(180deg);
    -webkit-transform-origin: 50% 100%;
    -moz-transform-origin: 50% 100%;
    -ms-transform-origin: 50% 100%;
    transform-origin: 50% 100%;
}

.ring-right:before {
    -webkit-transform-origin: 50% 100%;
    -moz-transform-origin: 50% 100%;
    -ms-transform-origin: 50% 100%;
    transform-origin: 50% 100%;
    transform: rotate(0deg);
}

.ring-left:before {
    -webkit-transform-origin: 50% 100%;
    -moz-transform-origin: 50% 100%;
    -ms-transform-origin: 50% 100%;
    transform-origin: 50% 100%;
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transform: rotate(0deg);

}

要求是能够通过ReactJS .ring-left:before.ring-right:before通过ReactJS
更新transform属性。

如果有一种方法可以不更新:before类,也可以完全不使用CSS :before,则也建议这样做。


问题答案:

您可以重复document.styleSheets设置.style.cssRules地方.selectorText比赛伪选择

let sheets = document.styleSheets;

let selector = "div::before";

let replacementContent = '"after"';

for (let sheet of sheets) {

  for (let rule of sheet.cssRules) {

    if (rule.selectorText === selector) {

      rule.style["content"] = replacementContent;

    }

  }

}


div:before {

  content: "before";

  color: red;

  font-weight: bold;

  text-align: center;

  text-shadow: 2px 2px 2px #000;

  background: green;

  width: 50px;

  height: 50px;

  display: block;

}


<div></div>


 类似资料:
  • 任何关于这个或者如何使用drools api修改drools规则的想法都将是有用的。 注意:我不想为修改规则做字符串替换。

  • 问题内容: 有什么办法(强劲)重置任何可能和CSS规则,新创建的元素? 通常,您可以直接在元素上设置要重置的样式规则(如果需要确定的话),但是我不知道有什么方法可以更改仅在元素上定义的规则。 (如果可能,仅需与Chrome配合使用。) 加上/ 规则的内容会影响传回的值。 问题答案: 有一个DOM2 API可以解决此问题。正确的方法是

  • 我正在使用一个DMN来评估我的输入,但需求是这样的规则将被添加在未来,规则将被添加由正常的用户。因此,我关心的是如何提供一个逻辑来动态更新/添加DMN中的规则,并在camunda Tomcat中更新它。我经历了部署、创建和重新部署rest api,但无法解决我的问题。

  • 问题内容: 我有这个样式表: 现在,我想根据一些参数修改1620px的值。像这样: 我希望能够使用JavaScript和jQuery,尽管可以使用纯CSS解决方案。 这是针对在其移动Apple Safari浏览器中运行的iPhone游戏。 问题答案: 如果要修改已包含的样式表中的关键帧规则,请执行以下操作: 如果您不知道顺序,但是知道CSS文件的URL,请替换为。

  • 问题内容: 我想知道是否有可能在不进行内联样式的情况下修改Css样式表声明。 这是一个简单的例子: 这给出了一个蓝色的书写框,在悬停时变为绿色。 如果我为颜色提供内联样式,则悬停行为将丢失: 无论如何,这都会显示一个红色的书写框。 所以我的问题是,如何能访问和修改css声明对象,而不是用内联样式覆盖样式。 谢谢, 问题答案: 您可以使用与原始样式表相对应的DOM样式表对象上的来修改规则。 请注意,

  • 我想添加/删除/修改测试元素(如HTTPsamplers,Post处理器,可视化工具等)的JMeter测试计划在运行时(而不是加载测试时)使用JMeter API。它将如何在JMeter实现? 有人知道JMeter API添加/删除/修改测试元素吗? 我已经谷歌了我的问题,没有找到任何好的解决方案,并找到了一个使用xml解析器API修改jmx文件(JMeter测试计划文件)的解决方案,但它不会影响