antd+vue——实现按钮始终固定在顶部,且根据权限的不同控制按钮组件的显示与隐藏——技能提升

news2025/1/20 19:19:54

最近在写后台管理系统,遇到一个小功能,就是一个按钮组件集合。

之前写过一篇文章,是关于按钮集合固定到页面顶部的文章。vue——实现页面滚动时,dom固定在顶部——基础积累

原理就是:监听页面的滚动,如果滚动距离超过一定大小,就设置按钮dom的position为fixed固定定位。

下面的内容跟这个一致,只不过是封装成了组件来使用。

1.组件内容——html代码

<template>
  <div>
    <a-card ref="buttonBoxSelf" :class="{ 'button-box-fixed': isFixed }">
      <slot></slot>
    </a-card>
  </div>
</template>

2.组件内容——js代码

<script>
export default {
  name: 'ButtonBox',
  data() {
    return {
      height: 0,
      isFixed: false,
      timer: null,
      btns: 0,
    };
  },
  mounted() {
    const dom = this.$refs.buttonBoxSelf.$el;
    this.height = dom.offsetHeight;
    let offsetTop = dom.offsetTop;
    if (dom.offsetTop == 0) {
      const parent = this.$refs.buttonBoxSelf.$parent.$parent.$el;
      offsetTop = parent.offsetTop;
    }
    this.$bus.$on('scrollTop', (scrollTop) => {
      if (this.timer) {
        clearTimeout(this.timer);
      }
      this.timer = setTimeout(() => {
        if (offsetTop == 0) {
          // 滚动距离为包裹层的高度
          if (scrollTop >= 20) {
            this.isFixed = true;
          } else {
            this.isFixed = false;
          }
          return;
        }
        // 滚动距离为包裹层距离内容层的高度
        if (scrollTop >= offsetTop) {
          this.isFixed = true;
        } else {
          this.isFixed = false;
        }
      }, 10);
    });
  },
  methods: {},
};
</script>

3.组件内容——css代码

<style scoped>
.button-box-fixed {
  position: fixed;
  top: 152px;
  z-index: 3;
  width: calc(100% - 120px);
  box-shadow: 0 6px 12px 0 rgb(0 0 0 / 5%);
}
</style>

4.组件的使用——全局注册——main.js

import ButtonBox from '@/components/customer/ButtonBox';
Vue.component(ButtonBox.name, ButtonBox);

5.组件的使用——页面调用

<ButtonBox>
      <a-space>
        <a-button
          type="primary"
          ghost
          v-if="
            info.status >= 1 &&
            info.status < 40
          "
          >编辑</a-button
        >
         <a-button
            type="primary"
            ghost
            v-if="info.status == 5 || info.status == 15 || info.status == 25"
            >取消</a-button
          >
    </a-space>
</ButtonBox>

上面的按钮中有两个按钮:编辑+取消,而且两个按钮有不同的显示条件,只有当符合条件的时候才会显示出来。

在这里插入图片描述
当一个按钮也没有的时候,就会出现下面这样的情况。
在这里插入图片描述
此时是非常不合适的,这时候就需要用下面的方法来判断了。

6.组件的使用——判断按钮组件的显示与隐藏

6.1 给ButtonBox组件添加buttonBoxClass类名

6.2 给ButtonBox组件添加v-show="btns"

6.3 在页面加载的时候添加以下的内容:

this.$nextTick(() => {
  let btns = document.querySelectorAll('.buttonBoxClass button');
  this.btns = btns.length;
});

原理是:如果符合显示条件,则按钮一定会是button组件,如果不符合显示条件,则按钮只会是个普通的div元素,所以可以通过判断button元素的个数,来判断是否有按钮的存在。

完成!!!多多积累,多多收获。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT Qmake OpenGL osg笔记

文章目录概述QT修改样式qmake概述库引用和库路径指定QT创建动态库和使用小例子写动态库用动态库参考资料附录概述 需要先安装osg&#xff0c;然后再编译安装osgQOpenGL的插件。 其中&#xff0c;osgQOpenGL是OSG嵌入到qt中的一种实现方式&#xff0c;换言之&#xff0c;能够支…

AMBA、AHB、APB、AXI总线介绍及对比

link 一、AMBA概述AMBA (Advanced Microcontroller Bus Architecture) 高级微处理器总线架构定义了高性能嵌入式微控制器的通信标准&#xff0c;可以将RISC处理器&#xff08;精简指令集处理器&#xff09;集成在其他IP芯核和外设中&#xff0c;它是有效连接IP核的“数字胶”&a…

或许是市面上最强的 Mock 工具

背景 在开发过程中&#xff0c;由于后端与前端并行开发&#xff0c;或者前端需要等待后台开发&#xff0c;难以保证对接效率&#xff0c;同时即使用开发好的 API 对接&#xff0c;也有可能一个 API 不通就阻塞了整个软件的对接工作。同时对软件的敏感度也很高&#xff0c;一不…

冯·诺依曼:计算机硬件与软件Computer

计算机硬件与软件 计算机&#xff08;Computer&#xff09;&#xff1a;俗称电脑&#xff0c;是一种能接收和存储信息&#xff0c;并按照存储在其内部的程序对海量数据进行自动、高速地处理&#xff0c;然后把处理结果输出的现代化智能电子设备 冯诺依曼体系结构&#xff1a; …

cubeIDE开发, STM32移植GuiLite图形库开发要点

一、GuiLite GuiLite图形库&#xff0c;仅4千行C代码&#xff0c;0依赖&#xff0c;单一头文件库&#xff08;GuiLite.h&#xff09;的跨平台开源GUI库&#xff0c;支持支持的操作系统有iOS/macOS/WatchOS&#xff0c;Android&#xff0c;Linux&#xff08;ARM/x86-64&a…

Filter过滤器 | 过滤器的使用以及实现原理、责任链设计模式改造oa项目

目录 一&#xff1a;过滤器的使用以及实现原理 &#xff08;1&#xff09;当前的oa项目还存在什么缺陷&#xff1f; &#xff08;2&#xff09;Filter是什么&#xff0c;有什么用&#xff0c;执行原理是什么&#xff1f; &#xff08;3&#xff09;过滤器怎么写&#xff1f…

蓝桥杯:作物杂交 (DFS)

目录 题目描述 输入描述 输出描述 输入输出样例 输入 输出 样例说明 思路&#xff08;DFS&#xff09;&#xff1a; AC代码&#xff08;Java&#xff09;&#xff1a; 题目链接 题目描述 作物杂交是作物栽培中重要的一步。已知有 N种作物 (编号 1 至 N )&#xff0c;第…

[第十二届蓝桥杯/java/算法]B——空间

&#x1f9d1;‍&#x1f393;个人介绍&#xff1a;大二软件生&#xff0c;现学JAVA、Linux、MySQL、算法 &#x1f4bb;博客主页&#xff1a;渡过晚枫渡过晚枫 &#x1f453;系列专栏&#xff1a;[编程神域 C语言]&#xff0c;[java/初学者]&#xff0c;[蓝桥杯] &#x1f4d6…

python爬虫技术如何挣钱?教你爬虫月入三万!

前言 爬虫技术挣钱方法1:接外包爬虫项目 这是网络爬虫最通常的的挣钱方式&#xff0c;通过外包网站&#xff0c;熟人关系接一个个中小规模的爬虫项目&#xff0c;一般向甲方提供数据抓取&#xff0c;数据结构化&#xff0c;数据清洗等服务。 各位新入行的猿人看官大多都会先尝…

SpringBoot中的Aop用法

目录什么是AopAop概述相关注解相关概念实例1PointCut 表达式详解executionwithinthistargetargs:annotation:args:逻辑运算符实例2环绕通知什么是Aop 主要介绍springboot中aop的使用&#xff0c;用过Spring框架的都知道&#xff0c;aop是spring框架的两大核心功能之一&#xf…

「实操」适配 NebulaGraph 新版本与压测实践

本文来自邦盛科技-知识图谱团队-繁凡&#xff0c;本文以 NebulaGraph v3.1.0 为例。 前言 NebulaGraph v3.1 版本已经发布有一段时间了&#xff0c;但是我们的项目之前是基于 v2.6.1 版本开发的&#xff0c;由于一直在做功能相关的工作&#xff0c;所以一直没有对图库进行升级…

一个简单的步骤让你的 Python 代码更干净

说起来容易做起来难&#xff0c;我们都知道代码可读性非常重要&#xff0c;但是写的时候总是随心所欲&#xff0c;不考虑类型提示、import 排序、PEP8 规范。今天分享一个小技巧&#xff0c;通过一个简单的步骤就可以让你的 Python 代码更干净。 这就是 pre-commit&#xff1a…

pyQt5和pySide2 环境配置以及部分问题解决方案

首先介绍需要安装的内容&#xff1a; 1、Qt 2、python3.7.5&#xff08;查找资料过程中有注意到说是3.8及3.8以上版本Qt可能不兼容&#xff09;【记得勾选添加到环境变量中选项】 3、pip&#xff08;主要用来下载使用&#xff09; 4、pySide2、PyQt5、pyqt5-tools 5、如果有使…

vue 前端国际化方案

方案介绍&#xff1a; 1.使用i18n&#xff08;使用步骤可百度&#xff0c;要注意版本问题&#xff09; 2.整合ele-ui的国际化方案&#xff08;百度&#xff0c;几行添加一下即可&#xff09; 3.数据信息的配置&#xff08;重头戏&#xff0c;以下详细介绍&#xff09;excel转j…

中科院高分区盘点:1区新刊,影响因子即将突破7分(含IEEE)

高分新刊——计算机领域 1区人工智能类SCI&EI 【出版社】IEEE 【自引率】4.30%&#xff08;低&#xff09; 【国人占比】13.40% 【期刊简介】IF:6.5-7.0&#xff0c;JCR1区&#xff0c;中科院3区 【检索情况】SCI&EI 双检&#xff0c;正刊 【参考周期】3-5个月左…

Hierarchical Fusion Model (2019 ACL)三种模态的层次融合

论文题目&#xff08;Title&#xff09;&#xff1a;Multi-Modal Sarcasm Detection in Twitter with Hierarchical Fusion Model 研究问题&#xff08;Question&#xff09;&#xff1a;主要研究了推特中由文本和图像组成的推文的多模态讽刺检测 研究动机&#xff08;Motiva…

二肽Phe-Pro,7669-65-0,FP

Substrate for skin fibroblast prolidase.皮肤成纤维细胞prolida酶的底物。 编号: 131185中文名称: 二肽Phe-Pro英文名: Phe-ProCAS号: 7669-65-0单字母: H2N-FP-OH三字母: H2N-Phe-Pro-COOH氨基酸个数: 2分子式: C14H18N2O3平均分子量: 262.3精确分子量: 262.13等电点(PI): 6…

【学习笔记02】vue指令学习

目录 一、常用的指令 &#xff08;一&#xff09;v-bind 1、绑定样式 2、$event &#xff08;二&#xff09;v-on 1、v-on修饰符 2、按键修饰符 3、案例&#xff1a;Todolist &#xff08;三&#xff09;v-model 1、 v-model和v-bind的区别 2、案例&#xff1a;数…

wy的leetcode刷题记录_Day60

wy的leetcode刷题记录_Day60 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2022-12-21 前言 这几天身体不舒服&#xff0c;现在重新开始更新。 目录wy的leetcode刷题记录_Day60声明前言1753. 移除石子的最大得分题目介绍思路代码收获…

Java 异常(Exceptions)

目录 1、什么是异常&#xff1f; 2、捕获并处理异常 try-with-resources 语句 3、通过方法抛出异常 自定义异常 1、什么是异常&#xff1f; 定义&#xff1a;异常是在程序执行过程中发生的一种事件&#xff0c;它会中断程序指令的正常流程。 当方法中发生错误时&#xff0…