diff --git a/packages/slider/demo/index.vue b/packages/slider/demo/index.vue index 043eae510..0b299648c 100644 --- a/packages/slider/demo/index.vue +++ b/packages/slider/demo/index.vue @@ -27,10 +27,28 @@ <van-slider v-model="value4" :step="10" + @change="onChange" + /> + </demo-block> + + <demo-block :title="$t('customStyle')"> + <van-slider + v-model="value5" bar-height="4px" @change="onChange" /> </demo-block> + + <demo-block :title="$t('customButton')"> + <van-slider v-model="value6"> + <div + slot="button" + class="custom-button" + > + {{ value6 }} + </div> + </van-slider> + </demo-block> </demo-section> </template> @@ -42,6 +60,8 @@ export default { title2: '指定选择范围', title3: '禁用', title4: '指定步长', + customStyle: '自定义样式', + customButton: '自定义按钮', text: '当前值:' }, 'en-US': { @@ -49,6 +69,8 @@ export default { title2: 'Range', title3: 'Disabled', title4: 'Step size', + customStyle: 'Custom Style', + customButton: 'Custom Button', text: 'Current value: ' } }, @@ -58,7 +80,9 @@ export default { value1: 50, value2: 50, value3: 50, - value4: 50 + value4: 50, + value5: 50, + value6: 50 }; }, @@ -71,11 +95,27 @@ export default { </script> <style lang="less"> +@import '../../style/var'; + .demo-slider { user-select: none; .van-slider { margin: 0 15px 30px; } + + .custom-button { + width: 26px; + color: #fff; + font-size: 10px; + line-height: 18px; + text-align: center; + border-radius: 100px; + background-color: @red; + } + + .van-doc-demo-block__title { + padding-top: 25px; + } } </style> diff --git a/packages/slider/en-US.md b/packages/slider/en-US.md index 68841493b..f58e7308c 100644 --- a/packages/slider/en-US.md +++ b/packages/slider/en-US.md @@ -45,7 +45,26 @@ export default { #### Step size ```html -<van-slider v-model="value" :step="10" bar-height="4px" /> +<van-slider v-model="value" :step="10" /> +``` + +#### Custom style + +```html +<van-slider v-model="value" bar-height="4px" /> +``` + +#### Custom button + +```html +<van-slider v-model="value"> + <div + slot="button" + class="custom-button" + > + {{ value }} + </div> +</van-slider> ``` ### API @@ -64,3 +83,9 @@ export default { | Event | Description | Arguments | |------|------|------| | change | Triggered after value change | value: current rate | + +### Slot + +| Name | Description | +|------|------| +| button | Custom button | diff --git a/packages/slider/index.less b/packages/slider/index.less index 6ebeddf37..c113d2510 100644 --- a/packages/slider/index.less +++ b/packages/slider/index.less @@ -12,24 +12,27 @@ } &__button { - position: absolute; - top: 50%; - right: 0; width: 20px; height: 20px; border-radius: 50%; background-color: @white; - transform: translate3d(50%, -50%, 0); box-shadow: 0 1px 2px rgba(0, 0, 0, .5); - /* use pseudo element to expand touch area */ - &::after { - content: ''; + &-wrapper { position: absolute; - width: 200%; - height: 200%; - top: -50%; - left: -50%; + top: 50%; + right: 0; + transform: translate3d(50%, -50%, 0); + + /* use pseudo element to expand touch area */ + &::after { + content: ''; + position: absolute; + width: 200%; + height: 200%; + top: -50%; + left: -50%; + } } } diff --git a/packages/slider/index.vue b/packages/slider/index.vue index d5692e555..d08ede0fe 100644 --- a/packages/slider/index.vue +++ b/packages/slider/index.vue @@ -7,13 +7,17 @@ :class="b('bar')" :style="barStyle" > - <span - :class="b('button')" + <div + :class="b('button-wrapper')" @touchstart="onTouchStart" @touchmove.prevent.stop="onTouchMove" @touchend="onTouchEnd" @touchcancel="onTouchEnd" - /> + > + <slot name="button"> + <div :class="b('button')" /> + </slot> + </div> </div> </div> </template> diff --git a/packages/slider/test/__snapshots__/demo.spec.js.snap b/packages/slider/test/__snapshots__/demo.spec.js.snap index 90694fe58..cf341afc3 100644 --- a/packages/slider/test/__snapshots__/demo.spec.js.snap +++ b/packages/slider/test/__snapshots__/demo.spec.js.snap @@ -4,22 +4,58 @@ exports[`renders demo correctly 1`] = ` <div> <div> <div class="van-slider"> - <div class="van-slider__bar" style="width:50%;height:2px;"><span class="van-slider__button"></span></div> + <div class="van-slider__bar" style="width:50%;height:2px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> </div> </div> <div> <div class="van-slider"> - <div class="van-slider__bar" style="width:50%;height:2px;"><span class="van-slider__button"></span></div> + <div class="van-slider__bar" style="width:50%;height:2px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> </div> </div> <div> <div class="van-slider van-slider--disabled"> - <div class="van-slider__bar" style="width:50%;height:2px;"><span class="van-slider__button"></span></div> + <div class="van-slider__bar" style="width:50%;height:2px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> </div> </div> <div> <div class="van-slider"> - <div class="van-slider__bar" style="width:50%;height:4px;"><span class="van-slider__button"></span></div> + <div class="van-slider__bar" style="width:50%;height:2px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> + </div> + </div> + <div> + <div class="van-slider"> + <div class="van-slider__bar" style="width:50%;height:4px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> + </div> + </div> + <div> + <div class="van-slider"> + <div class="van-slider__bar" style="width:50%;height:2px;"> + <div class="van-slider__button-wrapper"> + <div class="custom-button"> + 50 + </div> + </div> + </div> </div> </div> </div> diff --git a/packages/slider/test/__snapshots__/index.spec.js.snap b/packages/slider/test/__snapshots__/index.spec.js.snap index 0be3d7053..02d26fc8d 100644 --- a/packages/slider/test/__snapshots__/index.spec.js.snap +++ b/packages/slider/test/__snapshots__/index.spec.js.snap @@ -2,24 +2,40 @@ exports[`click bar 1`] = ` <div class="van-slider van-slider--disabled"> - <div class="van-slider__bar" style="width: 50%; height: 2px;"><span class="van-slider__button"></span></div> + <div class="van-slider__bar" style="width: 50%; height: 2px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> </div> `; exports[`click bar 2`] = ` <div class="van-slider"> - <div class="van-slider__bar" style="width: 100%; height: 2px;"><span class="van-slider__button"></span></div> + <div class="van-slider__bar" style="width: 100%; height: 2px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> </div> `; exports[`drag button 1`] = ` <div class="van-slider van-slider--disabled"> - <div class="van-slider__bar" style="width: 50%; height: 2px;"><span class="van-slider__button"></span></div> + <div class="van-slider__bar" style="width: 50%; height: 2px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> </div> `; exports[`drag button 2`] = ` <div class="van-slider"> - <div class="van-slider__bar" style="width: 100%; height: 2px;"><span class="van-slider__button"></span></div> + <div class="van-slider__bar" style="width: 100%; height: 2px;"> + <div class="van-slider__button-wrapper"> + <div class="van-slider__button"></div> + </div> + </div> </div> `; diff --git a/packages/slider/zh-CN.md b/packages/slider/zh-CN.md index 97d810679..e051ad934 100644 --- a/packages/slider/zh-CN.md +++ b/packages/slider/zh-CN.md @@ -44,7 +44,26 @@ export default { #### 指定步长 ```html -<van-slider v-model="value" :step="10" bar-height="4px" /> +<van-slider v-model="value" :step="10" /> +``` + +#### 自定义样式 + +```html +<van-slider v-model="value" bar-height="4px" /> +``` + +#### 自定义按钮 + +```html +<van-slider v-model="value"> + <div + slot="button" + class="custom-button" + > + {{ value }} + </div> +</van-slider> ``` ### API @@ -63,3 +82,9 @@ export default { | 事件名 | 说明 | 参数 | |------|------|------| | change | 进度值改变后触发 | value: 当前进度 | + +### Slot + +| 名称 | 说明 | +|------|------| +| button | 自定义滑动按钮 | diff --git a/packages/steps/zh-CN.md b/packages/steps/zh-CN.md index 0eb596933..9c6eebca4 100644 --- a/packages/steps/zh-CN.md +++ b/packages/steps/zh-CN.md @@ -64,7 +64,7 @@ export default { ### Steps Slot -| Name | 说明 | +| 名称 | 说明 | |------|------| | icon | 自定义icon区域 | | message-extra | 状态栏添加额外的元素 |