Switch “中英文”开关组件 - zptime/blog GitHub Wiki
Ant Design Switch 组件进行改造,实现两项单选的功能,完成“中英文”的切换,本质上是一个单选组件,只是做成开关的形式。
Ant Design Vue Switch 官网地址:https://antdv.com/components/switch-cn/
默认可以通过 checkedChildren
和 unCheckedChildren
定义选中和非选中时的内容,可以定义成图标或者文字。如下以文字为例:
<a-switch checked-children="开" un-checked-children="关" default-checked />
<a-switch checked-children="开" un-checked-children="关" />
上面的开关组件是表示开关状态或两种状态之间的切换,但实际上使用的“中英文”切换组件,本质上是一个单选组件,只是做成开关的形式。
主要是样式的改造,用::after
创建一个伪元素,填充内容
<template>
<a-input v-if="isChecked" placeholder="请输入中文姓名" />
<template v-else>
<a-input placeholder="姓 (拼音) Surname" style="margin-right: 8px" />
<a-input placeholder="名 (拼音) Given name" />
</template>
<a-switch
v-model="isChecked"
checked-children="英"
un-checked-children="中"
class="m-switch"
/>
</template>
<script>
export default {
data() {
return {
isChecked: true,
};
},
};
</script>
<style lang="scss">
.m-switch {
background-color: #1890ff;
min-width: 48px;
height: 24px;
&::after {
content: "英";
width: 20px;
height: 20px;
border-radius: 20px;
color: #1890ff;
font-size: 12px;
top: 1px;
}
&.ant-switch-checked::after {
content: "中";
}
}
</style>
详细可查看 MDN Web Docs
伪类:用于选择处于特定状态的元素,例如:first-child
,:last-child
,:hover
,:focus
等,主要用来添加样式的。
伪元素:表现得是像往标记文本中加入全新的 HTML
元素一样,例如::first-line
,::before
,::after
,主要是添加内容的,当然也可以内容定义样式。