JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)

下面是详细的攻略:

JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)

1. 引入 jQuery 库

在 HTML 页面中引入 jQuery 库,可以通过以下代码实现:

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

2. 编写 HTML 模板

在需要实现停靠效果的搜索框上方或下方,添加一个占位的空 DIV 元素,例如:

<div id="placeholder"></div>

<div id="searchBox">
  <input type="text" name="search" placeholder="搜索...">
  <button>搜索</button>
</div>

3. 编写 CSS 样式

为了实现停靠效果,需要将搜索框设为 fixed 定位,并设置相应的样式,例如:

#searchBox {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  height: 50px;
  width: 400px;
  background-color: white;
  border: 1px solid grey;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 5px;
  box-sizing: border-box;
}

4. 编写 JavaScript 代码

首先,需要获取 placeholder 元素和搜索框元素,并计算它们之间的相对位置:

var placeholder = $('#placeholder');
var searchBox = $('#searchBox');
var distance = placeholder.offset().top - searchBox.outerHeight();

然后,在窗口进行滚动的时候,检查滚动的距离是否大于等于相对位置的值,如果是,则将搜索框设置为 fixed 定位,否则将其设置为 relative 定位。代码如下:

$(window).scroll(function () {
  if ($(this).scrollTop() >= distance) {
    searchBox.css({
      position: 'fixed',
      top: 0
    });
  } else {
    searchBox.css({
      position: 'relative',
      top: ''
    });
  }
});

5. 示例说明

示例一

如果搜索框和 placeholder 元素在同一个区块内,可以直接通过计算元素的相对位置实现停靠效果。例如:

<div class="container">
  <div id="searchBox">
    <input type="text" name="search" placeholder="搜索...">
    <button>搜索</button>
  </div>
  <div id="placeholder"></div>
</div>
.container {
  height: 1000px;
  background-color: yellow;
}
var placeholder = $('#placeholder');
var searchBox = $('#searchBox');
var distance = placeholder.offset().top - searchBox.outerHeight();

$(window).scroll(function () {
  if ($(this).scrollTop() >= distance) {
    searchBox.css({
      position: 'fixed',
      top: 0
    });
  } else {
    searchBox.css({
      position: 'relative',
      top: ''
    });
  }
});

示例二

如果搜索框和 placeholder 元素不在同一个区块内,可以通过动态计算元素的相对位置实现。例如:

<div class="container">
  <div id="placeholder"></div>
</div>
<div id="searchBox">
  <input type="text" name="search" placeholder="搜索...">
  <button>搜索</button>
</div>
.container {
  height: 1000px;
  background-color: yellow;
}
var placeholder = $('#placeholder');
var searchBox = $('#searchBox');
var distance = placeholder.offset().top - searchBox.outerHeight();

$(window).scroll(function () {
  var currentTop = placeholder.offset().top - searchBox.outerHeight();

  if ($(this).scrollTop() >= currentTop) {
    searchBox.css({
      position: 'fixed',
      top: 0
    });
  } else {
    searchBox.css({
      position: 'relative',
      top: ''
    });
  }
});

通过这两个示例,可以实现不同场景下的搜索框停靠效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠) - Python技术站

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

相关文章

  • 微信小程序实现自定义加载图标功能

    当用户打开微信小程序时,可能会需要等待一些时间才能正常使用,这时候就需要一个加载状态显示,方便用户知道正在加载中,不会误以为是小程序出了问题。本文就来详细介绍微信小程序实现自定义加载图标功能的完整攻略。 1. 自定义加载图标 微信小程序提供了默认的加载图标,但是我们也可以通过定义自己的加载图标来提供更好的用户体验。 一般加载图标都是使用 gif、svg、pn…

    css 2023年6月10日
    00
  • js实现背景图自适应窗口大小

    下面是“js实现背景图自适应窗口大小”的完整攻略: 1. 确定背景图的样式 在实现背景图自适应窗口大小的过程中,我们需要先给背景图指定一些样式。最常用的方法是将背景图作为页面的一部分,利用CSS中的background属性进行样式设置。 body { background: url("bg.jpg") no-repeat center c…

    css 2023年6月9日
    00
  • 比较全的CSS浏览器兼容问题整理总结

    CSS 浏览器兼容问题是前端开发中常见的问题之一。不同的浏览器对 CSS 的支持程度不同,可能会导致页面在不同的浏览器中显示效果不同。下面是一些常见的 CSS 浏览器兼容问题和解决方法的总结。 1. 盒模型 盒模型是 CSS 中的一个重要概念,它描述了元素在页面中的布局方式。不同的浏览器对盒模型的解释不同,可能会导致元素的尺寸和位置出现偏差。解决方法是使用 …

    css 2023年5月18日
    00
  • 整理了12款Javascript 表格控件(DataGrid)

    让我为您详细讲解一下“整理了12款JavaScript表格控件(DataGrid)”的攻略。 1. 前言 在网页应用开发过程中,表格展示是一个非常重要的功能。然而,原生的HTML表格功能有时会受到限制,这时候需要使用JavaScript表格控件来实现更加复杂和独特的表格展示效果。本文将介绍12款优秀的JavaScript表格控件,以及它们的应用场景、使用方法…

    css 2023年6月10日
    00
  • html pre标记里内容自动换行

    当在HTML页面中展示一些预格式的文本,如程序代码、诗歌、电子邮件等等,我们可以使用HTML中的预格式文本标签 <pre>。它的作用是保留文本中的空白符,包括空格、制表符和换行符。 默认情况下,HTML中的其他标签在显示文本时会忽略拥有的换行符和制表符,这意味着如果您在HTML页面中编写一段文本那么文本将连续显示在一起而没有断行。这种情况下,可以…

    css 2023年6月10日
    00
  • 怎么用纯CSS制作带小三角的tooltip提示框

    以下是关于“怎么用纯CSS制作带小三角的tooltip提示框”的完整攻略。 步骤一:HTML 结构 首先,需要在 HTML 文件中定义一个元素,用于触发 tooltip 提示框的显示。以下是示例: <div class="tooltip-trigger">Hover me</div> 上述代码中,<div&g…

    css 2023年5月18日
    00
  • jQuery操作CSS样式

    jQuery操作CSS样式攻略 在jQuery中,可以使用以下方法操作CSS样式: 1. .css()方法 .css()方法用于获取或设置一个或多个元素的CSS样式。可以传入一个或两个参数。 第一个参数是一个CSS属性的名称,如果想一次设置多个属性,可以传入一个有多个属性和值的JSON对象。第二个参数是一个可选的布尔值,表示是否使用动画过渡效果。 下面是示例…

    css 2023年6月10日
    00
  • 使用CSS3配合IE滤镜实现渐变和投影的效果

    使用CSS3来实现渐变和投影的效果相对于使用传统的背景图片或者JS实现更加高效、简洁。但是由于IE浏览器的兼容性问题,我们需要使用IE滤镜来实现这些特效。 以下是实现渐变效果的完整攻略: 首先,我们需要用CSS3属性来实现渐变效果。下面是一个简单的渐变代码示例: background: linear-gradient(to right, #987cb9, #…

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