Him*_*shu 4 javascript css jsx reactjs
我想在 React 中为组件制作渐变背景,如下图所示
我想这样做:<Box colour ="blue"></Box>这些组件的样式将像
backgroundColor="this.props.colour"
Run Code Online (Sandbox Code Playgroud)
现在我只想传递颜色道具,我不想传递两种颜色,颜色也将采用十六进制代码。
为什么不使用渐变作为上面的层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)
您仍然需要以某种方式指定第二种颜色。您可以传入第一种颜色,然后也许计算组件中的第二种颜色。在这里,我将第二种颜色转换为比输入颜色深 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)