前端导航栏底部滑块滑动切换功能

这篇博客介绍了如何利用CSS的transform属性和transition属性,动态改变滑块的位置,以实现导航栏选项切换时滑块跟随移动的效果。示例代码分别展示了uniapp和原生JS的实现方式,详细解释了添加和移除class来控制滑块移动的逻辑。
摘要由CSDN通过智能技术生成


一、实现原理

通过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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值