上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

关于ElementPlus框架Backtop组件的一些坑

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-6 11:14
  • 签到天数: 253 天

    [LV.8]以坛为家I

    41

    主题

    318

    回帖

    2178

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    积分
    2178

    荣誉开发者油中2周年生态建设者

    发表于 2022-3-29 13:13:07 | 显示全部楼层 | 阅读模式
    本帖最后由 Hangover 于 2022-3-29 13:55 编辑

    先看看官网给出的一些栗子:Backtop 回到顶部

    1. <template>
    2.   Scroll down to see the bottom-right button.
    3.   <el-backtop :right="100" :bottom="100" />
    4. </template>
    复制代码
    1. <template>
    2.             Scroll down to see the bottom-right button.
    3.             <el-backtop :bottom="100">
    4.                 <div style="
    5.                   height: 100%;
    6.                   width: 100%;
    7.                   background-color: #f2f5f6;
    8.                   box-shadow: var(--el-box-shadow-lighter);
    9.                   text-align: center;
    10.                   line-height: 40px;
    11.                   color: #1989fa;
    12.                 ">
    13.                     UP
    14.                 </div>
    15.             </el-backtop>
    16.         </template>
    复制代码
    看上去很简单,只需要一个el-backtop标签。

    但事实真就如此???
    先看下面的代码
    1. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-plus@2.1.0/dist/index.min.css" />
    2.     <script src="https://cdn.jsdelivr.net/npm/vue@3.2.31/dist/vue.global.prod.js"></script>
    3.     <script src="https://cdn.jsdelivr.net/npm/element-plus@2"></script>

    4. <body>
    5.     <div id="app">
    6.         <div v-for="i in 500" :key="i">{{ i }}</div>
    7.         <el-backtop :right="100" :bottom="100"></el-backtop>
    8.     </div>

    9.     <script>
    10.         const app = Vue.createApp({});
    11.         app.use(ElementPlus);
    12.         app.mount("#app");
    13.     </script>
    14. </body>
    复制代码



    运行发现没有效果,控制台也没出现报错信息

    然后我就试着锁定次版本号与修订号,发现上面的代码在 2.1.4 版本下正常运行,而 https://cdn.jsdelivr.net/npm/element-plus@2 对应的是 2.x 最新版,也就是 2.1.6,
    所以把ElementPlus的npm包版本号锁定为 2.1.4 即可正常使用Backtop组件。
    返回顶部按钮:


    但是如果想一直保持使用ElementPlus最新版怎么办?

    解决办法:隐藏系统滚动条 > 为最外层元素显示滚动条 > Backtop组件绑定到显示滚动条的元素
    1.     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-plus@2.1.0/dist/index.min.css" />
    2.     <script src="https://cdn.jsdelivr.net/npm/vue@3.2.31/dist/vue.global.prod.js"></script>
    3.     <script src="https://cdn.jsdelivr.net/npm/element-plus@2"></script>
    4.     <!-- Font Awesome 图标库 -->
    5.     <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css">
    6.     <style>
    7.         * {
    8.             margin: 0;
    9.             padding: 0;
    10.         }

    11.         /* 隐藏系统滚动条 高度设定100% */
    12.         html,
    13.         body {
    14.             height: 100%;
    15.             overflow: hidden;
    16.         }

    17.         /* 外层容器显示滚动条 overflow为scroll或auto 高度设定100% */
    18.         #app {
    19.             height: 100%;
    20.             overflow: scroll;
    21.         }

    22.         /* 滚动条样式 */
    23.         #app::-webkit-scrollbar {
    24.             width: 10px;
    25.         }

    26.         #app::-webkit-scrollbar-track {
    27.             display: none;
    28.         }

    29.         #app::-webkit-scrollbar-thumb {
    30.             border-radius: 5px;
    31.             box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
    32.             background-color: #E8E8E8;
    33.         }
    34.     </style>

    35. <body>
    36.     <div id="app">
    37.         <div v-for="i in 500" :key="i">{{ i }}</div>
    38.         <el-backtop target="#app" :visibility-height="300" :right="30" :bottom="30">
    39.             <i class="fas fa-arrow-alt-circle-up fa-2x"></i>
    40.         </el-backtop>
    41.     </div>

    42.     <script>
    43.         const app = Vue.createApp({});
    44.         app.use(ElementPlus);
    45.         app.mount("#app");
    46.     </script>
    47. </body>
    复制代码


    运行发现一切正常~!
    返回顶部按钮: QQ图片20220329130647.png


    最后给大家来个油猴脚本的小栗子
    1. // ==UserScript==
    2. // @name         返回顶部-脚本猫
    3. // @namespace    https://bbs.tampermonkey.net.cn/
    4. // @version      0.1.0
    5. // @description  try to take over the world!
    6. // @author       张仨
    7. // @match        https://scriptcat.org/*
    8. // @grant        unsafeWindow
    9. // @grant        GM_addStyle
    10. // @require      https://cdn.jsdelivr.net/npm/vue@3.2.31/dist/vue.global.prod.js
    11. // ==/UserScript==

    12. unsafeWindow.Vue = Vue;
    13. let script = document.createElement("script");
    14. script.type = "text/javascript";
    15. script.src = "https://cdn.jsdelivr.net/npm/element-plus@2.1.4";
    16. document.body.appendChild(script);
    17. let myapp = document.createElement("div");
    18. document.body.appendChild(myapp);
    19. myapp.id = "my-app";
    20. myapp.innerHTML = `
    21. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-plus@2/dist/index.min.css" />
    22. <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css">
    23. <el-backtop :visibility-height="300" :right="30" :bottom="30">
    24.     <i class="fas fa-arrow-alt-circle-up fa-2x"></i>
    25. </el-backtop>`
    26. unsafeWindow.onload = function () {
    27.     const app = Vue.createApp({});
    28.     app.use(ElementPlus);
    29.     app.mount("#my-app");
    30. }

    31. GM_addStyle(`
    32.     /* 滚动条样式 */
    33.     ::-webkit-scrollbar {
    34.         width: 10px;
    35.     }

    36.     ::-webkit-scrollbar-track {
    37.         display: none;
    38.     }

    39.     ::-webkit-scrollbar-thumb {
    40.         border-radius: 5px;
    41.         box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
    42.         background-color: #E8E8E8;
    43.     }
    44. `)
    复制代码

    完事~



  • TA的每日心情
    开心
    前天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4196

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-3-29 13:15:30 | 显示全部楼层
    遮住id以为是李恒道
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-7-6 11:14
  • 签到天数: 253 天

    [LV.8]以坛为家I

    41

    主题

    318

    回帖

    2178

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    积分
    2178

    荣誉开发者油中2周年生态建设者

    发表于 2022-3-29 13:17:50 | 显示全部楼层
    王一之 发表于 2022-3-29 13:15
    遮住id以为是李恒道

    代码丢失是什么鬼
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-7-6 11:14
  • 签到天数: 253 天

    [LV.8]以坛为家I

    41

    主题

    318

    回帖

    2178

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    积分
    2178

    荣誉开发者油中2周年生态建设者

    发表于 2022-3-29 13:23:33 | 显示全部楼层
    王一之 发表于 2022-3-29 13:15
    遮住id以为是李恒道

    编辑器该换了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4196

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-3-29 13:25:09 | 显示全部楼层

    哎 我也很想吐槽 但是没有找到合适的
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6763

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-3-29 13:48:47 | 显示全部楼层
    王一之 发表于 2022-3-29 13:15
    遮住id以为是李恒道

    当学院派才有意思!
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-7-6 11:14
  • 签到天数: 253 天

    [LV.8]以坛为家I

    41

    主题

    318

    回帖

    2178

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    积分
    2178

    荣誉开发者油中2周年生态建设者

    发表于 2022-3-29 13:59:18 | 显示全部楼层
    李恒道 发表于 2022-3-29 13:48
    当学院派才有意思!

    这问题昨晚一晚上没弄明白...
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6763

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-3-29 14:13:29 | 显示全部楼层
    Hangover 发表于 2022-3-29 13:59
    这问题昨晚一晚上没弄明白...

    其实可以单独翻一下那个组件的源码看差异
    伴着调试
    这样理解更深入一点
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表