
<template>
<view class="pageMain">
<view class="mp-switch" style="--mp-switch-width: {{width}}px;--mp-switch-height: {{height}}px;--mp-switch-text: '{{checked?trueText:falseText}}';">
<view class="wx-switch-input {{checked?'wx-switch-input-checked':''}}" bind:tap="onChange"></view>
</view>
</view>
</template>
<style lang="less">
.mp-switch .wx-switch-input {
-webkit-appearance: none;
appearance: none;
position: relative;
width: var(--mp-switch-width);
height: var(--mp-switch-height);
border: 1px solid #DFDFDF;
outline: 0;
border-radius: calc(var(--mp-switch-height) / 2);
box-sizing: border-box;
background-color: #e5e5e5;
transition: background-color 0.1s, border 0.1s;
}
.mp-switch .wx-switch-input::before {
content: var(--mp-switch-text);
position: absolute;
top: 0;
left: 0;
width: calc(var(--mp-switch-width) - 2px);
height: calc(var(--mp-switch-height) - 2px);
line-height: calc(var(--mp-switch-height) - 2px);
font-size: calc(var(--mp-switch-height) / 2.2);
padding-left: calc(var(--mp-switch-height));
padding-right: 6px;
box-sizing: border-box;
overflow: hidden;
color: #999;
text-align: center;
background-color: transparent;
}
.mp-switch .wx-switch-input::after {
content: " ";
position: absolute;
top: 0;
left: 0;
width: calc(var(--mp-switch-height) - 2px);
height: calc(var(--mp-switch-height) - 2px);
border-radius: 50%;
background-color: #FFFFFF;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
transition: -webkit-transform 0.3s;
transition: transform 0.3s;
}
.mp-switch .wx-switch-input.wx-switch-input-checked {
border-color: #07C160;
background-color: #07C160;
}
.mp-switch .wx-switch-input.wx-switch-input-checked::before {
color: #fff;
padding-right: calc(var(--mp-switch-height));
padding-left: 6px;
}
.mp-switch .wx-switch-input.wx-switch-input-checked::after {
-webkit-transform: translateX(calc(var(--mp-switch-width) - var(--mp-switch-height)));
transform: translateX(calc(var(--mp-switch-width) - var(--mp-switch-height)));
}
</style>
data = {
trueText: '开',
falseText: '关',
checked:false,
width:72,
height: 32,
}
methods = {
onChange() {
this.checked= !this.checked
this.$apply()
},
}