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

j1dl9f46  于 12个月前  发布在  React
关注(0)|答案(2)|浏览(183)

我想为React中的组件制作一个渐变背景,如下图所示
Gradient of the same colour
我想这样做:<Box colour ="blue"></Box>其中这些组件的样式将像这样

backgroundColor="this.props.colour"

字符串
现在我只想传递颜色属性,我不想传递两种颜色,而且颜色将是十六进制代码。

mzillmmw

mzillmmw1#

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

.box{
  height:200px;
  width:200px;
  background:linear-gradient(rgba(250,0,0,0.5),transparent);
  background-color:orange /*this your primary color*/
}

个字符

2wnc66cl

2wnc66cl2#

你仍然需要指定第二种颜色 * 以某种方式 *。你可以传入第一种颜色,然后在组件中计算第二种颜色。这里我将第二种颜色转换为比输入颜色暗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"));
.box {
  width: 100px;
  height: 100px;
}
<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>

相关问题