uni-app slider组件能自定义样式

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app slider组件能自定义样式

滑动滑块input里面的值跟随改变

图片

1 回复

在uni-app中,虽然slider组件本身提供了一些基础的样式属性(如active-colorbackground-colorblock-color等),但有时候这些属性可能无法满足我们的定制化需求。为了实现更复杂的自定义样式,我们可以结合CSS样式和slot插槽来增强slider组件的外观和功能。

以下是一个示例,展示如何通过自定义样式和插槽来增强slider组件:

<template>
  <view class="container">
    <!-- 自定义样式的slider -->
    <slider
      class="custom-slider"
      :value="sliderValue"
      @change="onSliderChange"
    >
      <!-- 使用插槽自定义滑块 -->
      <view class="slider-thumb" slot="thumb">
        <!-- 这里可以放置自定义的图标或样式 -->
        <image class="thumb-image" src="/static/thumb.png" />
      </view>
    </slider>
  </view>
</template>

<script>
export default {
  data() {
    return {
      sliderValue: 50
    };
  },
  methods: {
    onSliderChange(e) {
      this.sliderValue = e.detail.value;
      console.log('Slider value:', this.sliderValue);
    }
  }
};
</script>

<style scoped>
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.custom-slider {
  width: 80%;
  height: 4px;
  background-color: #e0e0e0;
  border-radius: 2px;
}

/* 自定义滑块轨道的激活部分样式 */
.custom-slider::v-deep .uni-slider-track-active {
  background-color: #ff4081;
  border-radius: 2px;
}

/* 自定义滑块样式 */
.slider-thumb {
  width: 24px;
  height: 24px;
  background-color: #fff;
  border: 2px solid #ff4081;
  border-radius: 50%;
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);
  display: flex;
  justify-content: center;
  align-items: center;
}

.thumb-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
}
</style>

在这个示例中,我们通过::v-deep伪元素选择器来自定义slider组件内部的track激活部分的样式。同时,利用slot="thumb"插槽来自定义滑块的外观,这里我们放置了一个图片作为滑块的图标。

注意:::v-deep选择器是Vue 3的Composition API中引入的用于穿透组件样式封装的选择器,如果你使用的是Vue 2或uni-app的某些旧版本,可能需要使用/deep/>>>来代替。

以上代码展示了如何通过组合使用CSS和插槽来自定义slider组件的样式,满足更复杂的UI需求。

回到顶部