除了vue,我知道如何使用masonry.js
。然而,我在vue框架内正确调用它并使其运作起来遇到了问题。我尝试在created
或ready
中调用它,但似乎都无法正确形成网格。我该如何让它在这个框架内工作?哦,还有在此脚本之前我已经在html中调用了jquery。以下是我在组件内部的代码:
编辑:
我可以看到masonry通过JS分配高度并将项更改为绝对位置影响网格。然而,它没有正确地放置它们。它们被堆叠在彼此上方而不是像网格一样并排放置。
<template>
<div class="projects--container">
<div class="inner-section inner--options">
<div class="grid">
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
</div>
</div>
</div>
</template>
<script>
export default{
ready: function () {
this.mason();
},
data: function () {
return {
options: [
{
option: 'projects',
phrase: 'for clients',
slogan: 'slogan...'
},
{
option: 'sides',
phrase: 'for us',
slogan: 'we love what we make'
},
{
option: 'moments',
phrase: 'with the crew'
}
]
}
},
methods: {
revert: function () {
this.$dispatch('return-home', true)
},
mason: function () {
var $grid = $('.grid').masonry({
itemSelector: '.grid-item',
columnWidth: 250
});
$grid.masonry('layout');
}
},
events: {
'option-select': function (option) {
}
}
}
</script>