vue中实现超出一行 展开和收起的功能

html中:

  <div
                    class="txttype"
                    ref="txttype"
                    style="margin-bottom: 6px"
                    :class="hidetext == true ? 'hidetext' : ''"
                  >
                    <div style="width: 96%">
                      <el-tag
                        type="info"
                        style="margin-right: 10px"
                        v-for="(item, index) of formTempData.userList"
                        :key="index"
                      >
                        {{ item.userName }}
                      </el-tag>
                    </div>
                    <a class="more" v-if="nomore" @click="lookmore"
                      >{{ moretext
                      }}<i
                        :class="
                          hidetext == false
                            ? 'el-icon-arrow-up'
                            : 'el-icon-arrow-down'
                        "
                      ></i
                    ></a>
                  </div>

data中定义变量

data(){
         moretext: "查看更多",
         nomore: false,
         hidetext: false,
         userList: [
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
          { userName: "王赵东" },
          { userName: "江小敏" },
        ],
}

方法中:

  mounted() {
    this.changeHeight();
  },
  methods: {
    changeHeight() {
      //通过ref获取对应dom节点的高度,注意20为单行时的高度
      let height = this.$refs.txttype.clientHeight;
      //当获取的高度大于20时,即当前文本为多行,设置添加收起文本的class,
      //当获取的高度等于20时,隐藏查看更多按钮
      if (height > 34) {
        this.hidetext = true;
        this.nomore = true;
      } else if (height <= 34) {
        this.nomore = false;
      }
    },
      //查看更多
    lookmore() {
      this.hidetext = !this.hidetext;
      this.moretext = this.hidetext == true ? "查看更多" : "收起";
    }
    }

css样式中:

.txttype {
  position: relative;
  .more {
    position: absolute;
    top: 0px;
    right: 0px;
    color: #2878ff;
  }
}
.hidetext {
  height: 34px;
  overflow: hidden;
}

实现效果如下:人员超过一行的时候
在这里插入图片描述
在这里插入图片描述
人员没有超过一行的时候 不显示下拉和收起效果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue和element-ui库提供的element-UI组件可以很容易地实现展开收起功能。 首先,我们可以使用element-ui的Collapse组件来创建一个可收缩的容器。在需要收起展开的元素外面包裹一个<Collapse>标签,在其添加<CollapseItem>标签作为子组件。例如,我们可以像下面这样定义一个简单的容器: ``` <template> <div> <el-collapse v-model="activeNames"> <el-collapse-item title="点击展开内容" name="1"> <p>这是展开内容</p> </el-collapse-item> </el-collapse> </div> </template> ``` 在这个例子,点击标题的时候,内容展开或者收起。 此外,我们还可以用element-ui的按钮组件<Button>来实现展开收起功能。我们可以在按钮的click事件,通过改变一个data的boolean值来控制展开收起。例如: ``` <template> <div> <el-button @click="toggleCollapse" type="primary">{{ isCollapse ? '展开' : '收起' }}</el-button> <el-collapse v-model="isCollapse"> <el-collapse-item title="内容" name="1"> <p>这是展开内容</p> </el-collapse-item> </el-collapse> </div> </template> <script> export default { data() { return { isCollapse: false }; }, methods: { toggleCollapse() { this.isCollapse = !this.isCollapse; } } }; </script> ``` 在这个例子,点击按钮会切换展开收起状态,并且按钮上的文本也会相应地改变。 综上所述,借助于vue和element-ui的组件,我们可以轻松地实现展开收起功能。通过Collapse组件或者按钮组件,我们可以根据具体需求选择合适的方式来实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值