React Material UI 滑块改变边框半径
React Material UI Slider to change Border Radius
使用 React Material UI 的 [滑块]:(https://material-ui.com/components/slider/#slider)and [button]:(https://material-ui.com/api/button/).
目标是使用滑块更改按钮的边框半径,但努力获取值变量并找出将其应用于 Button 组件的方法。
我因反复试验而脑死亡。有人可以帮助我或给我好的建议吗?
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Grid from "@material-ui/core/Grid";
import Slider from "@material-ui/core/Slider";
import Input from "@material-ui/core/Input";
import Button from "@material-ui/core/Button";
const useStyles = makeStyles((theme) => ({
root: {
"& > *": {
margin: theme.spacing(1)
}
},
Button: {
width: 150,
height: 50,
borderRadius: "var(--borderRadius)"
}
}));
export default function InputSlider() {
const classes = useStyles();
const [value, setValue] = React.useState(30);
const handleSliderChange = (event, newValue) => {
setValue(newValue);
};
const handleInputChange = (event) => {
setValue(event.target.value === "" ? "" : Number(event.target.value));
};
const handleBlur = () => {
if (value < 0) {
setValue(0);
} else if (value > 100) {
setValue(100);
}
};
return (
<div className={classes.root}>
<style>
{`:root {
--borderRadius = ${value}px;
}`}
</style>
<Button
variant="contained"
color="primary"
value="value"
onChange={handleSliderChange}
className={classes.Button}
>
Fire laser
</Button>
<Grid container spacing={2}>
<Grid item xs>
<Slider
value={typeof value === "number" ? value : 0}
onChange={handleSliderChange}
aria-labelledby="input-slider"
/>
</Grid>
<Grid item>
<Input
value={value}
margin="dense"
onChange={handleInputChange}
onBlur={handleBlur}
inputProps={{
step: 10,
min: 0,
max: 24,
type: "number"
}}
/>
</Grid>
</Grid>
</div>
);
}
这里是[沙盒]中的工作:(https://codesandbox.io/s/material-demo-forked-nm2qw?file=/demo.js:0-1878)
您可以使用 style
属性更改 Button
的 borderRadius
。
只需将此添加到您的 Button
、
style={{ borderRadius: value }}
检查此 sandbox 以获取工作示例。
使用 React Material UI 的 [滑块]:(https://material-ui.com/components/slider/#slider)and [button]:(https://material-ui.com/api/button/).
目标是使用滑块更改按钮的边框半径,但努力获取值变量并找出将其应用于 Button 组件的方法。
我因反复试验而脑死亡。有人可以帮助我或给我好的建议吗?
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Grid from "@material-ui/core/Grid";
import Slider from "@material-ui/core/Slider";
import Input from "@material-ui/core/Input";
import Button from "@material-ui/core/Button";
const useStyles = makeStyles((theme) => ({
root: {
"& > *": {
margin: theme.spacing(1)
}
},
Button: {
width: 150,
height: 50,
borderRadius: "var(--borderRadius)"
}
}));
export default function InputSlider() {
const classes = useStyles();
const [value, setValue] = React.useState(30);
const handleSliderChange = (event, newValue) => {
setValue(newValue);
};
const handleInputChange = (event) => {
setValue(event.target.value === "" ? "" : Number(event.target.value));
};
const handleBlur = () => {
if (value < 0) {
setValue(0);
} else if (value > 100) {
setValue(100);
}
};
return (
<div className={classes.root}>
<style>
{`:root {
--borderRadius = ${value}px;
}`}
</style>
<Button
variant="contained"
color="primary"
value="value"
onChange={handleSliderChange}
className={classes.Button}
>
Fire laser
</Button>
<Grid container spacing={2}>
<Grid item xs>
<Slider
value={typeof value === "number" ? value : 0}
onChange={handleSliderChange}
aria-labelledby="input-slider"
/>
</Grid>
<Grid item>
<Input
value={value}
margin="dense"
onChange={handleInputChange}
onBlur={handleBlur}
inputProps={{
step: 10,
min: 0,
max: 24,
type: "number"
}}
/>
</Grid>
</Grid>
</div>
);
}
这里是[沙盒]中的工作:(https://codesandbox.io/s/material-demo-forked-nm2qw?file=/demo.js:0-1878)
您可以使用 style
属性更改 Button
的 borderRadius
。
只需将此添加到您的 Button
、
style={{ borderRadius: value }}
检查此 sandbox 以获取工作示例。