实现一个带有不一样样式的滑块

普通的滑块:

如果要设置带有特别样式的滑块,如类似于这样的:
在这里插入图片描述
你可以设置滑块的透明度为0,样式用图片代替,滑动到某一段距离,展示另一张图片。
具体例子如下:
在微信小程序中实现:

	<view class="slider">
			<view class="img">
				<image :src="sliderSrc" mode="" style="width: 100%;height: 100%;"></image>
			</view>
			<slider step="25" min="0" max="100" :value="currentValue" color="#05271B" activeColor="#F7EAC7" block-size="28"
			 block-color="#F7EAC7" backgroundColor="#FFFFFF" @change="changeSlider" style="opacity:0;margin: 25rpx 36rpx;" />
	</view>
	//滑动方法:
		changeSlider: function(e) {
				console.log(e, 'e----e')
				let value = e.detail.value;
				if (value == 0) {
					this.sliderSrc = '/static/imgs/slider_first.png';
				} else if (value == 25) {
					this.sliderSrc = '/static/imgs/slider_second.png';
				} else if (value == 50) {
					this.sliderSrc = '/static/imgs/slider_three.png';
				} else if (value == 75) {
					this.sliderSrc = '/static/imgs/slider_fourth.png';
				} else if (value == 100) {
					this.sliderSrc = '/static/imgs/slider_five.png';
				}
			},

用html实现也是一样的,只不过滑块使用的是input标签,设置range类型:

  <input id="range" type="range" min="0" value="0" style="opacity: 0;" oninput="change()" />
  
实现一个双向滑块,我们需要使用 HTML、CSS和JavaScript。 1. 首先,我们需要创建一个 HTML 元素作为滑块的容器。 ```html <div class="slider-container"> <div class="slider"></div> <div class="slider"></div> </div> ``` 2. 接下来,我们需要使用 CSS 来设置滑块样式。 ```css .slider-container { width: 80%; margin: 20px auto; display: flex; justify-content: space-between; } .slider { width: 50px; height: 20px; background-color: gray; border-radius: 10px; cursor: pointer; } ``` 这里我们设置了一个容器来包含两个滑块,让它们水平排列。我们使用了 flex 布局来实现这一点。滑块样式包括宽度、高度、背景颜色、边框半径和光标样式。 3. 现在我们需要使用 JavaScript 来实现滑块的交互。我们需要监听滑块的拖动事件,以便在用户拖动滑块时更新滑块的位置和显示当前滑块的值。 ```javascript const sliders = document.querySelectorAll('.slider'); sliders.forEach(slider => { slider.addEventListener('mousedown', startDragging); }); function startDragging(event) { const slider = event.target; const container = slider.parentElement; const startX = event.clientX; document.addEventListener('mousemove', drag); document.addEventListener('mouseup', stopDragging); function drag(event) { const deltaX = event.clientX - startX; let newPosition = parseInt(slider.style.left) + deltaX; const containerWidth = container.offsetWidth - slider.clientWidth; if (newPosition < 0) { newPosition = 0; } else if (newPosition > containerWidth) { newPosition = containerWidth; } slider.style.left = newPosition + 'px'; updateValue(slider, containerWidth); } function stopDragging() { document.removeEventListener('mousemove', drag); document.removeEventListener('mouseup', stopDragging); } } function updateValue(slider, containerWidth) { const value = Math.round((parseInt(slider.style.left) / containerWidth) * 100); slider.setAttribute('data-value', value); } ``` 这段代码首先获取所有滑块,并为每个滑块添加 mousedown 事件监听器。当用户按下鼠标按钮时,事件处理程序会记录开始拖动的位置和滑块的容器的宽度。然后,它会添加 mousemove 和 mouseup 事件监听器,以便在用户拖动滑块时更新滑块的位置。当用户释放鼠标按钮时,处理程序将删除这些事件监听器。 在 drag 函数中,我们计算出用户拖动滑块的距离,并将其添加到滑块的当前位置。我们还检查滑块是否超出了容器的范围,并将其限制在容器内。最后,我们使用 updateValue 函数来更新滑块的值属性。 在 updateValue 函数中,我们计算出滑块的当前值,并将其设置为 data-value 属性。我们可以使用这个属性来获取滑块的值。 4. 最后,我们可以使用 CSS 来显示滑块的值。 ```css .slider::before { content: attr(data-value) '%'; position: absolute; top: -30px; left: 50%; transform: translateX(-50%); font-size: 12px; color: white; } ``` 我们在滑块上使用伪元素 ::before,并设置其内容为滑块的值。我们还将其定位在滑块的顶部,并使用 transform 属性将其水平居中。最后,我们设置字体大小和颜色。 完成以上步骤后,我们就可以创建一个双向滑块了。可以通过拖动滑块来获取滑块的值,并在滑块上显示该值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值