跳转到内容

Switch 开关

开关控制能切换单个设置的开/关两个状态。

开关组件是在移动设备上调整设置的首选方式。 The option that the switch controls, as well as the state it's in, should be made clear from the corresponding inline label.

基本的开关

带有 FormControlLabel 的开关

借助 FormControlLabel 组件,Switch能够提供一些描述。

带有 FormGroup 的开关

FormGroup 会提供相对简单的 API 对选择控件进行分组。 但是,如果需要操作多个相关的控件,我们鼓励您使用 Checkboxes 来代替它。 (参见: 何时使用)。

Assign responsibility

Be careful

自定义样式开关

你可以参考以下一些例子来自定义组件。 您可以在 重写文档页面 中了解更多有关此内容的信息。

🎨 如果您还在寻找灵感,您可以查看一下 MUI Treasury 自定义的例子

尺寸

想用一些优雅的小开关? 试着使用 size 属性吧。

<FormGroup>
  <FormControlLabel
    control={<Switch size="small" checked={checked} onChange={toggleChecked} />}
    label="Small"
  />
  <FormControlLabel
    control={<Switch checked={checked} onChange={toggleChecked} />}
    label="Normal"
  />
</FormGroup>

标签放置

你可以更改标签的位置:

什么时候使用

无障碍设计

  • 它将渲染一个带有 checkbox 而不是 switch 角色的元素,鉴于该属性尚未得到广泛支持。 请首先测试目标受众的辅助技术 (assistive technology) 是否正确支持此 role 属性。 或者您可以使用 <Switch inputProps={{ role: 'switch' }}> 来更改 role 属性。
  • 所有表单控件都应该带有标签,而这包括了单选按钮,复选框和开关。 在大多数情况下,这是通过使用一个 <label> 元素(FormControlLabel)实现的。
  • 如果无法使用标签,您则必须在输入组件中直接添加属性。 在这种情况下,您可以通过 inputProps 属性来应用附加的属性(例如 aria-label, aria-labelledby, title)。
<Switch value="checkedA" inputProps={{ 'aria-label': 'Switch A' }} />