css - 有没有办法使 css 属性与 vuejs @scroll 反应?
问题描述
我正在我的项目中制作一个 vuejs 组件,我需要在 div 中创建一个带有滚动的缩放(如 googlemaps)。
<div @scroll="scroll">
<Plotly :data="info" :layout="layout" :display-mode-bar="false"></Plotly>
</div>
<style>
div {
transform: scale(property1);
}
<\style>
<script>
export default {
methods: {
scroll(event) {
},
},
created() {
window.addEventListener('scroll', this.scroll);
},
destroyed() {
window.removeEventListener('scroll', this.scroll);
}
}
</script>
我怎样才能制作一种使“property1”反应的方法?或者还有另一种方法可以仅滚动 div 进行缩放?
解决方案
您可以将动态样式对象绑定到您的对象,div
其中包括transform
具有动态值的属性(有关更深入的解释,请参阅文档):
<div @scroll="scroll" :style="{ transform : `scale(${property1})`}">
<Plotly :data="info" :layout="layout" :display-mode-bar="false"></Plotly>
</div>
new Vue({
...
data() {
return {
property1: defaultValue
}
},
methods : {
scroll(e){
// e is the event emitted from the scroll listener
this.property1 = someValue
}
}
})
您还可以在模板中添加一些修饰符,如文档中所示,以减少方法代码(这里我们可以防止页面在用户悬停此特定元素时滚动时滚动):
<div @scroll.self.stop="scroll" :style="{ transform : `scale(${property1})`}">
<Plotly :data="info" :layout="layout" :display-mode-bar="false"></Plotly>
</div>
推荐阅读
- django - 我可以在 Django 的模板标签内有模板标签吗?
- filter - Halcon - 什么是最快的模糊滤镜可用
- reactjs - 如何将大量数据从spring boot加载到reactjs?
- google-maps - Google VMS - 车辆地图服务
- azure - 您如何知道您正在访问哪个 Azure 应用服务实例?
- php - 我如何从这种类型的数据库中制作播种机 [Laravel]
- python - Pypsark 解压缩具有不同长度的嵌套字符串列表的列
- uwp - UWP 应用程序 - 在商店发布后是否可以删除提交
- ios - 应用构建成功,上传显示成功但未显示在应用商店连接/我的应用/活动选项卡上?
- typescript - 是否可以使用 Paperjs 在同一路径中使用不同的笔触颜色绘制图形?