javascript - vue-slick-carousel - 如何禁用点击上一个/下一个箭头按钮
问题描述
我正在关注这个库来制作光滑。
我想禁用arrow-left
和arrow-right
按钮的单击方法,同时将箭头保留在此处,这样它就不会改变幻灯片或任何东西。怎么做?
Codesandbox:
https ://codesandbox.io/s/naughty-matan-55c76?file=/src/components/HelloWorld.vue
解决方案
您可以添加@click.stop
以停止事件传播。查看更多关于事件修饰符的信息。
<VueSlickCarousel>
...
<template #prevArrow>
<button class="arrow-btn">
<img
src="@/assets/images/common/arrow-right.svg"
alt="arrow-left"
@click.stop>
</button>
</template>
<template #nextArrow>
<button class="arrow-btn">
<img
src="@/assets/images/common/arrow-right.svg"
alt="arrow-left"
@click.stop>
</button>
</template>
</VueSlickCarousel>
更新
禁用按钮的点击事件(不仅来自 img)。你可以用css做到这一点:
.arrow-btn {
pointer-events: none;
img {
pointer-events: all;
}
}
但是为什么我们不直接添加@click.stop
到按钮而不是 img 呢?
问题在这里:
...
arrow = this.prevArrow ? (
this.prevArrow(option)[0]
) : (
<button type="button" data-role="none" style="display: block;">
Next
</button>
)
...
mergeVNodeData(arrow, 'on', {
click: () => {
if (clickable) {
this.$emit('arrowClicked', { message: this.type })
}
},
})
首先,它会检查您是否通过了 prevArrow 插槽,如果是,他们将使用您的插槽。如果没有,他们将使用默认按钮。
无论哪种方式,他们都会结合他们的默认道具/事件处理程序,其中包括“点击”事件,这意味着您的点击只会被覆盖。
推荐阅读
- raster - 如何在QGIS中获取每个单元格的面积作为单元格值的栅格?
- python - 如何将文件从 Odoo 中的向导附加到员工?
- graph - 在 Gnuplot 中绘制来自两个不同文件的数据
- typescript - TypeScript Schema 中的 Dynamoose 嵌套映射/数组
- python-3.x - 当前的 TensorFlow 程序使用康奈尔的电影对话数据为 NLP 创建一个数据集。如何重新编程以支持不同的数据集?
- c++ - 我如何存储位置和方向向量
- kubernetes - Istio 虚拟服务与普通 Kubernetes 服务的关系
- kivy - 有没有办法在运行时在 Kivy 中添加屏幕?
- swift - AVFoundation 正在静音音乐
- sql - SQL unpivot over 2 列并保留映射