style: 调整slider容器的tooltip

This commit is contained in:
zhanghao 2026-07-21 16:30:26 +08:00
parent 498e165713
commit 21adafc3be

View File

@ -67,8 +67,12 @@
<div class="speed-container">
<div class="label">速度</div>
<el-slider v-model="jointSpeed" :min="0.1" :step="0.1" :max="3" />
<div class="proportion">{{ (jointSpeed / 3 * 100).toFixed(0) }} %</div>
<div class="speed-slider" @mouseenter="hoveredSlider = 'joint'" @mouseleave="hoveredSlider = null">
<el-slider v-model="jointSpeed" :min="0.01" :step="0.01" :max="1" :show-tooltip="false" />
<span v-show="hoveredSlider === 'joint'" class="speed-tooltip"
:style="getTooltipPosition(jointSpeed)">{{ formatSpeedTooltip(jointSpeed) }}</span>
</div>
<div class="proportion">{{ (jointSpeed / 1 * 100).toFixed(0) }} %</div>
</div>
</div>
@ -156,8 +160,12 @@
</div>
<div class="speed-container">
<div class="label">速度</div>
<el-slider v-model="endSpeed" :min="0.1" :step="0.1" :max="2" />
<div class="proportion">{{ (endSpeed / 2 * 100).toFixed(0) }} %</div>
<div class="speed-slider" @mouseenter="hoveredSlider = 'end'" @mouseleave="hoveredSlider = null">
<el-slider v-model="endSpeed" :min="0.01" :step="0.01" :max="1" :show-tooltip="false" />
<span v-show="hoveredSlider === 'end'" class="speed-tooltip"
:style="getTooltipPosition(endSpeed)">{{ formatSpeedTooltip(endSpeed) }}</span>
</div>
<div class="proportion">{{ (endSpeed / 1 * 100).toFixed(0) }} %</div>
</div>
</div>
@ -232,8 +240,12 @@
</div>
<div class="speed-container">
<div class="label">速度</div>
<el-slider v-model="postureSpeed" :min="0.1" :step="0.1" :max="2" />
<div class="proportion">{{ (postureSpeed / 2 * 100).toFixed(0) }} %</div>
<div class="speed-slider" @mouseenter="hoveredSlider = 'posture'" @mouseleave="hoveredSlider = null">
<el-slider v-model="postureSpeed" :min="0.01" :step="0.01" :max="1" :show-tooltip="false" />
<span v-show="hoveredSlider === 'posture'" class="speed-tooltip"
:style="getTooltipPosition(postureSpeed)">{{ formatSpeedTooltip(postureSpeed) }}</span>
</div>
<div class="proportion">{{ (postureSpeed / 1 * 100).toFixed(0) }} %</div>
</div>
</div>
</div>
@ -336,6 +348,13 @@ const updateJoint = async (jointName, _dir) => {
const postureSpeed = ref(0.8)
const endSpeed = ref(0.8)
const hoveredSlider = ref(null)
const getTooltipPosition = (value) => ({
left: `${((value - 0.01) / 0.99) * 100}%`
})
const formatSpeedTooltip = (value) => Number(value).toFixed(2)
const speedData = reactive({
vx: 0,
@ -673,6 +692,42 @@ onUnmounted(() => {
width: 100px;
text-align: center;
}
.speed-slider {
position: relative;
flex: 1;
min-width: 0;
.speed-tooltip {
position: absolute;
bottom: calc(100% + 7px);
z-index: 10;
padding: 5px 8px;
border: 1px solid $color-accent-border-strong;
border-radius: 4px;
color: $color-text-bright;
background: $color-background-tooltip-translucent;
box-shadow: 0 4px 12px $color-shadow-tooltip;
font-size: 12px;
line-height: 1;
white-space: nowrap;
pointer-events: none;
transform: translateX(-50%);
&::after {
position: absolute;
top: 100%;
left: 50%;
width: 7px;
height: 7px;
border-right: 1px solid $color-accent-border-strong;
border-bottom: 1px solid $color-accent-border-strong;
background: $color-background-tooltip-translucent;
content: '';
transform: translate(-50%, -50%) rotate(45deg);
}
}
}
}
}
}