Vue.아코디언으로
6083 단어 Vue.js
나는 각양각색의 방법이 있다고 생각하지만, 이것은 나 개인에게 가장 적합한 방법이다.
결론
<template>
<div class="a-accordion">
<button @click="opened = !opened">
Click
</button>
<transition
@before-enter="beforeEnter"
@enter="enter"
@before-leave="beforeLeave"
@leave="leave"
>
<div v-if="opened" class="a-accordion-inner">
Accordion
</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
opened: false
}
},
methods: {
beforeEnter(el) {
el.style.height = '0'
},
enter(el) {
el.style.height = el.scrollHeight + 'px'
},
beforeLeave(el) {
el.style.height = el.scrollHeight + 'px'
},
leave(el) {
el.style.height = '0'
}
}
}
</script>
<style scoped lang="scss">
.a-accordion {
.a-accordion-inner {
overflow: hidden; // 閉じるときに他要素に被らないように必須。
transition: height 0.2s ease-in-out; // 高さの変更に対して連続的に変化させる。
}
}
</style>
요점은overflow
,transition
을 개폐 요소로 지정한다.transion
의 연결로 변경height
.참고 자료
https://jp.vuejs.org/v2/guide/transitions.html
https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions
http://lab.astamuse.co.jp/entry/2018/10/15/154737
https://qiita.com/mimoe/items/7ad8d9ea9fc4299da6bc
Reference
이 문제에 관하여(Vue.아코디언으로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tbc/items/34f2ac15d76227984de2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)