你如何在 React 中将多个浏览器特定值添加到 CSS 样式中?

IT技术 css browser reactjs cross-browser
2021-05-13 23:21:47

这主要是为给定的 CSS 属性定义浏览器特定的值,如下所示:

<div style="cursor: -moz-grab; cursor: -webkit-grab; cursor: grab;">Grab me!</div>

如果我将它包装成这样的对象:

<div style={{
    cursor: "-moz-grab",
    cursor: "-webkit-grab",
    cursor: "grab"
}}>Grab me!</div>

然后你在一个对象中复制键(在严格模式下会失败,否则会覆盖)。简单地将所有值放入单个字符串似乎也不起作用。

用 JS 找出浏览器,然后应用正确的值似乎工作太多了.. 或者是否有不同的方法来做到这一点?有任何想法吗?

2个回答

如果您想使用内联样式并获得供应商前缀,您可以使用像Radium这样的库来为您抽象供应商前缀。

通过向@Radium您的组件添加装饰器,Radium 将挂钩您传递给组件的样式,并自动管理它们并为其添加前缀。

var Radium = require('radium');
var React = require('react');

@Radium
class Grabby extends React.Component {
  render() {
    return (
      <div style={style}>
        {this.props.children}
      </div>
    );
  }
}

var style = {
  cursor: "grab" // this will get autoprefixed for you!
};

您能做的最好的事情是创建一个带有 cursor 属性的 css 类,并将其添加到您的组件中

.container {
  height: 10px;
  width: 10px;
}

.grab {
  cursor: -moz-grab,
  cursor: -webkit-grab,
  cursor: grab,
}

然后在你的react组件中:

var isGrabEnabled = true;

<div className={['container', (isGrabEnabled ? 'grab' : '')]}>Grab me!</div>