一、实现原理
通过CSS的平移属性来实现滑块跟随滑动(关键属性:transform)
二、使用步骤
1.通过改变括号中X的值来实现滑块左右移动 transform:translateX(x) ;
注:transition-duration: 500ms;滑块的移动时间
代码如下(示例):
.noclick {
transform: translateX(140upx);
transition-duration: 500ms;
}
.click {
transform: translateX(515upx);
transition-duration: 500ms;
}
2.动态添加class
代码如下(示例):
<view class="between share-nav">
<text @click="shareNavClick(0)" :class="navClick=== 0 ?'textclick':'notextclick'">邀请海报</text>
<text @click="shareNavClick(1)" :class="navClick=== 0 ?'notextclick':'textclick'">推广视频</text>
<view class="slider" :class="navClick=== 0 ?'noclick':'click'"></view>
</view>
这是uniapp上的写法,如果写的是原生的话可以在评论区问我
原生Js
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
div{
margin: 0;
padding: 0;
}
.share-nav {
position: relative;
width: 100%;
height: 50px;
font-size: 14px;
background-color: #f4f4f4;
display: flex;
justify-content: space-between;
align-items: center;
}
.nav {
width: 50%;
text-align: center;
height: 50px;
line-height: 50px;
font-size: 16px;
}
.slider {
background-color: #ff4c2c;
width: 40px;
height: 3px;
border-radius: 50px;
position: absolute;
left: 23%;
bottom: 5px;
}
.noclick {
left: 23%;
transition-duration: 500ms;
}
.click {
left: 73%;
transition-duration: 500ms;
}
</style>
</head>
<body>
<div class="share-nav">
<div class="nav" onclick="shareNavClick(0)">邀请海报</div>
<div class="nav" onclick="shareNavClick(1)">推广视频</div>
<div id="sl" class="slider noclick"></div>
</div>
</body>
<script>
var slider = document.getElementById('sl');
function shareNavClick(i) {
console.log(i)
if (i == 0) {
slider.classList.add("noclick");
slider.classList.remove("click");
} else {
slider.classList.add("click");
slider.classList.remove("noclick");
}
}
</script>
</html>