Vue是一个流行的JavaScript框架,用于构建交互性强、性能高的Web应用程序。在Vue应用程序中,表格是常见的UI组件,其中常常需要实现隐藏行折叠效果来提高用户体验。本篇文章将介绍一种实现Vue表格隐藏行折叠效果的方法。
实现步骤
<template> <div> <table> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>身高</th> </tr> </thead> <tbody> <tr v-for="(item,index) in tableData" :key="index"> <td>{{item.name}}</td> <td>{{item.age}}</td> <td>{{item.height}}</td> <td class="fold" @click="foldRow(index)"></td> </tr> </tbody> </table> </div> </template>
<script> export default { data() { return { tableData: [ { name: '小明', age: '20', height: '180' }, { name: '小红', age: '19', height: '170' }, { name: '小刚', age: '22', height: '185' }, ], foldArr: [], }; }, created() { this.foldArr = new Array(this.tableData.length).fill(false); }, methods: { foldRow(index) { this.foldArr.splice(index, 1, !this.foldArr[index]); }, }, }; </script>
<template> <div v-show="foldArr[index]"> <p>{{item.intro}}</p> </div> </template> <script> export default { props: ['item', 'index', 'foldArr'], }; </script>
<template> <div> <table> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>身高</th> </tr> </thead> <tbody> <tr v-for="(item,index) in tableData" :key="index"> <td>{{item.name}}</td> <td>{{item.age}}</td> <td>{{item.height}}</td> <td class="fold" @click="foldRow(index)"></td> </tr> <tr v-for="(item,index) in tableData" :key="index"> <td colspan="4" v-if="foldArr[index]"> <fold-row :item="item" :index="index" :foldArr="foldArr"></fold-row> </td> </tr> </tbody> </table> </div> </template> <script> import FoldRow from '@/components/FoldRow.vue'; export default { components: { FoldRow, }, data() { return { tableData: [ { name: '小明', age: '20', height: '180', intro: '我是小明,今年20岁,身高180cm' }, { name: '小红', age: '19', height: '170', intro: '我是小红,今年19岁,身高170cm' }, { name: '小刚', age: '22', height: '185', intro: '我是小刚,今年22岁,身高185cm' }, ], foldArr: [], }; }, created() { this.foldArr = new Array(this.tableData.length).fill(false); }, methods: { foldRow(index) { this.foldArr.splice(index, 1, !this.foldArr[index]); }, }, }; </script>
<style lang="scss"> .fold { position: relative; width: 0; height: 0; &:before, &:after { position: absolute; left: 50%; transform: translateX(-50%); content: ''; width: 6px; height: 6px; border-radius: 50%; background-color: #999; transition: all 0.2s ease; } &:before { top: 0; } &:after { bottom: 0; } } .fold.folded:before { transform: translateY(2px) translateX(-50%) rotate(45deg); } .fold.folded:after { transform: translateY(-2px) translateX(-50%) rotate(-45deg); } </style>
至此,我们已成功地实现了Vue表格隐藏行折叠效果。通过这个方法,我们可以轻松地提升用户体验,让用户更加便捷地查看和管理表格数据。
以上是Vue表格隐藏行折叠效果怎么实现的详细内容。更多信息请关注PHP中文网其他相关文章!