vue-列表下详情的展开与折叠案例


Posted in Javascript onJuly 28, 2020

如下所示:

vue-列表下详情的展开与折叠案例

功能描述

1、默认折叠,点击时展示全部数据

2、点击A项,A展开,之后有两种情况:①再次点击A,A折叠;②点击其他项,如B,这时B展开,A折叠

解决方式

1、给展开折叠图标添加一个样式,显示成动画效果

<div class="arrow" :class="{'open':showDetail === index}"></div>
.arrow{
 position absolute
 width: 0.6rem;
 height: 0.3rem;
 top 2.0rem
 right 0.8rem
 background url(../../../assets/images/icon_up.png) no-repeat
 background-size: 100% 100%
 transition: transform 0.3s
 -webkit-transition: transform 0.3s
 &.open{
 transform : rotate(-180deg)
 }
}

2、详情样式

<transition-group class="expert-detail" tag="div" mode="">
 <div v-for="i in 1" :key="i" class="detail" :ref="`stateopen${index}`" v-show="showDetail===index">
...
 </div>
</transition-group>

3、方法详情

// 展开与折叠
// 分析:
// 1,showDetail默认为-1,第一次任意点击B,当前B对象展开,showDetail=index=n,此时有两种情况:
// 情况1,再次点击B,showDetail===index,B关闭,showDetail=-1
// 情况2,点击B以外的其他对象C,先关闭B,在打开当前对象C
foldAndUnfold(index,item){
 if(this.showDetail===index){//两次点击的对象相同,关闭
 this.showDetail = -1
 }else{//点击的对象不同,先关闭前一对象,再打开当前对象
 this.showDetail = index
 }
}

补充知识: Vue table 点击按钮展开折叠面板

vue 实现的 table 折叠展开功能,由于工作中用到,这里把相应代码整理下,方便自己日后 Copy

1.Html 部分

由基本的 table 表单与折叠栏部分组成

PS:table 上需要加上 ref,以便方法中能够获取到 table 属性

<!-- 注意:el-table 上加一个 ref="table" -->
 <el-table ref="table" :data="list" border style="width: 100%; margin-top:20px; min-height:700px">
  <el-table-column align="center" label="编号">
  <template slot-scope="scope">
   <span>{{ id }}</span>
  </template>
  </el-table-column>
 
  <el-table-column align="center" label="姓名">
  <template slot-scope="scope">
   <span>{{ name }}</span>
  </template>
  </el-table-column>
 
  <el-table-column label="操作" width="300" align="center" prop="operation">
  <template slot-scope="scope">
   <el-button plain @click="toogleExpand(scope.row)">详情</el-button>
  </template>
  </el-table-column>
 
  <!-- 展开部分 -->
  <el-table-column type="expand" width="1">
  <template slot-scope="props">
   <el-form label-position="left" inline class="demo-table-expand">
   <!-- 参数列表 -->
   <el-form-item label="1111" label-width="100%">
    aaa
   </el-form-item>
   </el-form>
 
  </template>
  </el-table-column>
 </el-table>

2. vue 的 JS 部分

<script>
 export default {
  data() {
  return {
   list: [{
   id: '1',
   name: '王小1',
   }, {
   id: '2',
   name: '王小2',
   }, {
   id: '3',
   name: '王小3',
   }, {
   id: '4',
   name: '王小4',
   }]
  }
  },
  
  methods: {
  // 展开行效果
  toogleExpand(row) {
   const $table = this.$refs.table
   // 注意,这里的 this.list 是上面 data 中的 list
   // 通过比对数据与行里的数据,对展开行进行控制,获取对应值
   this.list.map((item) => {
   if (row.id !== item.id) {
    $table.toggleRowExpansion(item, false)
   }
   })
   $table.toggleRowExpansion(row)
  },
  }
 }
 </script>

3.css 部分

这里除了基本的属性外,主要我发现展开栏部分会有空白各自部分,还能拖开,因此加属性把多余部分给隐藏掉

下方有注释

<style>
 /* 展开行样式 */
 .demo-table-expand {
 font-size: 0;
 }
 .demo-table-expand label {
 width: 90px;
 color: #99a9bf;
 }
 .demo-table-expand .el-form-item {
 margin-right: 0;
 margin-bottom: 0;
 width: 100%;
 }
 .el-form-item__content {
 width: 100%;
 }
 /* 隐藏上方表格多余部分 */
 .undefined.el-table__expand-column {
 display: none;
 }
 /* 隐藏上方表格多余部分 */
 .el-table_1_column_8 .el-table--border td, .el-table--border th, .el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed {
 border-right: 0px solid #ebeef5
 }
</style>

4.效果图

这个效果图是我后面补的,但是功能是以上面来做的

vue-列表下详情的展开与折叠案例

以上这篇vue-列表下详情的展开与折叠案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浅说js变量
May 25 Javascript
jQuery代码优化 遍历篇
Nov 01 Javascript
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
用javascript关闭本窗口不弹出询问框的方法
Sep 12 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
详解Jquery的事件操作和文档操作
Dec 19 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
js中自定义react数据验证组件实例详解
Oct 19 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
微信小程序使用 vant Dialog组件的正确方式
Feb 21 Javascript
全面解析js中的原型,原型对象,原型链
Jan 25 Javascript
js 数组当前行添加数据方法详解
Jul 28 #Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
Jul 28 #Javascript
JS代码简洁方式之函数方法详解
Jul 28 #Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 #Javascript
JavaScript前端开发时数值运算的小技巧
Jul 28 #Javascript
js实现全选和全不选
Jul 28 #Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 #Javascript
You might like
php 无限级 SelectTree 类
2009/05/19 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
script标签属性type与language使用选择
2012/12/02 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
js密码强度校验
2015/11/10 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
低版本中Python除法运算小技巧
2015/04/05 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
Python FFT合成波形的实例
2019/12/04 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
UNIX命令速查表
2012/03/10 面试题
中餐厅主管的职责范文
2014/02/04 职场文书
春节请假条
2014/04/11 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
医院护士工作检讨书
2014/10/26 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
多人股份制合作协议书
2016/03/19 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis