elementui中有一个el-carousel跑马灯组件,这个组件作为滚动循环广告等来使用是非常合适的。但是在实际使用中也是有坑的,比如跑马灯的高度是通过vue组件属性props固定的。默认是300px高。然而在实际项目中,往往需要跑马灯的高度能够动态改变,来达到需要的显示效果。特别是如果跑马灯里面的item的高度比外层总的固定高度更高,那么跑马灯里面item的内容就会显示不全。
下面是跑马灯组件的实际效果:
为了解决这个高度固定不变,不能动态自适应的问题,要通过自己撸代码的方式解决。
首先需要获取到跑马灯里面的每个item元素:
1 | this.$nextTick(()=>{ |
在mounted()钩子函数中,每次通过for循环,获取到跑马灯中多个item中最高的一个height。用这个最高的高度来作为跑马灯的高度,这样一来,跑马灯中所有item中内容都不会超出跑马灯的最大高度。
1 | <el-carousel :interval="4000" arrow="always" :height="ca_height"> |
在vue中通过数据绑定,将高度值绑定到跑马灯的属性中,这样跑马灯的高度就可以实时改变。
另外,为了适应屏幕缩放带来的高度问题,需要监听onresize,每当屏幕缩放改变时,重新计算跑马灯的高度。
1 | data() { |
以上就是elementui中跑马灯实现高度自适应的基本思想和部分代码,可以基于这种实现思路,自己尝试一些变化。