element-ui二次封装实现全局回到顶部组件

2023-05-16

文章目录

  • 前言
  • 一、实现方法
    • 1.创建 BackTop 组件
    • 2.全局注册组件
    • 3.使用组件
  • 二、组件效果
  • 总结


前言

在开发 vue 项目时,我们都可能用到 element-ui,但是有时 element-ui 提供的组件太简单或不满足应用的需求,因此我们需要在其基础上再对组件进行封装。


一、实现方法

需先在项目中安装 element-ui:Vue项目使用element-ui

1.创建 BackTop 组件

在 components 文件夹创建 backTop 文件夹,然后在 backTop 文件夹中再创建 BackTop.vue 。

BackTop.vue 代码如下:

<template>
  <div class="pages-content-scroll">
    <el-backtop target=".pages-content-scroll"></el-backtop>
    <slot></slot><!--留一个位置插入内容-->
  </div>
</template>

<script>


export default {
  name: 'BackTop',
  components: {},
  props:{},
  data(){
      return{}
  },
  methods:{},
  mounted(){

  }
}
</script>

<style scoped lang="scss">
    .pages-content-scroll{
        /*必须撑满整个屏幕*/
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        overflow-x: hidden;
    }
</style>

2.全局注册组件

在项目根目录下创建 globalComponents 文件夹,在其下新建 index.js, 用于注册全局组件

index.js 代码如下:

//注册全局组件
import Vue from "vue"
import BackTop from "../components/backTop/BackTop" //引入

Vue.component('backTop', BackTop) //注册

3.使用组件

1.在 views 文件夹下新建两个视图:BackTopOne.vue 和 BackTopTwo.vue
BackTopOne.vue 代码如下:

<template>
  <div >
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <div>这是回到顶部页面1</div>
    <!--让页面内容尽量的多,超过屏幕高度,这里省略了,不占空间-->
  </div>
</template>

<script>


export default {
  name: 'BackTopOne',
  components: {},
  props:{},
  data(){
      return{}
  },
  methods:{},
  mounted(){

  }
}
</script>

BackTopTwo.vue 代码如下:

<template>
  <div >
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <div>这是回到顶部页面2</div>
    <!--让页面内容尽量的多,超过屏幕高度,这里省略了,不占空间-->
  </div>
</template>

<script>


export default {
  name: 'BackTopTwo',
  components: {},
  props:{},
  data(){
      return{}
  },
  methods:{},
  mounted(){

  }
}
</script>

2.配置页面路由
router 中的 index.js 代码如下:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/backTopOne',
    name: 'backTopOne',
    component: () => import('../views/BackTopOne')
  },
  {
    path: '/backTopTwo',
    name: 'backTopTwo',
    component: () => import('../views/BackTopTwo')
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router

3.在Home.vue 实现两个页面跳转按钮
Home.vue 代码如下:

<template>
  <div >
    <el-button 
    type="primary" 
    @click="goTo('/backTopOne')">
    去往页面1
    </el-button>
    <el-button 
    type="primary" @click="goTo('/backTopTwo')">
    去往页面2
    </el-button>
  </div>
</template>

<script>
// @ is an alias to /src


export default {
  name: 'Home',
  components: {
  },
  methods:{
    goTo(path){ //路由跳转
      this.$router.push(path)
    }
  }
}
</script>

在这里插入图片描述
4.在App.vue 使用全局注册的 backTop 组件
App.vue 代码如下:

<template>
  <div >
    <backTop>
      <router-view/>
    </backTop>
  </div>
</template>

<style lang="scss">

</style>

二、组件效果

1.点击前往页面1按钮,进入页面1
在这里插入图片描述
2.下拉滚动条,会出现回到顶部按钮,点击即可回到顶部
在这里插入图片描述
3.点击前往页面2按钮,进入页面2

在这里插入图片描述
4.下拉滚动条,会出现回到顶部按钮,点击即可回到顶部
在这里插入图片描述


总结

以上内容我们在 element-ui 的基础上,对 el-backtop 组件再封装,使之可以在全局中使用,视图的内容插入其中,而无需单独调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

element-ui二次封装实现全局回到顶部组件 的相关文章

  • PHP DOM 从第一个 ul 元素获取项目

    我有 html 文件 如下所示 ul li item 1 li li item 2 li li item 3 li ul ul li smth 1 2 3 li li another li ul ul li smth 1 2 3 li li
  • 获取所有只出现一次的元素

    使用 LINQ 我可以获得仅出现一次的所有 int 元素的列表吗 例如 1 2 4 8 6 3 4 8 8 2 会成为 1 6 3 Thanks var result from x in xs group xs by x into grp
  • 检查数组是否是多维的?

    检查数组是否存在的最有效方法是什么平面阵列 原始值或者如果它是一个多维数组 有没有办法做到这一点而不实际循环 数组并运行is array 在它的每个元素上 使用 count 两次 一次在默认模式下 一次在递归模式下 如果值匹配 则数组为no
  • 如何在VB中从数组元素中得出所有可能的总和组合

    如果有一个数组 其中元素为 1 2 3 4 则程序应返回另一个数组 其中包含所有组合的总和 1 2 3 4 3 1 2 4 1 3 5 1 4 5 2 3 6 2 4 7 3 4 6 1 2 3 7 1 2 4 8 1 3 4 9 2 3
  • 数组中最常见的值

    我将如何找到数组中三个最常见的元素 我正在处理长度为 10 000 的数组 其元素 0 100 之间的随机整数 我正在考虑使用两个数组 其中一个长度为 100 并且通过使用 if 语句来递增 但是 我想知道是否有一种方法可以仅使用一个 fo
  • AngulareJS e2e 检查列表中的每个链接

    我是 AngularJS 的新手 我将主要使用 e2e 部分 使用 jasmine 经过几天的无果而终 至少可以说 我发现文档相当厌食 我想知道是否有人可以在这里帮助我 网站生成 a href 链接的 html 列表 我可以使用 angul
  • Joomla 2.5 Jquery 无法调用 null 的方法

    大家好 我正在使用 Joomla 2 5 和 Jquery 我在 chrome 控制台中遇到了这个奇怪的错误 Uncaught TypeError Cannot call method slideUp of null 这是index php
  • Javascript 通过类或 id 获取 DOM 数组中的元素索引位置

    我的情况 var domElements document body getElementsByTagName 现在我想返回数组项键 数组中元素的位置 例如domElements 34 在数组中搜索元素id asd 我怎样才能实现这个目标
  • 用于获取前一个同级的 CSS 选择器[重复]

    这个问题在这里已经有答案了 有没有办法使用纯 CSS 3 来选择具有特定类的元素的前一个同级元素 i e html div div div div div div div div css box1 some styling box2 som
  • 如何动态更改 Angular 中元素的 id?

    我在循环中有一个元素 我只想更改它的 id 以避免冲突 我做了一些搜索 但似乎找不到任何东西 div div index div div 问题是当我调用 ngOnInit 时document getElementById index 1 它
  • 返回 PHP 多维数组中最后一个数组的元素

    如何在 PHP 中动态显示最后一个数组中的元素 例如 Array 0 gt Array id gt 6 user id gt 8 category path gt Sport 1 gt Array id gt 8 user id gt 8
  • 获取显示器内部元素的大小:无父级

    我正在尝试获取将在 jquery ui 对话框中显示的元素的宽度 该对话框设置为在加载时显示 无 这不允许我获得宽度 我是否需要显示它 获取宽度并立即再次隐藏它以获取宽度 或者还有其他我不知道的选择吗 Thanks 您有两个选择 如果你的
  • jquery查找元素的位置

    ul li one li li element li li text li li val li ul 我怎样才能获得职位ul被点击的li 我想这会为你做的 li click function alert this index 请注意 ind
  • 删除 XML 节点

    我有一个 XML 文件 其中包含
  • 如何等待一个元素从 DOM 中移除?

    每当我尝试等待从量角器测试正在测试的网页上的当前 DOM 树中删除 DOM 元素时 我都会遇到此问题 当我尝试等待 DOM 元素通过 user2912739 在另一个线程中提供的这项好技术隐藏时 我已经掌握了它 var el element
  • JQuery 选择框和循环帮助

    谢谢阅读 我对 jQuery 有点陌生 我正在尝试制作一个可以包含在我所有网站中的脚本来解决一个总是让我发疯的问题 问题 带有长选项的选择框在 Internet Explorer 中会被截断 例如 这些选择框 http discoverfi
  • Lua:“拖动”数组中的元素序列

    我正在尝试创建一个函数 将连续数量的元素 拖动 到数组中的新位置 并限制为数组的当前大小 其他项目应该围绕 拖动 的项目晃动 例如 如果我的数组有 7 个元素 并且我想拖动中间的三个 1 2 3 4 5 6 7 lt keys a b C
  • 在Vue.js中,如何选择组件的节点元素? $refs 可能吗?

    因为我想选择组件的节点元素 所以我想也许我可以使用 refs Parent
  • 按位置获取元素?

    我正在研究 SVG 脚本 有 getElementById 或 getElementsByTagName 但我找不到任何方法来按位置获取元素 比如获取位置为x 10 y 10的元素 有什么办法可以实现这个目标吗 var yourElemen
  • 计算数组元素的出现次数/频率

    在 Javascript 中 我试图获取一个初始的数值数组并计算其中的元素 理想情况下 结果将是两个新数组 第一个指定每个唯一元素 第二个包含每个元素出现的次数 不过 我愿意接受有关输出格式的建议 例如 如果初始数组是 5 5 5 2 2

随机推荐

  • 单实例11g升级到19c

    11g的服务器上安装19c的软件 安装完成后 xff0c 不需要关库 xff0c 修改环境变量为19c的 xff0c 执行dbua开始下述升级 11g升级到19c 执行预检查
  • 编译方式安装mysql

    转载于 xff1a 编译编译方式安装mysql编译 环境准备 环境 xff1a 硬件为4C 4G 50G 系统版本为redhat7 9 创建用户和组 创建MySQL用户和组 并且用户不能登陆 系统自带mysql软件 xff0c 安装时会自动
  • mysql 5.7登陆简单密码问题

    lucifer mysql gt update user set authentication string 61 password 39 mysql 39 where user 61 39 root 39 Query OK 1 row a
  • 5.7及以下版本mysql不能插入中文

    转载于 xff1a https blog csdn net qq 59500621 article details 122390644 5 7及以下版本mysql默认数据库使用的字符集是Latin1 我们需要为其修改字符集为 xff1a u
  • 备库failover升级

    1 centos 6 9 single06 gt centos7 9 single06std 11 2 0 4 搭建上面的dg 2 adg上打补丁psu xff1a 31537677 3 centos 7 9 上安装19c软件 xff0c
  • Data Guard高级玩法:通过闪回恢复failover备库

    转载于 xff1a Data Guard高级玩法 xff1a 通过闪回恢复failover备库 ITPUB博客 今天看到有一个网友提了一个问题 xff0c 描述很简短 测试DG时 xff0c 主库不能宕机 xff0c 如何测试failove
  • Oracle性能调查之ASH

    转载于 xff1a Oracle性能调查之ASH xff08 一 xff09 腾讯云开发者社区 腾讯云 在ORACLE性能问题调查时 xff0c 有价值的诊断情报多 xff1a STATSPACK xff0c AWR xff0c ASH x
  • 记录一次网卡问题

    问题 xff1a root 64 rac19c01 ip a 1 lo lt LOOPBACK UP LOWER UP gt mtu 65536 qdisc noqueue state UNKNOWN group default qlen
  • CRS-1705: Found 1 configured voting files but 2 voting files are required

    背景 xff1a vmware虚拟机安装两节点19c rac xff0c 执行node1 root脚本时正常 xff0c 执行node2的root脚本时报错 报错如下 xff1a CRS 2672 Attempting to start 3
  • wwid和uuid的区别

    转载于 xff1a https blog csdn net zwjzqqb article details 80321348 1 wwid 每个SCSI磁盘都有一个WWID xff0c 类似于网卡的MAC地址 xff0c 是独一无二的 可以
  • Sm2记录介绍

    SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法 xff0c SM2采用的就是ECC 256位的一种 1 签名验签 SSWINAPI SGD UINT32 DEVAPI SKF ECCSignData SGD HDL
  • xshell之for循环

    转载于 xff1a shell while read line 与for循环的区别 冥想心灵 博客园 cnblogs com 例子 xff1a while read line 是一次性将文件信息读入并赋值给变量line xff0c whil
  • virtualbox安装虚拟增强功能

    1 分配光驱 xff0c 选择windows的光驱 2 会发现出现了CD驱动器VBoxGuestAdditions 双击进去 xff0c 发现目录如下 xff1a 3 双击执行VBoxGuestAdditions exe
  • #蓝桥杯嵌入式组#历年客观题解析

    文章目录 第八届初赛第八届决赛第九届初赛第九届决赛第十届初赛第十届决赛 第八届初赛 C D 线与功能 xff1a 两个或多个输出信号连接在一起可以实现逻辑 与 的功能 OC门 xff0c 即 集电极开路 xff0c 实际上只是一个NPN型三
  • Git在vscode中简单使用

    Git在vscode中简单使用 一 Git安装与配置 1 Git安装 xff08 官网地址 xff1a https git scm com xff09 2 Git配置 xff08 1 xff09 安装好后 xff0c 桌面右键 Git Ba
  • 小程序云开发入门

    文章目录 前言一 开通云开发二 使用云开发1 直接创建云开发项目2 修改配置文件引入云开发 三 云数据库1 介绍2 使用 四 云函数1 介绍2 使用 五 云存储1 介绍2 使用 总结 前言 一个小程序在开发时 xff0c 除了考虑界面功能逻
  • 小程序Mpx框架入门

    文章目录 简介一 Mpx的特点1 使用原因2 设计思路3 与其他框架的区别 二 安装使用1 相关命令2 项目创建演示 三 Mpx在vscode中的相关插件四 学习Mpx框架开发1 Mpx具有的功能特性2 学习的资源 总结 简介 Mpx是一款
  • 小程序云函数调用云函数

    文章目录 前言一 案例说明二 功能实现1 云函数1 xff1a getdata2 云函数2 xff1a deldata 总结 前言 小程序云开发提供了云函数 xff0c 云函数是运行在服务端的代码 xff0c 执行速度快 通常一些复杂的功能
  • Vue项目打包后不能正常显示页面

    项目场景 xff1a 通过 Vue CLI 创建的 vue 项目 xff0c 编写完项目后 xff0c 通过 npm run bulid 对项目进行打包 xff0c 再把打包得到的内容 xff08 dist文件夹 xff09 交给后端部署到
  • element-ui二次封装实现全局回到顶部组件

    文章目录 前言一 实现方法1 创建 BackTop 组件2 全局注册组件3 使用组件 二 组件效果总结 前言 在开发 vue 项目时 xff0c 我们都可能用到 element ui xff0c 但是有时 element ui 提供的组件太