jQuery实现div浮动层跟随页面滚动效果

yizhihongxing

让我来为您详细讲解“jQuery实现div浮动层跟随页面滚动效果”的完整攻略:

1. 引入jQuery库

在页面中引入jQuery库,可以使用CDN或者下载后引入本地:

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>

2. HTML结构设置

在HTML中,定义一个需要浮动的div,并设置其初始状态为“不浮动”。可以使用CSS的position属性将div设置为绝对定位,然后初始设置为bottom:-50px;left:50%;margin-left:-100px;,即位于底部中间的位置,z-index属性为1,用于设置显示层级。

<style>
.floating {
  position: absolute;
  bottom: -50px;
  left: 50%;
  margin-left: -100px;
  z-index: 1;
}
</style>

<div class="floating">
  <p>浮动层的内容</p>
</div>

3. jQuery实现滚动效果

使用jQuery中的$(window).scroll()方法来实现滚动效果:

$(window).scroll(function() {
  var top = $(window).scrollTop();
  $('.floating').stop().animate({
    'top': top + 100
  }, 500);
});

解释一下上述代码:

  • $(window).scroll()监听了窗口的滚动事件,当滚动页面时就会触发该函数;
  • $(window).scrollTop()获取当前页面滚动的距离(即上端到顶部的距离),并赋值给变量top
  • 使用.stop()方法停止当前正在进行的动画,以避免滚动过快导致浮动层的位移和位置计算出现逻辑错误;
  • .animate()方法设置浮动层的动画效果,将top属性设为当前滚动距离加上100px,即设置为固定距离滚动页面;500为动画的执行时间,单位是毫秒。

4. 完整代码

下面是完整的代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Floating layer scrolling effect</title>
  <style>
    .container {
      height: 2000px;
    }
    .floating {
      position: absolute;
      bottom: -50px;
      left: 50%;
      margin-left: -100px;
      z-index: 1;
    }
  </style>
  <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
  <script>
    $(function() {
      $(window).scroll(function() {
        var top = $(window).scrollTop();
        $('.floating').stop().animate({
          'top': top + 100
        }, 500);
      });
    });
  </script>
</head>
<body>
  <div class="container">
    <h1>浮动层跟随页面滚动效果演示</h1>
    <p>这是一个演示的页面,里面有很多内容...</p>
    <div class="floating">
      <p>这是漂浮层的内容</p>
    </div>
  </div>
</body>
</html>

5. 示例说明

示例1:“浮动层”跟随滚动条

首先,需要模拟一个可以滚动的页面。

<div class="scrollable" style="height: 500px; overflow: auto;">
  <h2>可以滚动的内容</h2>
  <p>这里是内容的开始...</p>
  <p>这里是内容的中间...</p>
  <p>这里是内容的结尾...</p>
</div>

接下来,我们需要定义符合要求的div,以获取“浮动的效果”。

<div class="floating-container" style="position: sticky; top: 50px;">
  <h3>我是一个浮动层</h3>
  <p>我一旦「起飞」,就会在您的页面中随意移动。</p>
</div>

初始化sccs样式:

.floating-container {
  background-color: #f8f8f8;
  border-radius: 16px;
  padding: 64px;
  left: 50%;
  margin-left: -256px;
}

然后,可以使用JavaScript/jQuery,根据上面的方法“实现滚动效果”。

$(document).ready(function() {
  var containerTop = $('.floating-container').position().top;
  var scrollOffset = $('.scrollable').offset().top;
  $(window).scroll(function() {
    if ($('.scrollable').scrollTop() > (containerTop - scrollOffset)) {
      $('.floating-container').addClass('floating');
    } else {
      $('.floating-container').removeClass('floating');
    }
  });
});

“滚动效果”就这样实现了,整段代码:

<div class="scrollable" style="height: 500px; overflow: auto;">
  <h2>可以滚动的内容</h2>
  <p>这里是内容的开始...</p>
  <p>这里是内容的中间...</p>
  <p>这里是内容的结尾...</p>
</div>

<div class="floating-container" style="position: sticky; top: 50px;">
  <h3>我是一个浮动层</h3>
  <p>我一旦「起飞」,就会在您的页面中随意移动。</p>
</div>

<style>
.floating-container {
  background-color: #f8f8f8;
  border-radius: 16px;
  padding: 64px;
  left: 50%;
  margin-left: -256px;
}
.floating {
  position: fixed;
  top: 50px;
  left: 50%;
  margin-left: -256px;
  transform: translateY(-50%);
}
</style>

<script>
$(document).ready(function() {
  var containerTop = $('.floating-container').position().top;
  var scrollOffset = $('.scrollable').offset().top;
  $(window).scroll(function() {
    if ($('.scrollable').scrollTop() > (containerTop - scrollOffset)) {
      $('.floating-container').addClass('floating');
    } else {
      $('.floating-container').removeClass('floating');
    }
  });
});
</script>

示例2:滚动到页面底部时消失

改写一点点代码,实现滚动到页面底部时隐藏“浮动层”。

$(document).ready(function() {
  var containerTop = $('.floating-container').position().top;
  var scrollOffset = $('.scrollable').offset().top;
  $(window).scroll(function() {
    if ($('.scrollable').scrollTop() > (containerTop - scrollOffset)) {
      $('.floating-container').addClass('floating');
      if ($('.scrollable')[0].scrollHeight - $('.scrollable').scrollTop() - $('.scrollable').height() < 50) {
        $('.floating-container').addClass('fadeaway');
      } else {
        $('.floating-container').removeClass('fadeaway');
      }
    } else {
      $('.floating-container').removeClass('floating');
      $('.floating-container').removeClass('fadeaway');
    }
  });
});

当滚动到页面底部时,判断scrollHeightscrollTopheight是否符合要求(例如,差距小于50px),只有符合时才会隐藏浮动层。

<div class="scrollable" style="height: 500px; overflow: auto;">
  <h2>可以滚动的内容</h2>
  <p>这里是内容的开始...</p>
  <p>这里是内容的中间...</p>
  <p>这里是内容的结尾...</p>
</div>

<div class="floating-container" style="position: sticky; top: 50px;">
  <h3>我是一个浮动层</h3>
  <p>我一旦「起飞」,就会在您的页面中随意移动。</p>
</div>

<style>
.floating-container {
  background-color: #f8f8f8;
  border-radius: 16px;
  padding: 64px;
  left: 50%;
  margin-left: -256px;
  transition: all .3s ease-out;
  opacity: 1;
  /*display: block;*/
}
.floating {
  position: fixed;
  top: 50px;
  left: 50%;
  margin-left: -256px;
  transform: translateY(-50%);
}
.fadeaway {
  opacity: 0;
  /*display: none;*/
}
</style>

<script>
$(document).ready(function() {
  var containerTop = $('.floating-container').position().top;
  var scrollOffset = $('.scrollable').offset().top;
  $(window).scroll(function() {
    if ($('.scrollable').scrollTop() > (containerTop - scrollOffset)) {
      $('.floating-container').addClass('floating');
      if ($('.scrollable')[0].scrollHeight - $('.scrollable').scrollTop() - $('.scrollable').height() < 50) {
        $('.floating-container').addClass('fadeaway');
      } else {
        $('.floating-container').removeClass('fadeaway');
      }
    } else {
      $('.floating-container').removeClass('floating');
      $('.floating-container').removeClass('fadeaway');
    }
  });
});
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现div浮动层跟随页面滚动效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • CSS中:before和:after伪元素使用的奇技淫巧

    下面是CSS中:before和:after伪元素使用的奇技淫巧的完整攻略。 什么是:before和:after伪元素 在CSS中,有两个伪元素:before和:after。它们可以在一个元素之前或之后插入一些内容,而这些内容是由CSS来定义的。这些伪元素可以被用来实现很多有趣的效果,如图标、装饰性的线条、制作更好的复选框/单选框等等。 如何使用:before…

    css 2023年6月9日
    00
  • 5分钟教你学会超简单的html+css魔幻霓虹灯文字特效

    你好!关于“5分钟教你学会超简单的html+css魔幻霓虹灯文字特效”的攻略,下面给出详细的步骤说明。 一、所需基础知识 HTML基础语法 CSS基础语法 一些基础的CSS动画知识 二、步骤说明 1. 创建HTML文件 在任何文本编辑器中打开一个新文件,然后将以下代码复制到文件中。这是一个最基本的HTML骨架 <!DOCTYPE html> &l…

    css 2023年6月9日
    00
  • springboot中的css样式显示不出了的几种情况

    Spring Boot中CSS样式无法显示的几种情况攻略 在Spring Boot项目中,CSS文件负责控制网页样式,让网页更加美观。然而,有时候我们会发现CSS样式无法显示,导致网页效果很奇怪,这是因为以下几种情况: 1. 路径问题 当CSS文件没有被正确地加载时,可能是因为路径设置不正确。在Spring Boot项目中,我们一般将CSS文件放在src/m…

    css 2023年6月9日
    00
  • html、css基础注意点(前端必看篇)

    HTML 基础注意点 语法规范 HTML 语言是由标签组成的,标签种类繁多,但遵循统一的语法规范。HTML文档以<!DOCTYPE html>开头,及标签语法格式为: <标签名 属性名1="属性值1" 属性名2="属性值2"> 内容 </标签名> 其中标签名为该标签的名称,属性名及属…

    css 2023年6月9日
    00
  • 用jquery写的菜单从左往右滑动出现

    下面就为大家介绍一下使用jQuery实现从左往右滑动的菜单的完整攻略。 思路概述 首先,我们需要明确效果需求:当鼠标悬浮在导航菜单上时,菜单从左向右滑动出现;当鼠标离开导航菜单时,菜单又缓慢地向左收起。 基于这个需求,我们可以思考出以下实现思路: HTML 结构部分:使用 ul 和 li 标签进行导航菜单的构建; CSS 样式部分:为菜单元素设置合适的样式,…

    css 2023年6月10日
    00
  • 使用ElementUI修改el-tabs标签页组件样式

    使用ElementUI修改el-tabs标签页组件样式 ElementUI是一款基于Vue.js的UI框架,为Vue.js项目开发提供了一套完善的UI组件库。其中,el-tabs标签页组件是常用的组件之一,在使用中我们可能需要对其进行样式定制化,本文将介绍如何使用ElementUI修改el-tabs标签页组件样式。 步骤一:了解el-tabs标签页组件 在开…

    css 2023年6月9日
    00
  • 学习Bootstrap滚动监听 附调用方法

    学习Bootstrap滚动监听可以让网站更加优秀,因为它可以为网站添加动态效果。本文将介绍什么是Bootstrap滚动监听,如何使用Bootstrap实现滚动监听,并附有实际的调用方法。具体内容如下: 一. 什么是Bootstrap滚动监听 Bootstrap滚动监听是指可以监听用户滚动网页的操作,从而根据滚动位置来实现不同的效果。比如,可以设置当用户向下滚…

    css 2023年6月10日
    00
  • 用google 赶快来赚美金附图文使用教程

    用Google 赶快来赚美金附图文使用教程 简介 Google 是全球最受欢迎的搜索引擎之一,不少人可能不知道,通过一些技巧,我们可以利用 Google 来赚钱。本篇文章将会详细讲解如何通过 Google 快速赚美金。 步骤 1. 准备工作 首先,需要准备好一个 Google Adsense 账户,如果还没有注册,可以通过该链接进行注册:https://ww…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部