【发布时间】:2018-01-31 11:46:20
【问题描述】:
在我的 SPA 前面,我有 580 个高度 div,其中包含 9 个较小的 div(大约 190px 高度)。父 div 有 overflow: hidden 所以我一次只能看到 3 个元素。每 5 秒我改变样式 - 我添加了否定的 margin-top,所以看起来它们向上滚动并且新的 3 来自向下。
<div class="most__popular"
v-for="n, i in articles" :key="n.id"
:style="{margin: sliderMargin[i]}">
-
data() {
return {
articles: [],
errors: [],
step: 0
}
},
mounted() {
setInterval(() => {
this.step = (this.step + 1) % 3;
}, 5000);
},
computed: {
sliderMargin() {
const thresholds = [0, 3, 6];
return this.articles.map((_, i) =>
`${(i > thresholds[this.step]) ? '10px' : '-190px'} 0 10px 0`
);
}
}
articles 只是硬编码的 JSON 数据,包含 9 条记录。
它工作正常,但是当我稍微滚动页面时,我只看到最后一个元素(这个 580 高度父 div 的底部),当它从第三步变为第一步时(从 7,8,9 子 div 到 1,2, 3)它向下滚动我的页面..
我不希望它影响整个页面,我该如何解决这个问题?
编辑
我添加repository demo,让它在你的机器上运行:
安装 GIT 和 NodeJS(如果你还没有,你可能无法帮助我)
- 克隆/下载它
git clone https://dopeCode@bitbucket.org/dopeCode/scrolling-issue.git - 在 bash/cmd
cd path/where/you've/cloned中选择这个项目 - 在 bash/cmd 中运行
npm install - 在 bash/cmd 中运行
npm run dev - 在浏览器中访问 localhost:8080
稍微滚动页面,这样你就只能看到显示的 3 的最后一个元素。
【问题讨论】:
-
请发布一个工作代码示例,否则将很难测试。
-
我可以创建演示库我不知道如何在 plunker 中重现组件
-
@BT101 分享演示库网址
-
@BT101 你的 package.json 是否有你在这个项目中使用的所有 npm 包的条目?你能确认一下吗?
-
@divine 是的,我只在这个演示项目中使用过 vue,只是克隆进去,然后在 bash
cd path/to/it中选择它,然后使用 npm install 然后 npm run dev 它应该在端口 8080 上自动启动
标签: javascript css vue.js vuejs2