【前端开发】图例宽度根据数值自适应

@前端开发

先看结果图

在这里插入图片描述
在这里插入图片描述
图例的宽度会随数值的改变而变化。

HTML部分

<!-- 数值部分 -->
<ul class="tuli" ref="num">
	<li
		style="
			margin-top: 5px;
			padding: 0 5px;
			text-align: center;
		"
		v-for="item of itemArr"
		:key="item.val"
	>
		{{ item.val }}
	</li>
</ul>

通过 v-for 对 itemArr 进行遍历生成 li 标签,每个数值左右各留了 5px 的内边距,整体与色块之间有 5px 的上外边距。

CSS部分

.tuli {
	display: flex;
	width: 100%;
	li {
		height: 11px;
		line-height: 14px;
		font-size: 14px;
		color: #333;
	}
}

JavaScipt部分

// 接收图例数据
this.$bus.$on("changeLegend", (val) => {
	// 清除上一次的width,这一步一定不能少
	let lis = [...this.$refs.num.children];
	lis.forEach((li) => {
		li.style.width = "";
	});
	// 赋值
	this.itemArr = val;
	// 渲染后
	this.$nextTick(() => {
		// 获取图例数值span的最大宽度
		let lis = [...this.$refs.num.children];
		let maxW = this.$refs.num.children[0].offsetWidth;
		lis.forEach((li) => {
			if (maxW < li.offsetWidth) {
				maxW = li.offsetWidth;
			}
		});
		this.width = maxW;
		// 将每个span的宽度都改成maxW
		lis.forEach((li) => {
			li.style.width = maxW + "px";
		});
	});
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值