[Vue.js] transition-group 수직 스크롤을 실현하는 카셀
11855 단어 Vue.js
완성형
목록을 세로로 자동으로 전환하는 칸을 만들고 싶습니다.
css 화이팅 안 해.js의transtion으로만 실현하고 싶습니다.
일단 블루.js에 목록 보이기
index.vue
<template>
<div class="fruit">
<span v-for="item in items" :key="item.id" class="fruit__list__item">{{ item.title }}</span>
</div>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, title: "apple" },
{ id: 2, title: "banana" },
{ id: 3, title: "orange" },
{ id: 4, title: "peach" },
{ id: 5, title: "plum" },
{ id: 6, title: "grape" }
]
};
}
};
</script>
마지막으로 세 개를 표시합니다. 어쨌든 모두 v-for로 표시합니다.목록 이동을 위한 Vue 프로세스 추가
index.vue
<template>
<!-- itemsをshowItemに変更。他箇所は略。 -->
<span v-for="item in showItem" :key="item.id" class="fruit__list__item">{{ item.title }}</span>
</template>
<script>
export default {
// (略)
created() {
this.scrollUp();
},
computed: {
showItem() {
return this.items.slice(0, 3);
}
},
methods: {
scrollUp() {
window.setInterval(() => {
this.items = this.items.concat(this.items.shift());
}, 2000);
}
}
};
</script>
인스턴스 생성 후 한 번만 수행
created
scrollUp
에서 배열의 0번째를 삭제하고 배열의 뒤에 연결하여 무한 스크롤scrollUp
에서 scrollUp
, 2초마다 정렬 변경setInterval
정렬된 0~3번째 3개만 표시동작을 매끄럽게 하다
목록을
showItem
로 바꿉니다.index.vue
<template>
<div class="fruit">
<transition-group name="fruit-list" tag="p" class="fruit__list">
<span v-for="item in showItem" :key="item.id" class="fruit__list__item">{{ item.title }}</span>
</transition-group>
</div>
</template>
style.scss.fruit {
&__list {
display: flex;
flex-direction: column;
&__item {
margin: 5px;
padding: 5px;
border: 1px solid;
transition: all 1s;
}
}
&-list-enter {
opacity: 0;
transform: translateY(35px);
}
&-list-leave-to {
opacity: 0;
transform: translateY(-35px);
}
&-list-leave-active {
position: absolute;
}
}
transion 부분은 거의 공식과 같기 때문에 자세히 그쪽을 참조하세요.주의점
transition-group
에서 지정하지 않으면v-leave-active
첫 번째 요소는 위로 이동하더라도 후속 요소를 따르지 않습니다.주의
index.vue
<transition-group name="fruit-list" tag="p" class="fruit__list">
<span v-for="(item, index) in showItem" :key="index" class="fruit__list__item">{{ item.title }}</span>
</transition-group>
키를 v-for index로 지정하면 오류가 발생합니다.처음 해봤어요.
position: absolute
index가 아닙니다. item의 id 등으로 지정해야 합니다.참고 자료
Reference
이 문제에 관하여([Vue.js] transition-group 수직 스크롤을 실현하는 카셀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/su_mi1228/items/84732ebe518a79b39dad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)