实现展开收起功能最简单的方法!

news/2024/7/10 1:50:03 标签: vue, ant design, 展开收起

系统前端框架为 Ant Design,数据用Mock模拟.

【效果图】
在这里插入图片描述
【思路】
1、用一个全局变量 fold 控制 “ 展开收起 ” 文字和箭头,默认为true展开状态: @click="fold = !fold"
2、对于内容:v-for循环时用 v-if 判断每一个 item 的 index,v-if="index<16 || fold"

收起状态下: fold = false , 大于一行的容量16个后,index<16 也为false , 第二行的节点不再显示;

点击展开,fold = true,原本隐藏的节点重新显示。

【代码】

<div class="top">
        <div class="left">场景:</div>
        <!-- 展开/收起 -->
        <div class="right">
          <a v-if="sceneList.array.length > 20" @click="fold = !fold" style="margin-right: 34px">
            {{ fold ? "收起" : "展开" }}
            <a-icon :type="fold ? 'up' : 'down'" />
          </a>
        </div>
        <!-- 场景列表 -->
        <div class="center">
          <template v-for="(item, index) in sceneList.array">
            <a-checkable-tag
              v-if="index<16 || fold"
              :key="index"
              :checked="selectedScene == item.id"
              @change="handleSelectScene(item)"
              :class="selectedScene == item.id ? 'tag-disabled-checked' : ''"
              style="margin: 0 25px 0 0;"
            >
              {{ item.scene }}
            </a-checkable-tag>
          </template>
        </div>
      </div>
import Mock from 'mockjs2'
import * as echarts from 'echarts'
export default {
  data () {
    return {
      // 模拟场景
      sceneList: Mock.mock({
        'array|25': [
          {
            'id|+1': 1,
            'scene|+1': ['炒青菜', '炖豆腐', '卤猪蹄', '烧花鸭', '烧子鹅']
          }
        ]
      }),
      selectedScene: '1', // 保存选择的场景
      fold: true, // 场景展开或收起
    }
  },
  mounted () {
    this.showChart()
  },
  methods: {
    // 点击场景触发事件
    handleSelectScene (e) {
      console.log('You are interested in: ' + JSON.stringify(e.id))
      this.selectedScene = JSON.stringify(e.id)
    }
  }
}
.top {
      padding-top: 20px;
      .left {
        width: 75px;
        padding-left: 30px;
        float: left;
      }
      .right {
        width: 110px;
        float: right;
      }
      .center {
        margin: 0px 110px 0px 75px;
        width: 84%;
      }
    }

http://www.niftyadmin.cn/n/1486127.html

相关文章

【JS】forEach, for in, for of

forEach遍历数组 缺点&#xff1a;不能同时遍历多个集合&#xff0c;在遍历的时候无法修改和删除集合数据&#xff0c; 方法不能使用break&#xff0c;continue语句跳出循环&#xff0c;或者使用return从函数体返回&#xff0c;对于空 数组不会执行回调函数 优点&#xff1a;…

(转)有关TinyXML使用的简单总结

From: http://www.cnblogs.com/freecoder/archive/2006/08/07/TinyXmlStapleA.html 这次使用了TinyXML后&#xff0c;觉得这个东西真是不错&#xff0c;于是将使用方法坐下总结来和大家分享。 该解析库在开源网站&#xff08;http://sourceforge.net &#xff09;上有下载&a…

关闭浏览器时实现用户登出(关闭页面时不登出)——全网最有用

1、 登录时设置cookie标志位 try {const result await login({account: values.mobile,password: shajs(sha1).update(values.password).digest(hex),verifyCode: values.code,randomNum: this.uuidNumber })this.$ls.set(ACCESS_TOKEN, result.data.access_token, 24 * 60 *…

前端技巧常用工具箱

2019独角兽企业重金招聘Python工程师标准>>> 基础&#xff1a; JavaScript tests & Compatibility tables&#xff1a; http://robertnyman.com/javascript/ http://scriptsrc.net/ &#xff08;收集了Google 提供的 js API路径&#xff0c;直接点击复制就可以获…

【JS】获取当前时间戳以及计算时间差 +【AntDesign】时间日期控件计算差值踩坑

【时间Date转时间戳】 const d Date.now() // 结果&#xff1a;1625573962353 const d1 (new Date()).valueOf(); // 结果&#xff1a;1625573962353&#xff0c;通过valueOf()函数返回指定对象的原始值获得准确的时间戳值&#xff1b;const d2 new Date().getTime(); // 结…

博客×××作

今天开通了我在互联网上的第一个博客&#xff0c;这就算我第一篇博言了。在这里开通博客主要是看好51CTO这个好的平台&#xff0c;不追求别的&#xff0c;只为那些会常用到的技术文章等找个家……转载于:https://blog.51cto.com/ytyda/502282

subversion 和apache 整合

subversion 和apache 整合 1 yum install sub* -y 2 yum install httpd-* mysql-* php-* -y 创建数据仓库,创建数据仓库的目录 3 mkdir -p /date/subversion/repos 4 mkdir -p /var/gftech/subversion/repos 5 svnadmin create /var/gftech/subversion/repos &#xff08;创建…

github如何删除repository

1、点进要删除的项目 2、点击settings 3、滑到最下方&#xff0c;点击delete this repository