首页 > 其他分享 >VUE3中实现“收起”“展开”功能

VUE3中实现“收起”“展开”功能

时间:2023-06-26 11:24:44浏览次数:46  
标签:达萨罗 const VUE3 value height desContent 收起 展开 挥洒

《好记性不如烂笔头系列》

<template>
    <van-row>
          <div class="roadshowDescValueDiv">
                <div ref="desContent" class="desContent" :class="{ 'show-all': desShowAll }">
                      <span>{{ value }}</span>
                </div>
                <a v-if="desTextRows > 2" class="toggle" @click.prevent="toggleShow">
                      {{ desShowAll ? '收起' : '展开' }}
                </a>
          </div>
    </van-row>
</template>

<script setup lang="ts">
const value = ref(
  '的撒就开了赛大萨达萨多撒的撒就开了赛大萨达萨多撒撒奥所多撒多撒多撒多撒和达萨罗的三大飒飒大看看大家挥洒来看规范化洒落的挥洒鲁大师啥离开达萨罗看电视是的撒就开了赛大萨达萨多撒撒奥所多撒多撒多撒多撒和达萨罗的三大飒飒大看看大家挥洒来看规范化洒落的挥洒鲁大师啥离开达萨罗看电视是的撒就开了赛大萨达萨多撒撒奥所多撒多撒多撒多撒和达萨罗的三大飒飒大看看大家挥洒来看规范化洒落的挥洒鲁大师啥离开达萨罗看电视是撒奥所多撒多撒多撒多撒和达萨罗的三大飒飒大看看大家挥洒来看规范化洒落的挥洒鲁大师啥离开达萨罗看电视是'
);
const desShowAll = ref(false);
const desTextRows = ref(0);

// 使用 watchEffect 监听文本变化和 showAll 变化,更新 textRows
const desContent = ref<any>();
watchEffect(() => {
  if (desContent.value) {
    // 计算文本占据的行数
    const lineHeight = parseFloat(window.getComputedStyle(desContent.value).lineHeight);
    const height = desContent.value.scrollHeight;
    desTextRows.value = Math.ceil(height / lineHeight);
    console.error(lineHeight, height, desTextRows.value);
  }
});
const toggleShow = () => {
  desShowAll.value = !desShowAll.value;
};
</script>
 
<style lang="scss" scoped>
  .roadshowDescValueDiv {
    position: relative;
    .desContent {
      position: relative;
      font-size: 15px;
      line-height: 24px;
      word-break: break-all;
      display: -webkit-box;
      overflow: hidden;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
    }
    .show-all {
      -webkit-line-clamp: unset;
    }

    .toggle {
      margin-top: 10px;
      cursor: pointer;
      font-size: 12px;
      font-family: SourceHanSansCN-Regular, SourceHanSansCN;
      font-weight: 400;
      color: #5e58f6;
      line-height: 18px;
    }
  }
</style>

标签:达萨罗,const,VUE3,value,height,desContent,收起,展开,挥洒
From: https://www.cnblogs.com/Arthemis-z/p/17505158.html

相关文章

  • 基于uni-app+vue3渲染markdown格式|uniapp软键盘顶起问题解决方案
    前些时候有给大家分享一篇uni-app+vite4+uview-plus搭建跨端项目。今天主要分享下在uniapp中渲染markdown语法及uniapp中软键盘弹起,页面tabbar或顶部自定义navbar导航栏被撑起挤压的问题。如上图:支持h5+小程序+App端markdown解析渲染。上面则是演示了在App端+小程序端键盘弹......
  • [leetcode]114. 二叉树展开为链表
    总结:怎样写递归函数?关键是把递归函数的功能定义清楚,并在递归函数体中使用自身来做事,此时不要关注递归函数执行的细节。也就是写高层级代码的时候不要关注低层级的事情,这就叫抽象。关注也没有用,想不清楚的。 1classSolution{2publicvoidflatten(TreeNoderoot){......
  • 小程序筛选,向下展开的动效
    参考升学规划小程序,提交记录:下载资料弹窗标题June20,2023at15:27:35GMT+8实现效果如下关键代码:动效css:.fbContent{width:100%;display:flex;flex-direction:column;align-items:center;border-radius:0px0px40rpx40rpx; background:#EFF......
  • vue3 虚拟滚动的一些实践
    看到这个vueuse库打开新天地后,看到一句warning:Considerusing vue-virtual-scroller instead,ifyouarelookingformorefeatures.于是用起来。好用,前提是看懂文档业务需要使用grid,它的grid竟然不是css,而是js计算//tempalte<RecycleScroller:ref="(el)......
  • vue3 - onMounted 多次触发 - 解决
    1.原因<router-view>外面使用了 <keep-alive>导致多次触发 onMounted生命周期2.解决使用<keep-alive>的第一层页面初始化数据的生命周期应该放弃使用 onMounted 应该使用onActivated用法与 onMounted 是一样的 ......
  • 【vue3】实现el-tree组件
     禾小毅csdn博客【vue3】实现el-tree组件,将不同层级的箭头修改成自定义图标的组件封装及调用【vue3】实现简易的“百度网盘”文件夹的组件封装实现【vue3】实现公共搜索组件,在当前页搜索的路由跳转不能改变当前值的操作,使用bus/event-emitter派发器......
  • 关于vite创建vue3项目@代替src失效的问题
    用vite创建的vue3项目,用@来代替src不生效。报错:[vite]Internalservererror:Failedtoresolveimport"@/views/xxxxxxxxxxxxx"from"src\views\dashboard\index.vue".Doesthefileexist?解决的方法是:先安装pathnpminstall--save-dev@type/node在vite.co......
  • vue3+vite+TS搭建项目
    安装npm安装方式npminitvue@latestpnpm安装方式(二选一)pnpmcreatevue@latest然后设置项目名称,接着选择自己需要的配置,安装完成......
  • vue3+vite 动态引用静态资源,动态引入assets文件夹图片的几种方式
    可以参考这个回答,亲测有用 https://blog.csdn.net/weixin_43743175/article/details/125892613 ......
  • vue3和ts的一些使用
    一.setup变量不在写在data里面,反而在setup内写。<scriptlang="ts">import{defineComponent,ref}from"vue";exportdefaultdefineComponent({name:"App",setup(){constgirls=ref(["大脚","刘英","......