[英]How to change border color of radio button in Material-UI?
我想更改 Material UI 单选按钮的外环。
https://material-ui.com/components/radio-buttons/
现在我有这个:
但我想得到的是
我尝试将PrivateRadioButtonIcon-layer
类设置为蓝色, MuiSvgIcon-root
为黑色,但我找不到设置PrivateRadioButtonIcon-layer
样式的方法
我描述了两种解决方案(都适用于 MUI v5):
如果您只想更改问题标题中所述的边框颜色(而不是边框的厚度),您可以在MUI 5中执行以下操作(通过sx
道具):
'& .MuiSvgIcon-root:not(.MuiSvgIcon-root ~ .MuiSvgIcon-root)'
设置边框样式,该选择器使用 CSS 通用兄弟组合器仅选择第一次出现的MuiSvgIcon-root
类。'& .MuiSvgIcon-root + .MuiSvgIcon-root'
设置圆形样式,该选择器使用 CSS 相邻兄弟组合符 ( +
) 来访问第二个 svg。单选按钮的完整代码:
<Radio
{...otherRadioProps}
sx={{
'& .MuiSvgIcon-root:not(.MuiSvgIcon-root ~ .MuiSvgIcon-root)':
{
color: 'red',
},
'& .MuiSvgIcon-root + .MuiSvgIcon-root': {
color: 'blue',
},
}}
/>
备注:
边框粗细:我们不能使边框变细(如您的设计建议的那样),但我们可以仅通过 CSS 使边框变粗。 我们必须访问单选按钮周围边框的 SVG 内的path
元素。 将以下内容添加到sx
道具:
'& .MuiSvgIcon-root:not(.MuiSvgIcon-root ~ .MuiSvgIcon-root) path': { stroke: 'red', strokeWidth: 3, },
请注意,即使您在.MuiSvgIcon-root
元素上设置了color: 'red'
,您也需要stroke: 'red',
line 。
我们不能直接使用类名来定位圆,因为 Material UI 为边框和圆提供了相同的类名,正如您在 Firefox DevTools 的截图中看到的那样:
icon
和checkedIcon
组件的解决方案如果你想要更薄的边框,你必须通过icon
和checkedIcon
添加自己的 SVG 图标。 要获得以下信息:
您可以使用以下图标组件:
const RadioButton = ({ checked }) => (
<svg
width="38px"
height="38px"
viewBox="0 0 24 24"
fontSize="38px">
<circle
cx="50%"
cy="50%"
r="11px"
stroke="red"
stroke-width="1px"
fill="none"
/>
{checked && (
<circle
cx="50%"
cy="50%"
r="6px"
fill="blue"
/>
)}
</svg>
);
并在您的 MUI Radio
组件中使用它,如下所示:
<Radio
icon={<RadioButton />}
checkedIcon={<RadioButton checked />}
{...otherProps}
/>
1 - 这是您正在使用的材料 UI 标签:-
<FormControlLabel value="" control={<Radio />} label="" />
2 - 给它 className 并在 Radio 标签上设置样式,如下所示:-
<FormControlLabel className="targetInsideOfRadio" value="" control={<Radio style={{color:"#979797"}} />} label="" />
3 - 转到 custom.css 文件并添加如下: -
.targetInsideOfRadio > span > span > div > svg ~ svg > path {
color: #2149b9;
}
4 - 希望你得到答案:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.