美文网首页前端开发那些事儿
vue实现一个展开收起

vue实现一个展开收起

作者: 明眸yh | 来源:发表于2021-02-19 17:54 被阅读0次

    需求

    默认显示三行高度的数据,点击展开全部展示,点击收起还原显示三行数据

    效果图

    思路

    默认设置高度,超出部分隐藏,点击展开去掉高度

    代码

    来点假数据

    proNameList: [
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    },
    {
      project_id: 1,
      project_name: "初始项目"
    }
    ]
    
    

    html页面

    <div class="select-box">
      <div class="select-box-top">
        <label>项目名称</label>
        <span v-if="isShowNameType" @click="handleIsShowNameType">展开</span>
        <span v-if="!isShowNameType" @click="handleIsShowNameType">收起</span>
      </div>
      <ul class="select-list" :style="isShowNameType ? activeNameStyle : showNameStyle">
        <li
          @click="selectNameType(index, item)"
          v-for="(item, index) in proNameList"
          :class="activeNameIndex == index ? 'active' : ''"
          :key="index"
        >
          {{ item.project_name }}
        </li>
      </ul>
    </div>
    

    js代码:

    data() {
      return {
        activeNameStyle: 'height: 1.44rem; overflow: hidden;',
        showNameStyle: 'min-height: 1.44rem;',
        isShowNameType: true,
        activeNameIndex: null,
      }
    },
    methods: {
      handleIsShowNameType() {
        this.isShowNameType = !this.isShowNameType;
      },
      selectNameType(index, item) {
        this.activeNameIndex = index;
      },
    }
    

    css代码省略
    单纯为了实现效果,细节还需进一步优化,欢迎提出其他意见

    相关文章

      网友评论

        本文标题:vue实现一个展开收起

        本文链接:https://www.haomeiwen.com/subject/bciaxltx.html