动态内容不同分辨率展开收起效果实现

需求,不同分辨率下,都显示三行文字内容,超出三行显示展开按钮,

组件封装TextOverflow.vue

<template>
  <div :class="{'overflow-hidden': toggleShow}"
       style="position:relative">
    <slot></slot>
    <span class="link showbtn"
          @click="handleHideMoreClick">
      {{toggleShow ? '...展开' :'收起'}}</span>
  </div>
</template>

<script>
export default {
  name: 'TextOverflow',
  data() {
    return {
      toggleShow: true
    }
  },
  methods: {
    handleHideMoreClick() {
      this.toggleShow = !this.toggleShow
    }
  }
}
</script>

<style>
.overflow-hidden {
  position: relative;
  overflow: hidden;
  max-height: 80px;
}

.showbtn {
  position: absolute;
  display: block;
  right: 3px;
  bottom: -1px;
  width: 50px;
  text-align: right;
}
.link {
  color: #409eff;
  cursor: pointer;
  padding: 0;
  padding-left: 4px;
  background: #fff;
  font-size: 14px;
}
</style>

组件调用:

         <TextOverflow class="content"
                        v-if="remarkLength>winWidthLength"
                        :showBtn="showBtn"
                        style="font-size: 16px;
    line-height: 26px;">
            <p>{{ about.remark }}</p>
          </TextOverflow>
          <p v-else>{{ about.remark }}</p>
          <p v-if="!about.remark">
            <a-empty />
          </p>

关键点-根据屏幕判断winWidth数值,尝试过用refs获取dom数值,也增加了$nextTick(),获取到的值均为0,所以尝试笨的办法,获取屏幕宽度

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值