赞
踩
这是一个展开和收起的小功能,可用于查看文章时点击展开和点击收起。
(1)/src/views/Example/ExpandToggle/index.vue
- <template>
- <div class="e-w">
- <div class="e-w-main" :class="{ 'e-w-expand': isExpand }" ref="ewRef">
-
- <div
- style="
- color: rgb(96, 109, 121);
- background-color: #f5ecd7;
- font-family: '楷体';
- padding: 22px;
- "
- >
- <b>什么是Vite,它与Vue CLI有什么区别,Volar又是啥?</b><br />
-
- <br />
-
- <b>Vite</b><br />
- Vite 是一个轻量级的、速度极快的构建工具,<br />
- 对 Vue SFC 提供第一优先级支持。<br />
- 作者是尤雨溪,<br />
- 同时也是 Vue 的作者!<br />
-
- <br />
-
- <b>Vue CLI</b><br />
- Vue CLI 是官方提供的基于 Webpack 的 Vue 工具链,<br />
- 它现在处于维护模式。<br />
- 我们建议使用 Vite 开始新的项目,<br />
- 除非你依赖特定的 Webpack 的特性。<br />
- 在大多数情况下,<br />
- Vite 将提供更优秀的开发体验。<br />
-
- <br />
-
- <b>Volar</b><br />
- Volar 是 Vue 的 VS Code 插件,<br />
- 也是 Vue 的官方 IDE/TS 支持工具,<br />
- 除了集成 Vetur 的相关功能,<br />
- 如高亮、语法提示等之外,<br />
- 还包含一些独有功能。<br />
- 也就是说,Volar 取代了我们之前为 Vue 2 提供的官方 VSCode 扩展 Vetur。如果你之前已经安装了 Vetur,请确保在 Vue 3 的项目中禁用它。<br />
- </div>
-
- <div class="view-more" v-if="!isExpand">
- <div class="view-more-box" @click="isExpand = !isExpand">
- <el-icon color="#409EFC">
- <ArrowDown />
- </el-icon>
- </div>
- </div>
-
- <div class="has-more" v-if="isExpand">
- <div class="has-more-box" @click="isExpand = !isExpand">
- <el-icon color="#409EFC">
- <ArrowUp />
- </el-icon>
- </div>
- </div>
-
- </div>
- </div>
- </template>
-
- <script setup lang="ts">
- import { onMounted, ref } from "vue";
- import { ArrowUp, ArrowDown } from "@element-plus/icons-vue";
-
- const ewRef = ref(); // 实例
- const isExpand = ref(false); // 是否展开
-
- onMounted(() => {
- console.log('ewRef =>', ewRef)
- if (ewRef.value) {
- if (ewRef.value.scrollHeight > ewRef.value.clientHeight) {
- // ...
- }
- }
- });
- </script>
-
- <style lang="less" scoped>
- .e-w {
- width: auto;
- padding: 100px;
-
- .e-w-main {
- height: 150px;
- overflow: hidden;
- position: relative;
- border: 1px solid #ddd;
-
- &.e-w-expand {
- height: auto;
- overflow: hidden;
- }
-
- // ---- ---- ---- ---- ^ 展开 样式 ---- ---- ---- ----
- .view-more {
- width: 100%;
- height: 22px;
- padding-top: 60px;
- background-image: linear-gradient(
- -180deg,
- rgba(255, 255, 255, 0) 0%,
- #ebebebf6 100%
- );
- position: absolute;
- bottom: 0;
-
- .view-more-box {
- width: 44px;
- height: 22px;
- background-color: rgba(255, 255, 255, 1);
- border-top-left-radius: 8px;
- border-top-right-radius: 8px;
- position: absolute;
- display: block;
- margin: auto;
- left: 0;
- right: 0;
- bottom: 0;
- cursor: pointer;
-
- .el-icon {
- position: absolute;
- display: block;
- margin: auto;
- left: 0;
- right: 0;
- bottom: 0;
- }
- }
- }
- // ---- ---- ---- ---- / 展开 样式 ---- ---- ---- ----
-
- // ---- ---- ---- ---- ^ 收起 样式 ---- ---- ---- ----
- .has-more {
- width: 100%;
- height: 22px;
- position: absolute;
- bottom: 0;
-
- .has-more-box {
- width: 44px;
- height: 22px;
- background-color: rgba(255, 255, 255, 1);
- border-top-left-radius: 8px;
- border-top-right-radius: 8px;
- position: absolute;
- display: block;
- margin: auto;
- left: 0;
- right: 0;
- bottom: 0;
- cursor: pointer;
-
- .el-icon {
- position: absolute;
- display: block;
- margin: auto;
- left: 0;
- right: 0;
- bottom: 0;
- }
- }
- }
- // ---- ---- ---- ---- / 收起 样式 ---- ---- ---- ----
- }
- }
- </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。