定制底部footer bug:切换tab时position fixed会抖动

news/2024/7/10 2:44:34 标签: vue, css

文章目录

  • bug描述
  • position:fixed是啥?有啥用
  • 为什么切换tab的时候会抖动
  • 如何解决
    • 自定义一个InBody组件,将里面所有的元素放到body里面
    • 需要放到的底部的内容都放到这个组件里面

bug描述

在element admin里面定制了footer组件,每个页面也可还有点区别,将分页和导出和一些其他操作放到footer,在切换页面的时候会有抖动
在这里插入图片描述

position:fixed是啥?有啥用

position:fixed是固定定位的意思,就是把一个DIV(footer)固定在页面的最底部,无论页面上面的内容如何滚动,页面下部的(footer)不动。

为什么切换tab的时候会抖动

当元素祖先的 transform、perspective、filter 或 backdrop-filter 属性非 none 时,容器由视口改为该祖先。

fixed的元素的父级元素有任意一个的 transform、perspective、filter 或 backdrop-filter不为空,则会基于这个容器而定位,而不是浏览器窗口了。

element-admin在切换tab的时候,会有一个动画效果,是基于transform来实现的。

如何解决

自定义一个InBody组件,将里面所有的元素放到body里面

<template>
  <div>
    <slot></slot>
  </div>
</template>
<script>
export default {
  name: 'InBody',
  mounted() {
    const node = this.$mount().$el
    document.body.appendChild(node)//将里面所有的元素放到body里面
  },
  destroyed() {
    const node = this.$mount().$el
    node.remove()
  }
}
</script>

在Vue组件的mounted生命周期钩子函数中执行的操作。下面是对代码的解释:

  1. mounted(): 这是Vue组件的生命周期钩子函数之一。在Vue实例挂载到DOM元素上之后执行,表示组件已经被渲染并插入到页面中。

  2. const node = this.$mount().$el: $mount()是Vue实例的一个方法,用于手动将Vue实例挂载到DOM元素上。这里通过调用$mount()方法并获取其返回值的$el属性,将组件挂载到一个虚拟的DOM节点上。这样做的目的是将组件渲染为实际的HTML元素。

  3. document.body.appendChild(node): document.body表示页面的<body>元素。appendChild()是DOM API中的一个方法,用于将指定的节点添加到父节点的子节点列表的末尾。在这里,将之前挂载的组件节点(node)添加到<body>元素中,实现将组件的内容插入到页面中的效果。

综合来说,这段代码的作用是将Vue组件的内容渲染并插入到页面的<body>元素中。在组件的mounted钩子函数中,首先将组件挂载到一个虚拟的DOM节点上,然后通过appendChild()方法将该节点添加到<body>元素中,使得组件的内容在页面中显示出来。

需要放到的底部的内容都放到这个组件里面

<InBody>
      <pagination class="footer-global" v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
                  :limit.sync="queryParams.pageSize" @pagination="getList" />
    </InBody>

http://www.niftyadmin.cn/n/367808.html

相关文章

【Labview如何显示数据库表格中的内容】

Labview如何显示数据库表格中的内容 前提操作思路框图 前提 已经成功将数据库与Labview相连接&#xff0c;若还没有链接可以查看&#xff1a;Labview与SQL Server互联 进行操作 操作 思路 首先创建一个表格控件&#xff0c;通过一个按钮启动程序&#xff0c;通过程序调用数…

Android 12.0SystemUI 状态栏下拉和通知栏始终居中

1.概述 在12.0的产品定制化开发中,在系统原生的SystemUI 状态栏下拉和通知栏,默认是根据手势的x 坐标的位置居中显示,但是如果太靠两边感觉不太好,下拉太靠边不太好看所以产品提出不管手势在哪里下滑 都要去下拉和通知栏居中显示 会比较好看些 下面就来实现这个需求 2.Sy…

RouterOS上配置VRRP,OpenWRT上编译入keepalived

VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;和keepalived都是用于实现网络高可用性的协议&#xff0c;它们可以在路由器或服务器上实现冗余&#xff0c;确保在一个节点失效时&#xff0c;另一个节点可以自动接管服务。下面是一些关于在RouterOS上配置VRRP…

原型模式与享元模式

原型模式与享元模式 原型模式和享元模式&#xff0c;前者是在创建多个实例时&#xff0c;对创建过程的性能进行调优&#xff1b;后者是用减少创建实例的方式&#xff0c;来调优系统性能。这么看&#xff0c;你会不会觉得两个模式有点相互矛盾呢&#xff1f; 其实不然&#xff0…

【源码解析】SpringBoot使用Nacos配置中心和使用 @NacosValue 进行热更新

SpringBoot使用Nacos 引入依赖 <dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-config-spring-boot-starter</artifactId><version>0.2.12</version> </dependency>增加本地配置 nacos:config:server-…

第十七章 开发Productions - ObjectScript Productions - 对业务服务、流程和操作进行编程

文章目录 第十七章 开发Productions - ObjectScript Productions - 对业务服务、流程和操作进行编程介绍关键原则 第十七章 开发Productions - ObjectScript Productions - 对业务服务、流程和操作进行编程 本页讨论了在为生产开发业务服务、流程和操作时的常见编程任务和主题…

1、Ovirt 开源虚拟化平台安装

ovirt官网 一、资源规划介绍 1.1、服务规划 ovirt版本 ovirt engine 4.3.10 ovirt node 4.3.10 ovirt.node01.opsvv.com 负责托管引擎服务 1.2、资源划分 1.2.1、节点划分 密码均为&#xff1a;12345678 Node02无法开启虚拟化&#xff0c;只演示加入集群节点使用 节点…

Elixir语言初步

文章目录 安装基本运算脚本模块 安装 Elixir是基于Erlang虚拟机的一种函数是动态语言&#xff0c;以运行低延时、分布式、可容错著称&#xff0c;在Web和嵌入式领域应用较为广泛。 可在官网下载&#xff1a;elixir&#xff0c;有关不同操作系统的安装方式写得很明白&#xff…