zoukankan      html  css  js  c++  java
  • Vue 长文本组件(有展开更多按钮)实现 附源码及使用

    原文地址:Vue 长文本组件(有展开更多按钮) | Stars-One的杂货小窝

    最近项目需要优化长文本的显示,如果长文本过长,固定显示几行并显示一个展开更多的按钮,点击按钮即可把隐藏的文本显示出来

    稍微查了点资料,封装了个组件,分享给大家

    组件效果

    文本过多固定显示3行

    显示全部文本

    组件代码

    <template>
      <div>
        <p ref="contentEl" :class="flag?'max-three-line':''">{{ `${content}` }}</p>
        <div v-if="!hideBtn" class="flex-row flex-center">
          <a class="text-blue" @click="flag = !flag">{{flag?'展开全部':'收起'}}</a>
        </div>
      </div>
    </template>
    
    <script>
      export default {
        name: "hasMoreDiv",
        props: {
          //内容文本
          content: {
            type: String,
            default: function () {
              return "";
            },
          },
        },
        data() {
          return {
            flag: false, //是否隐藏内容
            hideBtn: false
          };
        },
        mounted() {
          let el = this.$refs.contentEl
          let elHeight = el.offsetHeight
          //三行的高度为88.8
          this.hideBtn = elHeight <= 88.8
          //测量之后,修改flag,设置样式
          this.flag = true
        },
        methods: {}
    
      }
    </script>
    
    <style scoped>
      .max-three-line {
        text-overflow: -o-ellipsis-lastline;
        overflow: hidden;
        text-overflow: ellipsis;
        display: -webkit-box;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;
      }
    </style>
    

    PS:当前设置是默认显示3行,如果想修改,可以修改css属性-webkit-line-clamp

    组件使用

    使用import关键字导入组件,之后使用即可

    import HasMoreDiv from 'xx.vue'
    

    在页面中使用,content即为要显示的内容

    <HasMoreDiv :content=""></HasMoreDiv>
    

    提问之前,请先看提问须知 点击右侧图标发起提问 联系我 或者加入QQ群一起学习 Stars-One安卓学习交流群 TornadoFx学习交流群:1071184701
  • 相关阅读:
    livereload
    XAMPP Apache 配置多端口和多域名方法
    移动端touch事件实现页面弹动--小插件
    QRCode生成二维码,jq QRCode生成二维码,QRCode生成电子名片
    下拉刷新
    js 中获取 日期
    wcf 的 知识点
    iis 发布失败原因总结
    list 用法的随手记
    字符编码的 文章推荐
  • 原文地址:https://www.cnblogs.com/stars-one/p/14603638.html
Copyright © 2011-2022 走看看