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

让我来为您详细讲解“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日

相关文章

  • JavaSctit 利用FileReader和滤镜上传图片预览功能

    下面就为您详细讲解“JavaScript利用FileReader和滤镜上传图片预览功能”的完整攻略。 简介 在网站开发中,图片上传是一个非常重要的功能,但是大多数情况下,用户只有在上传完成后才能预览图片,这会为用户带来不便。所以,在本文中,我们将为您讲解如何使用JavaScript利用FileReader和滤镜实现上传图片的预览功能。 操作步骤 HTML代码…

    css 2023年6月11日
    00
  • jQuery基本选择器选择元素使用介绍

    jQuery基本选择器选择元素使用介绍 什么是jQuery选择器 jQuery选择器是一种用于查找HTML元素及操作其内容的标准功能。通过jQuery选择器,我们可以通过某种方式来选取HTML中的元素,从而进行操作。 常用的基本选择器 jQuery提供了多种基本选择器,以下是一些常用的: 元素选择器:通过元素名称来选取元素,例如$(“p”)表示选取所有&lt…

    css 2023年6月10日
    00
  • PHP模板引擎Smarty自定义变量调解器用法

    下面是关于PHP模板引擎Smarty自定义变量调解器用法的详细攻略。 什么是Smarty模板引擎? Smarty是一款开源的基于PHP的模板引擎,它允许开发者在PHP脚本内部定义并使用模板,从而将业务逻辑与视图分离。Smarty模板引擎使用标记语言,可以轻松的在模板中引用变量,实现数据与视图的分离。 什么是Smarty自定义变量调解器? Smarty的自定义…

    css 2023年6月9日
    00
  • CSS3绘制不规则图形的一些方法示例

    CSS3绘制不规则图形的一些方法示例 CSS3提供了许多方法来绘制不规则图形,如圆形、三角形、多边形等标准形状,以及更不规则的形状,如波浪线、星形、爱心等等。下面将介绍一些CSS3绘制不规则图形的方法,希望对大家有所帮助。 绘制三角形 要绘制三角形,可以使用CSS3的transform属性和border属性。代码如下: .triangle { width: …

    css 2023年6月10日
    00
  • vue监听页面中的某个div的滚动事件并判断滚动的位置

    讲解如下: 1. 使用Vue自带指令进行绑定滚动事件 Vue自带的指令v-on可以用来绑定DOM事件,包括滚动事件。下面是一个使用v-on绑定滚动事件的示例代码: <template> <div ref="scrollWrapper" v-on:scroll="scrollHandler"> &…

    css 2023年6月10日
    00
  • CSS使用伪类控制边框长度的方法

    请看以下完整攻略: 1. 简介 CSS中,通过伪类(pseudo-class)来控制边框长度是常用的制作特效方法之一。伪类是一种可以自定义样式中某个或几个状态的方式,比如在链接未被访问时,已被访问时和鼠标悬浮在上面时样式可以不同。CSS中常用的伪类包括:hover, :active, :visited, :first-child等等。通过运用伪类,我们可以很…

    css 2023年6月10日
    00
  • 移动端使用 rem 单位时 css sprites 定位问题的解决

    移动端使用 rem 单位时 css sprites 定位问题的解决,主要是在使用 CSS Sprites 图片中,使用 rem 单位来进行布局时,会产生定位的偏移问题。针对这个问题,我们可以采用如下方法: 1. 确定 sprite 图片的根字号大小 首先,需要确定整个 sprite 图片的根字号大小。推荐使用 16px 的字号大小作为整个 sprite 的根…

    css 2023年6月9日
    00
  • 常用的正则表达式实例整理

    针对“常用的正则表达式实例整理”,我会从以下几个方面来详细讲解: 什么是正则表达式? 常用的正则表达式实例整理 示例说明 如何测试正则表达式的匹配效果? 什么是正则表达式? 正则表达式是用于模式匹配的一个工具,它可以在文本中搜索指定的模式并进行各种操作。使用正则表达式可以快速检索文本,替换文本中的一些特定内容,或者验证表单的输入等等。 常用的正则表达式实例整…

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