移动端 选择框内容过长解决方案之一 以vux popup-picker为例子。

本文介绍了一种解决移动端vuxpopup-picker组件中长选项显示不全的问题的方法,通过添加滚动动画确保所有选项内容都能被用户查看,适用于选项值过长的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

移动端 选择框内容过长解决方案之一 以vux popup-picker为例子。
vux popup-picker当选项值过长的时候全部显示解决方案之一。
该说的,都写在注释中了。

效果图

在这里插入图片描述


实现步骤

1.对popup-picker组件添加on-shadow-change函数(即滑动picker时触发)
<popup-picker @on-shadow-change="onShadowChange" :columns="3" title="标题" :data="data" v-model="val" show-name></popup-picker>
2.在css中用css3动画 animation属性写好横向滚动的样式
.vux-popup-picker .vux-flex-row .vux-flexbox-item:nth-child(3) .scroller-item {
	/*统一piker选项值文字居左对齐,保证在滚动结束后文字能统一居左*/
	/*以此类推,如果是其他的框架组件,也是这样,先找到对应piker样式再更改*/
	text-align: left;
}

/*使用css3 animation属性实现滚动*/
.changeClass {
  overflow: auto!important;
  width: 300px; /*需要设置宽度*/
  -webkit-animation: marquee 3s linear 1;
  animation: marquee 3s linear 1;
}
@keyframes marquee {
  0% {
      transform: translateX(10px);
  }
  100% {
      transform: translateX(-210px);
  }
}
3.声明onShadowChange函数,控制什么时候滚动
onShadowChange() {
	// divVaue获取到选择项的文字值,divWidth为当前选项块的宽度 - 关键是找到对应的值即可
	var divVaue = $(".vux-popup-picker .vux-flex-row").find(".vux-flexbox-item").eq(2).find(".scroller-item-selected").text(), divWidth=$(".vux-popup-picker .vux-flex-row").find(".vux-flexbox-item").eq(2).width();
	if (divVaue && divVaue!=="" && divVaue!==" ") { //当第三选项有值得时候
		$(".vux-popup-picker .vux-flex-row").find(".vux-flexbox-item").eq(2).find(".changeClass").each(function() {
			$(this).removeClass("changeClass");//清除changeClass,保证往回滑或者关闭后重新选择能继续滚动
		});
		if (divVaue.length >= parseInt(divWidth/16)) {
			//当文字超出或者等于第三选项块的宽度的时候横向旋转一圈,全部显示。(当前字体大小为16px)
			$(".vux-popup-picker .vux-flex-row").find(".vux-flexbox-item").eq(2).find(".scroller-item-selected").addClass("changeClass")
		}
	}
}

总结

通过piker滑动的函数来触发是否需要滚动以显示全部的文字。关键是找到对应的节点位置和css3动画滚动样式。

关于此类问题,即便是框架组件不同,均可以此类推来实现。
即:

  1. 找到节点位置(如通过jq去找 class节点);
  2. 通过js在对应节点上添加滚动的css样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙云敏同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值