text.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <script setup lang="ts">
  2. import dayjs from "dayjs";
  3. import { ref } from "vue";
  4. import { ReText } from "@/components/ReText";
  5. defineOptions({
  6. name: "PureText"
  7. });
  8. const customContent = ref("自定义tooltip内容");
  9. const changeTooltipContent = () => {
  10. customContent.value =
  11. "现在的时间是: " + dayjs().format("YYYY-MM-DD HH:mm:ss");
  12. };
  13. </script>
  14. <template>
  15. <el-card shadow="never">
  16. <template #header>
  17. <div class="card-header">
  18. <span class="font-medium">
  19. 文本省略,基于
  20. <el-link
  21. href="https://element-plus.org/zh-CN/component/text.html"
  22. target="_blank"
  23. style="margin: 0 4px 5px; font-size: 16px"
  24. >
  25. el-text
  26. </el-link>
  27. <el-link
  28. href="https://vue-tippy.netlify.app/basic-usage"
  29. target="_blank"
  30. style="margin: 0 4px 5px; font-size: 16px"
  31. >
  32. VueTippy
  33. </el-link>
  34. 自动省略后显示 Tooltip 提示, 支持多行省略
  35. </span>
  36. </div>
  37. <el-link
  38. class="mt-2"
  39. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/components/text.vue"
  40. target="_blank"
  41. >
  42. 代码位置 src/views/components/text.vue
  43. </el-link>
  44. </template>
  45. <div class="mb-2">基础用法</div>
  46. <el-space wrap>
  47. <ul class="content">
  48. <li>
  49. <ReText>
  50. 测试文本,这是一个稍微有点长的文本,过长省略后,鼠标悬浮会有tooltip提示
  51. </ReText>
  52. <ReText :lineClamp="2">
  53. 测试文本,这是一个稍微有点长的文本,lineClamp参数为2,即两行过长省略后,鼠标悬浮会有tooltip提示
  54. </ReText>
  55. </li>
  56. </ul>
  57. </el-space>
  58. <el-divider />
  59. <div class="mb-2">自定义 Tooltip 内容</div>
  60. <div class="mb-2">
  61. <el-button @click="changeTooltipContent">
  62. 点击切换下方 Tooltip 内容
  63. </el-button>
  64. </div>
  65. <el-space wrap>
  66. <ul class="content">
  67. <li>
  68. <ReText :tippyProps="{ content: customContent }">
  69. props写法 -
  70. 测试文本,这是一个稍微有点长的文本,过长省略后,鼠标悬浮会有tooltip提示
  71. </ReText>
  72. </li>
  73. <li>
  74. <ReText>
  75. <template #content>
  76. <div>
  77. <b>这是插槽写法: </b>
  78. <div>{{ customContent }}</div>
  79. </div>
  80. </template>
  81. 插槽写法 -
  82. 测试文本,这是一个稍微有点长的文本,过长省略后,鼠标悬浮会有tooltip提示
  83. </ReText>
  84. </li>
  85. </ul>
  86. </el-space>
  87. <el-divider />
  88. <div class="mb-2">自定义 el-text 配置</div>
  89. <el-space wrap>
  90. <ul class="content">
  91. <li>
  92. <ReText type="primary" size="large">
  93. 测试文本,这是一个稍微有点长的文本,过长省略后,鼠标悬浮会有tooltip提示
  94. </ReText>
  95. </li>
  96. <li>
  97. <ReText :lineClamp="4" type="info">
  98. 测试文本,这是一个非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长的文本,lineClamp参数为4,即四行过长省略后,鼠标悬浮会有tooltip提示
  99. </ReText>
  100. </li>
  101. </ul>
  102. </el-space>
  103. <el-divider />
  104. <div class="mb-2">自定义 VueTippy 配置</div>
  105. <el-space wrap>
  106. <ul class="content">
  107. <li>
  108. <ReText
  109. :tippyProps="{ offset: [0, -20], theme: 'light', arrow: false }"
  110. >
  111. 偏移白色无箭头 -
  112. 测试文本,这是一个稍微有点长的文本,过长省略后,鼠标悬浮会有tooltip提示
  113. </ReText>
  114. </li>
  115. <li>
  116. <ReText :lineClamp="4" :tippyProps="{ followCursor: true }">
  117. 鼠标跟随 -
  118. 测试文本,这是一个非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长,非常非常长的文本,lineClamp参数为4,即四行过长省略后,鼠标悬浮会有tooltip提示
  119. </ReText>
  120. </li>
  121. </ul>
  122. </el-space>
  123. <el-divider />
  124. <div class="mb-2">组件嵌套: 不需要省略的需设置 truncated 为 false</div>
  125. <el-space wrap>
  126. <ul class="content">
  127. <li>
  128. <ReText tag="p" :lineClamp="2">
  129. This is a paragraph. Paragraph start
  130. <ReText :truncated="false">
  131. 【 This is ReText
  132. <ReText tag="sup" size="small" :truncated="false">
  133. superscript 】
  134. </ReText>
  135. </ReText>
  136. <el-text>
  137. 【 This is El-Text
  138. <el-text tag="sub" size="small"> subscript 】 </el-text>
  139. </el-text>
  140. <el-text tag="ins">【Inserted】</el-text>
  141. <el-text tag="del">【Deleted】</el-text>
  142. <el-text tag="mark">【Marked】</el-text>
  143. Paragraph end.
  144. </ReText>
  145. </li>
  146. </ul>
  147. </el-space>
  148. </el-card>
  149. </template>
  150. <style lang="scss" scoped>
  151. .content {
  152. width: 400px;
  153. padding: 15px;
  154. overflow: hidden;
  155. resize: horizontal;
  156. background-color: var(--el-color-info-light-9);
  157. border-radius: 8px;
  158. }
  159. </style>