如何在内联样式的ReactJS上使用变量或--i:0属性?

4ktjp1zp  于 2023-08-04  发布在  React
关注(0)|答案(2)|浏览(115)

这个问题以前被问过,但在text中从未得到完全回答。变量可能是这段代码中最重要的部分,因为我希望能够在多个CSS函数中使用它们,以使它们具有悬停效果。我有一个HTML的等价物

<html lang="en">
    <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>Document</title>
    </head>
    <body>
      <div class="container">
        <div class="card" style="--i:-1" ></div>
        <div class="card" style="--i:0"></div>
        <div class="card" style="--i:1"></div>
      </div>
    </body>
    </html>
    

export default Project

字符串
我希望我的代码能够在React内联风格的JSX/JS文件中做同样的事情。到目前为止我只知道

import './project.css';
const numbers = [-1,0,1]
var r = document.querySelector(':root');
const Project = () => {
    return( 
    <html lang="en">
    <head>
      <meta charSet="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>Document</title>
    </head>
    <body>
      <div className="container">
      {numbers.map((num) => (<div key={num} className="card" {...r.style.setProperty('--i', -1)}></div>))}

      </div>
    </body>
    </html>
    )
}

export default Project


然而,不幸的是,这只使用列表中的最后一个值(1),并将此值用于CSS文件中的所有函数。

e7arh2l6

e7arh2l61#

测试这个:

<body>
        <div className="container">
          {numbers.map((num) => (
            <div key={num} className="card" style={{ "--i": num }}></div>
          ))}
        </div>
      </body>

字符串

blmhpbnm

blmhpbnm2#

根据您发布的链接,我认为您试图实现的是在style prop 中为JSX元素设置CSS变量。
你可以这样做:

const SomeComponent = () => (
  <div 
    style={{
      "--i": -1
    }}
  >
    <div
      style={{
        // rotate with some arbitrary calculation using the `--i` CSS variable
        transform: "rotate(calc(360deg / 8 * (var(--i) - 10)))",
        width: "100px",
        height: "100px",
        backgroundColor: "magenta"
      }}
    />
  </div>
)

字符串
我创建了一个Code Sandbox,它实际上显示了这一点,其中--i的值来自某个任意长度的数组。然后,--i值用作背景色的一部分,并转换div的CSS props。下面的屏幕截图显示了20个数组的结果UI。
注意:这个例子使用了Material UI,所以你不能从代码沙盒中找到copy/paste。如果要重用代码,必须将sx prop 更改为style
希望这对你有帮助!
x1c 0d1x的数据

相关问题