移动端tab切换时下划线的滑动效果

本篇会放置多种下划线滑动效果,一篇一篇增加,更新中

1、当前 tab 出现下划线的同时,前一个下划线同时消失(出现方向与消失方向保持一致),伴随过渡效果。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>change tab</title>
	<style>
		ul {
		  display: flex;
		  position: absolute;
		  width: 800px;
		  top: 50%;
		  left: 50%;
		  transform: translate(-50%, -50%);
		  list-style: none;
		}
		li {
		  position: relative;
		  padding: 20px;
		  color: #000;
		  line-height: 1;
		  transition: 0.2s all linear;
		  cursor: pointer;
		}
		li::before {
		  content: "";
		  position: absolute;
		  top: 0;
		  left: 100%;
		  width: 0;
		  height: 100%;
		  border-bottom: 2px solid #f00;
		  transition: 0.2s all linear;
		}

		li:active {
		  background: #000;
		  color: #fff;
		}

		.active ~ li::before {
		  left: 0;
		}
		.active::before {
		  width: 100%;
		  left: 0;
		  top: 0;
		}
		.hover::before{
			width: 200%;
		}
	</style>
</head>
<body>
	<ul>
	  <li class="active tab" data-index='0'> 张杰 </li>
	  <li class="tab" data-index='1'>周杰伦</li>
	  <li class="tab" data-index='2'>林俊杰</li>
	  <li class="tab" data-index='3'>薛之谦</li>
	  <li class="tab" data-index='4'>你</li>
	</ul>
</body>
<script>
	var lis = document.getElementsByClassName('tab');
	for(var i=0; i<lis.length; i++){
		lis[i].onclick = function(){
			var that = this;
			for(var i=0; i<lis.length; i++){
				lis[i].classList.remove('active')
				this.classList.add('active')
			}
		}
	}
</script>
</html>

 

微信小程序中的tab切换下划线滑动效果是指在用户切换不同tab(标签),底部的指示线会随着当前选中的tab移动,产生滑动效果。这样的效果通常用于给用户提供视觉上的反馈,表明当前所在的页面或选项。 要实现这种效果,可以通过微信小程序提供的组件和API来完成。具体来说,可以通过以下步骤实现: 1. 使用`<view>`标签创建tab栏,并为每个tab设置相应的数据绑定和点击事件处理函数。 2. 使用`wx.createAnimation`创建一个动画实例,并通过动画方法设置下划线的移动效果。 3. 在tab点击事件的回调函数中,根据当前选中的tab位置,更新下划线的样式,使下划线移动到相应的位置。 这里是一个简化的代码示例: ```javascript Page({ data: { activeTab: 0, tabWidth: 250, // 假设每个tab的宽度是250px tabHeight: 40 // 假设下划线的高度是40px }, changeTab(e) { const newActiveTab = e.detail.index; this.setData({ activeTab: newActiveTab }); this.updateUnderline(newActiveTab); }, updateUnderline(index) { const animation = wx.createAnimation({ duration: 300, timingFunction: 'ease', }); const x = index * this.data.tabWidth; animation.move({ x: x, y: 0, duration: 300, timingFunction: 'ease', }).step(); this.setData({ underlineStyle: animation.export() }); } }); ``` 在wxml中定义tab栏和下划线: ```xml <view class="tab-bar"> <block wx:for="{{tabs}}" wx:key="unique"> <view class="tab-item" bindtap="changeTab" data-index="{{index}}" wx:if="{{index === activeTab}}"> {{item.title}} </view> </block> <view class="tab-underline" style="{{underlineStyle}}"></view> </view> ``` 在wxss中设置tab栏和下划线的样式: ```css .tab-bar { display: flex; } .tab-item { height: 40px; line-height: 40px; /* 其他样式 */ } .tab-underline { height: 4px; width: 250px; background-color: #1AAD19; position: absolute; bottom: 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值