移动端网页div下滑消失、上滑出现(附带闪烁效果)

news2024/12/24 8:54:18

在这里插入图片描述

    <div :class = "IconShow ? 'mhomeIcon' : 'IconOff'">
      <img src="@/assets/news.svg" alt="">
    </div>

	// 距离顶部的距离
    const top = ref(0) 
    // 图标向上还是向下滑动
    const IconShow = ref(true)
    // 滑动监听, 注意如果只有document.documentElement.scrollTop这一个的话,安卓微信浏览器的滑动无法获取到。
    function handleScroll() {
      window.addEventListener('scroll', () => {
        top.value = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
      });
    }
    watch(
      () => top.value,
      (newValue, oldValue) => {
        if (newValue > 0) {
          // 新的值大于旧的值说明在向下滑动
          if (newValue > oldValue) {
            IconShow.value = false
          // 向上滑动,且相差大于5
          } else if (newValue < oldValue && (oldValue-newValue > 5)) { 
            IconShow.value = true
          }
        }
      },
      { immediate: true } 
    )
  onMounted(() => {
    // 执行滑动监听
    handleScroll();
  });

// ----------------------向上
.mhomeIcon {
  position: fixed;
  transition: all 1s ease-in-out 0s;  // 动画一共秒
  opacity: 1;   // 初试透明度100%
  top: 85%;   // 距离顶部85%
  right: 0.8rem;
  width: 2rem;
  height: 2rem;
  background: rgba(255, 255, 255, 0.8);
  border-radius: 1rem;
  cursor: pointer;
  box-shadow: 0px 4px 10px 0px rgba(148,173,177,0.28);
  z-index: 100;
  transform-style: preserve-3d;  // 加这个是为了避免:after伪元素层级大于其他元素
  &>img {
    display: block;
    margin: 0 auto;
    z-index: 200;   // 图标层级最高
    width: 1.2rem;
    height: 1.4rem;
    margin-top: 0.4rem;
  }
}
.mhomeIcon:after {
  content: '';
  width: 2.6rem;
  height: 2.6rem;
  position: absolute;
  top: -0.3rem;
  left: -0.3rem;
  border-radius: 50%;
  animation: breath .6s linear .5s infinite alternate; // 呼吸动画实现
  background-color: rgba(43, 204, 204, 0.5);
  z-index: -100;  // 层级最低
  transform: translateZ(-10px);   // z轴负数
}
@keyframes breath { // 关键帧规则
  0%   { opacity: 0.5; }
  100% { opacity: 0; }
}
// ----------------------向下
.IconOff {
  position: fixed;
  right: 0.8rem;
  bottom: 0;
  transition: all 1s ease-in-out 0s;    // 动画1秒
  top: 100%;   // 距离顶部100%,也就跑出画面外了
  opacity: 0;   // 透明度0
  width: 2rem;
  height: 2rem;
  background: rgba(255, 255, 255, 0.8);
  border-radius: 1rem;
  &>img {
    display: block;
    margin: 0 auto;
    width: 1.2rem;
    height: 1.4rem;
    margin-top: 0.4rem;  }
}

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

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

相关文章

【C++】深入浅出STL之vector类

文章篇幅较长&#xff0c;越3万余字&#xff0c;建议电脑端访问 文章目录 一、前言二、vector的介绍及使用1、vector的介绍2、常用接口细述1&#xff09;vector类对象的默认成员函数① 构造函数② 拷贝构造③ 赋值重载 2&#xff09;vector类对象的访问及遍历操作① operator[]…

zookeeper入门学习

zookeeper入门学习 zookeeper应用场景 分布式协调组件 客户端第一次请求发给服务器2&#xff0c;将flag值修改为false&#xff0c;第二次请求被负载均衡到服务器1&#xff0c;访问到的flag也会是false 一旦有节点发生改变&#xff0c;就会通知所有监听方改变自己的值&#…

c++画出分割图像,水平线和垂直线

1、pca 找到图像某个区域的垂直线&#xff0c;并画出来 // 1、 斑块的框 血管二值化图&#xff0c;pca 找到垂直血管壁的直线, 还是根据斑块找主轴方向吧// Step 1: 提取斑块左右范围内的血管像素点坐标&#xff0c;std::vector<cv::Point> points;for (int y 0; y <…

Stable Diffusion教程(6) - 扩展安装

打开stable diffusion webUI界面 加载插件列表 依次点击扩展->可用->加载自 搜索插件 首先在搜索框输入你要安装的插件&#xff0c;然后点击插件后面的安装按钮 如果你需要的插件这里面没有找到&#xff0c;可通过通网址安装的方式安装。 在git仓库网址输入框输入的你插件…

警惕!中科院预警,Frontiers这本不被收录!2023年7月EI目录已更新!(附全年下载)

2023年7月EI期刊目录更新 爱思唯尔官网近日更新了EI期刊目录&#xff0c;此次更新是2023年7月1日&#xff0c;与上次更新&#xff08;2023年6月&#xff09;相比&#xff0c;有1本期刊名称在Serials&#xff08;连续出版&#xff09;列表中搜索不到&#xff0c;详情如下&#…

InfiniBand、UCIe相关思考

InfiniBand、UCIe相关思考 内容1、InfiniBandInfiniBand是什么&#xff1f;InfiniBand的来历是什么&#xff1f;InfiniBand为什么重要&#xff1f;InfiniBand相较于Ethernet区别&#xff1f;同领域内还有其他哪些技术&#xff1f;InfiniBand中RDMA是种什么技术&#xff1f; 内容…

【Linux】计算机网络的背景和协议分层

文章目录 网络发展协议何为协议网络协议协议分层OSI七层模型TCP/IP五层模型&#xff08;四层&#xff09; 基本通信流程mac地址和ip地址网络通信本质 网络发展 从一开始计算机作为一台台单机使用&#xff0c;到现在网络飞速发展&#xff0c;从局域网Lan建立起局域网&#xff0…

【零基础学Rust | 基础系列 | Cargo工具】Cargo介绍及使用

文章目录 前言一&#xff0c;Cargo介绍1&#xff0c;Cargo安装2&#xff0c;创建Rust项目2&#xff0c;编译项目&#xff1a;3&#xff0c;运行项目&#xff1a;4&#xff0c;测试项目&#xff1a;5&#xff0c;更新项目的依赖&#xff1a;6&#xff0c;生成项目的文档&#xf…

什么运动耳机好用?市面上公认表现最好的几款耳机

随着技术的发展&#xff0c;运动蓝牙耳机这个类别已经进化到了骨传导的形式&#xff0c;也受到了广大运动爱好者的一致好评。作为爱运动的玩家&#xff0c;我一直在找可以兼顾运动和音质的骨传导&#xff0c;最近体验到了几款表现还不错的无线骨传导耳机&#xff0c;跟大家分享…

JAVASE---继承和多态

继承 比如&#xff0c;狗和猫&#xff0c;它们都是一个动物&#xff0c;有共同的特征&#xff0c;我们就可以把这种特征抽取出来。 像这样把相同的可以重新放到一个类里面&#xff0c;进行调用&#xff0c;这就是继承。 概念 继承(inheritance)机制&#xff1a;是面向对象程…

Java记录一次生产CPU飙升查找原因

java项目:项目定制化产品的微服务,主要做查es的定时任务和报表统计,实时监控数据. 上线几天,cpu报警 看图: 排查思路: 七八个定时任务同时查es,可能造成的飙升,然后只能拿jstack分析,生产环境慎用. jstack是Java开发工具包中的一个命令行工具&#xff0c;用于生成Java虚拟机&…

软件测试环境讲解

在一个项目开发到发布的整个过程中&#xff0c;会使用到很多个环境进行测试和运行项目。最基本的开发环境、测试环境、准生产环境、生成环境 一、开发环境 开发环境顾名思义就是我们程序猿自己把项目放到自己的电脑上&#xff0c;配置好以后&#xff0c;跑起来项目&#xff0c…

高速公路巡检无人机,为何成为公路巡检的主流工具

随着无人机技术的不断发展&#xff0c;无人机越来越多地应用于各个领域。其中&#xff0c;在高速公路领域&#xff0c;高速公路巡检无人机已成为公路巡检的得力助手。高速公路巡检无人机之所以能够成为公路巡检中的主流工具&#xff0c;主要是因为其具备以下三大特性。 一、高速…

stack模拟实现-适配器

在C中&#xff0c;适配器模式常用于对容器类或者容器类的操作进行封装和拓展。std::stack就是一种适配器。它将一个底层容器&#xff08;默认为std::deque&#xff09;的接口转换成了一种先入后出&#xff08;Last-In-First-Out&#xff0c;LIFO&#xff09;的栈的接口。 适配…

SAS-数据集SQL垂直(纵向)合并

一、SQL垂直合并的基本语法 一个selectt对应一个表&#xff0c;select之间用set-operator连接&#xff0c;set-operator包括&#xff1a;except&#xff08;期望&#xff09;、intersect&#xff08;相交&#xff09;、union&#xff08;合并&#xff09;&#xff0c;outer un…

规划路线(微信小程序、H5)

//地图getLocationDian(e1, e2) {console.log(e1, e2);let self this;self.xx1 [];self.xx2 [];self.points [];// self.markers[]console.log(self.markers, >marks);// self.$jsonp(url, data).then(re > {// var coors re.result.routes[0].polyline;// for (v…

2023-08-03 LeetCode每日一题(删除注释)

2023-08-03每日一题 一、题目编号 722. 删除注释二、题目链接 点击跳转到题目位置 三、题目描述 给一个 C 程序&#xff0c;删除程序中的注释。这个程序source是一个数组&#xff0c;其中source[i]表示第 i 行源码。 这表示每行源码由 ‘\n’ 分隔。 在 C 中有两种注释风…

pytorch实战-图像分类(一)(数据预处理)

目录 1.导入各种库 2.数据预处理 2.1数据读取 2.2图像增强 3.构建数据网络 3.1网络构建 3.2读取标签对应的名字 4.展示数据 4.1数据转换 4.2画图 5.模型训练 1.导入各种库 上代码&#xff1a; import os import matplotlib.pyplot as plt %matplotlib inline import nu…

Pytorch深度强化学习1-4:策略改进定理与贝尔曼最优方程详细推导

目录 0 专栏介绍1 贝尔曼最优方程2 贪心策略与策略改进3 策略迭代与价值迭代4 算法流程 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理&#xff0c;并且采用Pytorch框架对常见的强化学习算法、案例进行实现&#xff0c;帮助读者理解并快速上手开发。同时&#xff0c;辅以各…

PHP正则绕过解析

正则绕过 正则表达式PHP正则回溯PHP中的NULL和false回溯案例案例1案例2 正则表达式 在正则中有许多特殊的字符&#xff0c;不能直接使用&#xff0c;需要使用转义符\。如&#xff1a;$,(,),*,,.,?,[,,^,{。 这里大家会有疑问&#xff1a;为啥小括号(),这个就需要两个来转义&a…