实现文章内容过多时的展开收起效果

通过计算文章内容的高度来确定是否需要显示展开按钮,然后根据用户的点击来展开或收起文章内容。以下是一个简单的实现示例:

<template>
  <div class="article">
    <div v-if="isContentOverflow" :style="{ maxHeight: contentMaxHeight + 'px' }" ref="content" class="content">
      {{ articleContent }}
    </div>
    <button v-if="isContentOverflow" @click="toggleContent" class="toggle-button">
      {{ showFullContent ? '收起' : '展开' }}
    </button>
  </div>
</template>

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';

const articleContent = ref<string>(
  '文章内容,这里是一段很长的文章内容。文章内容,这里是一段很长的文章内容。文章内容,这里是一段很长的文章内容。'
);
const contentMaxHeight = ref<number>(100); // 设置最大高度
const showFullContent = ref<boolean>(false);

const isContentOverflow = computed(() => {
  const contentEl = document.getElementById('content');
  return contentEl ? contentEl.scrollHeight > contentMaxHeight.value : false;
});

const toggleContent = () => {
  showFullContent.value = !showFullContent.value;
};

onMounted(() => {
  const contentEl = document.getElementById('content');
  if (contentEl) {
    contentMaxHeight.value = contentEl.clientHeight;
  }
});
</script>

<style scoped>
.article {
  position: relative;
}
.content {
  overflow: hidden;
  transition: max-height 0.3s ease;
}
.toggle-button {
  position: absolute;
  bottom: 0;
  right: 0;
}
</style>

首先通过计算属性isContentOverflow判断文章内容是否溢出,如果溢出则显示展开按钮。然后根据用户点击来切换showFullContent的值,以展开或收起文章内容。通过设置contentMaxHeight,可以调整文章内容的最大高度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温暖前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值