diff --git a/examples/docs/zh-CN/slider.md b/examples/docs/zh-CN/slider.md index 35d9c8749..bb9f53ffd 100644 --- a/examples/docs/zh-CN/slider.md +++ b/examples/docs/zh-CN/slider.md @@ -237,6 +237,7 @@ | range | 是否为范围选择 | boolean | — | false | | vertical | 是否竖向模式 | boolean | — | false | | height | Slider 高度,竖向模式时必填 | String | — | — | +| label | label for screen reader | String | — | — | | debounce | 输入时的去抖延迟,毫秒,仅在`show-input`等于true时有效 | number | — | 300 | ### Events diff --git a/packages/slider/src/button.vue b/packages/slider/src/button.vue index d48a42622..999e252d6 100644 --- a/packages/slider/src/button.vue +++ b/packages/slider/src/button.vue @@ -6,7 +6,15 @@ @mousedown="onButtonDown" :class="{ 'hover': hovering, 'dragging': dragging }" :style="wrapperStyle" - ref="button"> + ref="button" + tabindex="0" + @focus="handleMouseEnter" + @blur="handleMouseLeave" + @keydown.left="onLeftKeyDown" + @keydown.right="onRightKeyDown" + @keydown.down.prevent="onLeftKeyDown" + @keydown.up.prevent="onRightKeyDown" + > {{ formatValue }}
@@ -125,7 +133,16 @@ window.addEventListener('mouseup', this.onDragEnd); window.addEventListener('contextmenu', this.onDragEnd); }, - + onLeftKeyDown() { + if (this.disabled) return; + this.newPosition = parseFloat(this.currentPosition) - this.step / (this.max - this.min) * 100; + this.setPosition(this.newPosition); + }, + onRightKeyDown() { + if (this.disabled) return; + this.newPosition = parseFloat(this.currentPosition) + this.step / (this.max - this.min) * 100; + this.setPosition(this.newPosition); + }, onDragStart(event) { this.dragging = true; this.isClick = true; @@ -187,7 +204,9 @@ let value = steps * lengthPerStep * (this.max - this.min) * 0.01 + this.min; value = parseFloat(value.toFixed(this.precision)); this.$emit('input', value); - this.$refs.tooltip && this.$refs.tooltip.updatePopper(); + this.$nextTick(() => { + this.$refs.tooltip && this.$refs.tooltip.updatePopper(); + }); if (!this.dragging && this.value !== this.oldValue) { this.oldValue = this.value; } diff --git a/packages/slider/src/main.vue b/packages/slider/src/main.vue index 8ab56e486..b754d7a34 100644 --- a/packages/slider/src/main.vue +++ b/packages/slider/src/main.vue @@ -1,6 +1,12 @@