diff --git a/packages/address-edit/test/__snapshots__/demo.spec.js.snap b/packages/address-edit/test/__snapshots__/demo.spec.js.snap index 61cc2f7e0..ee5f0f5ce 100644 --- a/packages/address-edit/test/__snapshots__/demo.spec.js.snap +++ b/packages/address-edit/test/__snapshots__/demo.spec.js.snap @@ -97,7 +97,7 @@ exports[`renders demo correctly 1`] = ` <!----> </div> <div class="van-cell__value"> - <div title="设为默认收货地址" class="van-switch" style="font-size:26px;"> + <div title="设为默认收货地址" class="van-switch" style="font-size:26px;background-color:undefined;"> <div class="van-switch__node"> <!----> </div> diff --git a/packages/address-edit/test/__snapshots__/index.spec.js.snap b/packages/address-edit/test/__snapshots__/index.spec.js.snap index 239de8ae8..eacaf69da 100644 --- a/packages/address-edit/test/__snapshots__/index.spec.js.snap +++ b/packages/address-edit/test/__snapshots__/index.spec.js.snap @@ -203,7 +203,7 @@ exports[`create a AddressEdit with props 1`] = ` <!----> </div> <div class="van-cell__value"> - <div title="设为默认收货地址" class="van-switch van-switch--on" style="font-size:26px;"> + <div title="设为默认收货地址" class="van-switch van-switch--on" style="font-size:26px;background-color:undefined;"> <div class="van-switch__node"> <!----> </div> diff --git a/packages/switch-cell/test/__snapshots__/demo.spec.js.snap b/packages/switch-cell/test/__snapshots__/demo.spec.js.snap index 6c003620b..c0c42dba4 100644 --- a/packages/switch-cell/test/__snapshots__/demo.spec.js.snap +++ b/packages/switch-cell/test/__snapshots__/demo.spec.js.snap @@ -10,7 +10,7 @@ exports[`renders demo correctly 1`] = ` <!----> </div> <div class="van-cell__value"> - <div title="标题" class="van-switch van-switch--on" style="font-size:26px;"> + <div title="标题" class="van-switch van-switch--on" style="font-size:26px;background-color:undefined;"> <div class="van-switch__node"> <!----> </div> @@ -28,7 +28,7 @@ exports[`renders demo correctly 1`] = ` <!----> </div> <div class="van-cell__value"> - <div title="标题" class="van-switch van-switch--on van-switch--disabled" style="font-size:26px;"> + <div title="标题" class="van-switch van-switch--on van-switch--disabled" style="font-size:26px;background-color:undefined;"> <div class="van-switch__node"> <!----> </div> @@ -46,7 +46,7 @@ exports[`renders demo correctly 1`] = ` <!----> </div> <div class="van-cell__value"> - <div title="标题" class="van-switch van-switch--on" style="font-size:26px;"> + <div title="标题" class="van-switch van-switch--on" style="font-size:26px;background-color:undefined;"> <div class="van-switch__node"> <div class="van-loading van-loading--circular van-loading van-switch__loading" style="color:#c9c9c9;width:undefined;height:undefined;"><span class="van-loading__spinner van-loading__spinner--circular"> <svg viewBox="25 25 50 50" class="van-loading__circular"><circle cx="50" cy="50" r="20" fill="none"></circle></svg></span></div> </div> diff --git a/packages/switch/demo/index.vue b/packages/switch/demo/index.vue index f3ca7e351..5fcee272e 100644 --- a/packages/switch/demo/index.vue +++ b/packages/switch/demo/index.vue @@ -13,7 +13,13 @@ </demo-block> <demo-block :title="$t('advancedUsage')"> - <van-switch :value="checked2" size="36px" @input="onInput" /> + <van-switch + :value="checked2" + size="36px" + active-color="#4b0" + inactive-color="#f44" + @input="onInput" + /> </demo-block> </demo-section> </template> diff --git a/packages/switch/en-US.md b/packages/switch/en-US.md index f7c54e1da..07742bf9f 100644 --- a/packages/switch/en-US.md +++ b/packages/switch/en-US.md @@ -41,7 +41,13 @@ export default { #### Advanced usage ```html -<van-switch :value="checked" size="36px" @input="onInput" /> +<van-switch + :value="checked" + size="36px" + active-color="#4b0" + inactive-color="#f44" + @input="onInput" +/> ``` ```js @@ -73,6 +79,8 @@ export default { | loading | Whether to show loading icon | `Boolean` | `false` | | disabled | Whether to disable switch | `Boolean` | `false` | | size | Size of switch | `String` | `30px` | +| active-color | Background color when active | `String` | `#1989fa` | +| inactive-color | Background color when inactive | `String` | `#fff` | ### Event diff --git a/packages/switch/index.vue b/packages/switch/index.vue index 32e705a00..b79d9e780 100644 --- a/packages/switch/index.vue +++ b/packages/switch/index.vue @@ -23,6 +23,8 @@ export default create({ value: Boolean, loading: Boolean, disabled: Boolean, + activeColor: String, + inactiveColor: String, size: { type: String, default: '30px' @@ -32,7 +34,8 @@ export default create({ computed: { style() { return { - fontSize: this.size + fontSize: this.size, + backgroundColor: this.value ? this.activeColor : this.inactiveColor }; } }, diff --git a/packages/switch/test/__snapshots__/demo.spec.js.snap b/packages/switch/test/__snapshots__/demo.spec.js.snap index 38c8843d8..44196c044 100644 --- a/packages/switch/test/__snapshots__/demo.spec.js.snap +++ b/packages/switch/test/__snapshots__/demo.spec.js.snap @@ -3,28 +3,28 @@ exports[`renders demo correctly 1`] = ` <div> <div> - <div class="van-switch van-switch--on" style="font-size:30px;"> + <div class="van-switch van-switch--on" style="font-size:30px;background-color:undefined;"> <div class="van-switch__node"> <!----> </div> </div> </div> <div> - <div class="van-switch van-switch--on van-switch--disabled" style="font-size:30px;"> + <div class="van-switch van-switch--on van-switch--disabled" style="font-size:30px;background-color:undefined;"> <div class="van-switch__node"> <!----> </div> </div> </div> <div> - <div class="van-switch van-switch--on" style="font-size:30px;"> + <div class="van-switch van-switch--on" style="font-size:30px;background-color:undefined;"> <div class="van-switch__node"> <div class="van-loading van-loading--circular van-loading van-switch__loading" style="color:#c9c9c9;width:undefined;height:undefined;"><span class="van-loading__spinner van-loading__spinner--circular"> <svg viewBox="25 25 50 50" class="van-loading__circular"><circle cx="50" cy="50" r="20" fill="none"></circle></svg></span></div> </div> </div> </div> <div> - <div class="van-switch van-switch--on" style="font-size:36px;"> + <div class="van-switch van-switch--on" style="font-size:36px;background-color:#4b0;"> <div class="van-switch__node"> <!----> </div> diff --git a/packages/switch/zh-CN.md b/packages/switch/zh-CN.md index f0e272f36..2d4e13283 100644 --- a/packages/switch/zh-CN.md +++ b/packages/switch/zh-CN.md @@ -36,7 +36,13 @@ export default { #### 高级用法 ```html -<van-switch :value="checked" size="36px" @input="onInput" /> +<van-switch + :value="checked" + size="36px" + active-color="#4b0" + inactive-color="#f44" + @input="onInput" +/> ``` ```js @@ -69,6 +75,8 @@ export default { | loading | 是否为加载状态 | `Boolean` | `false` | - | | disabled | 是否为禁用状态 | `Boolean` | `false` | - | | size | 开关尺寸 | `String` | `30px` | 1.0.0 | +| active-color | 打开时的背景色 | `String` | `#1989fa` | 1.3.11 | +| inactive-color | 关闭时的背景色 | `String` | `#fff` | 1.3.11 | ### Event diff --git a/packages/vant-css/src/switch.css b/packages/vant-css/src/switch.css index 5afdf960f..0a1985896 100644 --- a/packages/vant-css/src/switch.css +++ b/packages/vant-css/src/switch.css @@ -2,13 +2,14 @@ .van-switch { height: 1em; - width: 1.6em; + width: 1.8em; display: inline-block; position: relative; - background: $white; + border-radius: 1em; box-sizing: content-box; border: 1px solid rgba(0, 0, 0, .1); - border-radius: 1em; + background-color: $white; + transition: background-color .3s; &__node { top: 0; @@ -34,7 +35,7 @@ background-color: $blue; .van-switch__node { - transform: translateX(.6em); + transform: translateX(.8em); } }