如何在 React 中使用单色制作渐变背景?

Him*_*shu 4 javascript css jsx reactjs

我想在 React 中为组件制作渐变背景,如下图所示

同色渐变

我想这样做:<Box colour ="blue"></Box>这些组件的样式将像

backgroundColor="this.props.colour"
Run Code Online (Sandbox Code Playgroud)

现在我只想传递颜色道具,我不想传递两种颜色,颜色也将采用十六进制代码。

Tem*_*fif 6

为什么不使用渐变作为上面的层background-color来实现这一点:

.box{
  height:200px;
  width:200px;
  background:linear-gradient(rgba(250,0,0,0.5),transparent);
  background-color:orange /*this your primary color*/
}
Run Code Online (Sandbox Code Playgroud)
<div class="box">
</div>
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 3

您仍然需要以某种方式指定第二种颜色。您可以传入第一种颜色,然后也许计算组件中的第二种颜色。在这里,我将第二种颜色转换为比输入颜色深 20%。

您可以根据特定用例的需要调整逻辑。

class App extends React.Component {
  render() {
    return (
      <Box color1="#FFA500" />
    );
  }
}

const Box = ({color1}) => {
  const rgb = [color1.substring(1,3), color1.substring(3,5), color1.substring(5,7)];
  const color2 = `rgb(${rgb.map(c => (parseInt(c, 16) * 0.8)).join()})`;
  return (
    <div className="box" style={{background: `linear-gradient(${color1}, ${color2})`}} />
  );
}

ReactDOM.render(<App />, document.getElementById("app"));
Run Code Online (Sandbox Code Playgroud)
.box {
  width: 100px;
  height: 100px;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
Run Code Online (Sandbox Code Playgroud)