当前位置:   article > 正文

基于Vue3+TS简单设计一个查看文章时点击展开和点击收起的小功能_vue3 - 实现任意内容展开 / 收起功能组件插件,点击查看更多内容控制段落文字展开

vue3 - 实现任意内容展开 / 收起功能组件插件,点击查看更多内容控制段落文字展开

前言

这是一个展开和收起的小功能,可用于查看文章时点击展开和点击收起。

一、示例代码

(1)/src/views/Example/ExpandToggle/index.vue

  1. <template>
  2. <div class="e-w">
  3. <div class="e-w-main" :class="{ 'e-w-expand': isExpand }" ref="ewRef">
  4. <div
  5. style="
  6. color: rgb(96, 109, 121);
  7. background-color: #f5ecd7;
  8. font-family: '楷体';
  9. padding: 22px;
  10. "
  11. >
  12. <b>什么是Vite,它与Vue CLI有什么区别,Volar又是啥?</b><br />
  13. <br />
  14. <b>Vite</b><br />
  15. Vite 是一个轻量级的、速度极快的构建工具,<br />
  16. 对 Vue SFC 提供第一优先级支持。<br />
  17. 作者是尤雨溪,<br />
  18. 同时也是 Vue 的作者!<br />
  19. <br />
  20. <b>Vue CLI</b><br />
  21. Vue CLI 是官方提供的基于 Webpack 的 Vue 工具链,<br />
  22. 它现在处于维护模式。<br />
  23. 我们建议使用 Vite 开始新的项目,<br />
  24. 除非你依赖特定的 Webpack 的特性。<br />
  25. 在大多数情况下,<br />
  26. Vite 将提供更优秀的开发体验。<br />
  27. <br />
  28. <b>Volar</b><br />
  29. Volar 是 Vue 的 VS Code 插件,<br />
  30. 也是 Vue 的官方 IDE/TS 支持工具,<br />
  31. 除了集成 Vetur 的相关功能,<br />
  32. 如高亮、语法提示等之外,<br />
  33. 还包含一些独有功能。<br />
  34. 也就是说,Volar 取代了我们之前为 Vue 2 提供的官方 VSCode 扩展 Vetur。如果你之前已经安装了 Vetur,请确保在 Vue 3 的项目中禁用它。<br />
  35. </div>
  36. <div class="view-more" v-if="!isExpand">
  37. <div class="view-more-box" @click="isExpand = !isExpand">
  38. <el-icon color="#409EFC">
  39. <ArrowDown />
  40. </el-icon>
  41. </div>
  42. </div>
  43. <div class="has-more" v-if="isExpand">
  44. <div class="has-more-box" @click="isExpand = !isExpand">
  45. <el-icon color="#409EFC">
  46. <ArrowUp />
  47. </el-icon>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </template>
  53. <script setup lang="ts">
  54. import { onMounted, ref } from "vue";
  55. import { ArrowUp, ArrowDown } from "@element-plus/icons-vue";
  56. const ewRef = ref(); // 实例
  57. const isExpand = ref(false); // 是否展开
  58. onMounted(() => {
  59. console.log('ewRef =>', ewRef)
  60. if (ewRef.value) {
  61. if (ewRef.value.scrollHeight > ewRef.value.clientHeight) {
  62. // ...
  63. }
  64. }
  65. });
  66. </script>
  67. <style lang="less" scoped>
  68. .e-w {
  69. width: auto;
  70. padding: 100px;
  71. .e-w-main {
  72. height: 150px;
  73. overflow: hidden;
  74. position: relative;
  75. border: 1px solid #ddd;
  76. &.e-w-expand {
  77. height: auto;
  78. overflow: hidden;
  79. }
  80. // ---- ---- ---- ---- ^ 展开 样式 ---- ---- ---- ----
  81. .view-more {
  82. width: 100%;
  83. height: 22px;
  84. padding-top: 60px;
  85. background-image: linear-gradient(
  86. -180deg,
  87. rgba(255, 255, 255, 0) 0%,
  88. #ebebebf6 100%
  89. );
  90. position: absolute;
  91. bottom: 0;
  92. .view-more-box {
  93. width: 44px;
  94. height: 22px;
  95. background-color: rgba(255, 255, 255, 1);
  96. border-top-left-radius: 8px;
  97. border-top-right-radius: 8px;
  98. position: absolute;
  99. display: block;
  100. margin: auto;
  101. left: 0;
  102. right: 0;
  103. bottom: 0;
  104. cursor: pointer;
  105. .el-icon {
  106. position: absolute;
  107. display: block;
  108. margin: auto;
  109. left: 0;
  110. right: 0;
  111. bottom: 0;
  112. }
  113. }
  114. }
  115. // ---- ---- ---- ---- / 展开 样式 ---- ---- ---- ----
  116. // ---- ---- ---- ---- ^ 收起 样式 ---- ---- ---- ----
  117. .has-more {
  118. width: 100%;
  119. height: 22px;
  120. position: absolute;
  121. bottom: 0;
  122. .has-more-box {
  123. width: 44px;
  124. height: 22px;
  125. background-color: rgba(255, 255, 255, 1);
  126. border-top-left-radius: 8px;
  127. border-top-right-radius: 8px;
  128. position: absolute;
  129. display: block;
  130. margin: auto;
  131. left: 0;
  132. right: 0;
  133. bottom: 0;
  134. cursor: pointer;
  135. .el-icon {
  136. position: absolute;
  137. display: block;
  138. margin: auto;
  139. left: 0;
  140. right: 0;
  141. bottom: 0;
  142. }
  143. }
  144. }
  145. // ---- ---- ---- ---- / 收起 样式 ---- ---- ---- ----
  146. }
  147. }
  148. </style>

二、运行效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/76831?site
推荐阅读
相关标签
  

闽ICP备14008679号