多行文本省略号显示,更多按钮展开全部

最近刚完成一个应用商店的项目Win软件商店,做一下流水账记录

一、很常见的一个需求

软件的详情,有些很长,有些很短。如果是过长的详情则显示3行,末尾用省略号显示,然后加一个显示更多的按钮,让感兴趣的用户自己点击查看。这是一个很合理且常见的需求

拆解需求为两部分

  1. 3行 + 多行省略
  2. 如果是多行省略了,展示显示更多按钮

二、直接百度复制粘贴

百度搜索多行文本省略号显示,即可解决第一个问题

css 复制代码
.multi {
    display: -webkit-box;          /* 启用弹性伸缩盒 */
    -webkit-box-orient: vertical;   /* 文本垂直排列 */
    -webkit-line-clamp: 3;         /* 显示行数限制 */
    overflow: hidden;               /* 隐藏溢出内容 */
    text-overflow: ellipsis;        /* 添加省略号 */
}

三、判断内容是否过多

如果我们已经知道了3行是一个分水岭,那么3行内容的高度就可以作为一个判断的标准

假设3行内容的高度X,如果内容的高度大于X,是不是就可以判断需要展示更多按钮了

模板如下

vue 复制代码
<template>
<p class="describe" :class="[showMoreMode ? '' : 'multi']">
  <span ref="describeRef">
    {{ softInfo.describe }}
  </span>
</p>

<p v-if="showMore" class="show-more" @click="handleShowMore">
  {{ showMoreMode ? '收起' : '显示更多' }}
</p>
</template>

<script setup>
const showMore = ref(false)
const describeRef = ref<any>(null)
const checkShowMore = () => {
  // 3行的高度
  const wrapHeight = 70
  describeRef.value.style.display = 'inline-block'
  const contentHeight = describeRef.value?.clientHeight
  describeRef.value.style.display = 'inline'

  showMore.value = contentHeight > wrapHeight
}
const showMoreMode = ref(false)
const handleShowMore = () => {
  showMoreMode.value = !showMoreMode.value
}
</script>
相关推荐
镜宇秋霖丶7 小时前
2026.5.6@霖宇博客制作中遇见的问题
前端·javascript·vue.js
小李子呢02118 小时前
前端八股Vue---Vue-router路由管理器
前端·javascript·vue.js
洛_尘10 小时前
Python 5:使用库
java·前端·python
Bigger10 小时前
Bun 能上生产吗?我的实战结论
前端·node.js·bun
kyriewen11 小时前
你的前端滤镜慢得像PPT?用Rust+WebAssembly,一秒处理4K图
前端·rust·webassembly
kyriewen1111 小时前
你等的Babel编译,够喝三杯咖啡了——用Rust重写的SWC,只需眨个眼
开发语言·前端·javascript·后端·性能优化·rust·前端框架
IT_陈寒11 小时前
SpringBoot自动配置坑了我,原来要这样绕过去
前端·人工智能·后端
东方小月12 小时前
Claude Code 完整上手指南:MCP、Skills、第三方模型配置一次搞定
前端·人工智能·后端
XZ探长12 小时前
基于 Trae Solo 移动办公修复 Vue3 前端服务问题
前端
蝎子莱莱爱打怪12 小时前
Claude Code 省 Token 小妙招:RTK + Caveman 组合拳
前端·人工智能·后端