Vue.js实现文字超出指定高度后展开收起功能

参考网站效果

Vue.js实现文字超出指定高度后展开收起功能

Vue.js实现文字超出指定高度后展开收起功能

Vue.js代码实现

组件:TextOverflow.vue

<template>
  <div :class="{'overflow-hidden': !isShowMore}">
    <slot></slot>
    <span
      v-if="isShowMore"
      class="link"
      @click="handleHideMoreClick"
    >
      收起</span>
    <span
      v-else
      class="show-more-btn"
      @click="handleShowMoreClick"
    >
      <span>
        ...</span>
      <span class="link">
        展开</span>
    </span>
  </div>

</template>

<script>
// created at 2021-09-23
export default {
  name: 'TextOverflow',

  data() {
    return {
      isShowMore: false,
    };
  },

  methods: {
    handleShowMoreClick() {
      this.isShowMore = true;
    },

    handleHideMoreClick() {
      this.isShowMore = false;
    },
  }
};
</script>

<style>
.overflow-hidden {
  position: relative;
  overflow: hidden;
}

.show-more-btn {
  position: absolute;
  display: block;
  right: 0;
  bottom: 0;
  width: 70px;
  text-align: right;
  /* 背景从透明到白色,过渡 */
  background-image: linear-gradient(to right, transparent, #ffffff 26.4%);
}

.link {
  color: #409eff;
  cursor: pointer;
}
</style>

使用组件

<template>
  <div class="">
    <TextOverflow class="content">这是一段文字,文字的效果是这样的,超出部分默认会被隐藏,如果点击展开会显示全部内容</TextOverflow>
  </div>
</template>

<script>
import TextOverflow from './TextOverflow.vue';
// created at 2021-09-23
export default {
  name: 'App',

  props: {},

  components: {
    TextOverflow,
  },

  data() {
    return {};
  },

  computed: {},

  methods: {
    async getData() {},
  },

  created() {
    this.getData();
  },
};
</script>

<style >
.content {
  width: 200px;
  line-height: 20px;
  /* 设置为行高的整倍数,此处显示两行: 2 * 20px */
  max-height: 40px;
}
</style>

使用组件TextOverflow的时候,需要设置三个属性:

  • width: 200px;
  • line-height: 20px;
  • max-height: 40px; 设置为行高的整倍数,此处显示两行: 2 * 20px

展开收起效果

Vue.js实现文字超出指定高度后展开收起功能

Vue.js实现文字超出指定高度后展开收起功能

上一篇:阿里云老版人脸识别C#调用示例参考


下一篇:阿里云新版人脸识别综述