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日

相关文章

  • PNG背景透明在网页设计中的运用

    PNG背景透明在网页设计中的运用 PNG是一种支持透明度(alpha)通道的图片格式,相比JPEG和GIF格式,PNG能够在保证图片质量的同时,呈现出更好的透明效果。在网页设计中,PNG背景透明可以被广泛应用在许多场景中,例如: 原图含背景色 当图片原图存在背景色的时候,使用PNG图片并让背景色透明可以更好地和页面背景融合,产生更为优美的视觉效果。具体实现方…

    css 2023年6月9日
    00
  • js前端日历控件(悬浮、拖拽、自由变形)

    JS前端日历控件是开发Web应用中常用的组件之一,让用户方便快捷地选择日期。本攻略将介绍如何使用JS实现一个带悬浮、拖拽、自由变形的日历控件,并提供两条示例说明。 第一步:创建HTML结构 为了实现悬浮、拖拽、自由变形的效果,我们需要使用HTML、CSS和JS来实现,并且需要在HTML中创建一个日期容器,最好用一个DIV包含我们的日历控件,方便样式控制。以下…

    css 2023年6月10日
    00
  • stricky footer的三种解决方案详解

    “sticky footer”的目标就是让footer永远处于页面底部,无论页面的内容高度是多少。下面介绍三种实现“sticky footer”的方法。 方法一:使用flex布局 flex布局可以很容易地实现sticky footer。步骤如下: 在html里添加如下代码: <body> <div class="wrapper&q…

    css 2023年6月10日
    00
  • 处理textarea中的换行和空格

    处理 textarea 中的换行和空格,是前端开发中比较常见的需求之一。通常的场景是需要保存用户在 textarea 中输入的文本,但是默认情况下,这些文本会带有一些换行和空格符号,需要进行去除或者转换。 1. 去除换行和空格 1.1 去除所有空格 如果需要去除 textarea 中的所有空格,可以使用 JavaScript 中的 replace() 方法配…

    css 2023年6月10日
    00
  • 利用CSS3实现文本框的清除按钮相关的一些效果

    下面我将为你详细讲解“利用CSS3实现文本框的清除按钮相关的一些效果”的完整攻略。 1. 实现过程 实现文本框的清除按钮效果可以通过CSS3的伪元素和样式组合来实现。首先需要在文本框中添加一个用于清除文本的按钮,然后添加一些CSS3样式以实现有关的效果。 1.1 添加清除按钮 在HTML代码中,需要在文本框后面添加一个按钮,这个按钮用于清除文本框中的内容。代…

    css 2023年6月10日
    00
  • vue3过渡动画的详解

    Vue3过渡动画的详解 在 Vue3 中,过渡动画的实现更加简单易用,本文将从以下几个方面介绍Vue3的过渡动画: 过渡类名 过渡模式 自定义过渡函数 示例程序 过渡类名 在 Vue3 中,过渡类名的命名规则和 Vue2 一样。当元素被插入、更新或删除时,你可以在元素上添加不同的 class 名称来指定不同的状态。 Vue3 中的过渡类名和 Vue2 中的类…

    css 2023年6月10日
    00
  • CSS实现九宫格布局(自适应)的示例代码

    CSS实现九宫格布局(自适应)是一种常见的网页布局方式,下面是完整的攻略。 什么是九宫格布局? 九宫格是一种网页布局方式,将元素分为3×3的九宫格形状,每个格子中放置一个元素。九宫格布局常用于展示网站的产品、服务、图片等内容。 CSS实现九宫格布局的步骤 第一步:HTML结构 首先需要设置HTML结构,要求将元素按照3×3的九宫格形状排列。 <div …

    css 2023年6月11日
    00
  • CSS 常用中文字体 Unicode 编码表

    以下是详细讲解 “CSS 常用中文字体 Unicode 编码表”的完整攻略: 什么是 Unicode 编码 Unicode是一个字符集,规定了每个字符对应的唯一编号,它包含了全世界所有的字符,不仅仅包括了中西文字符,还包括了各种符号、形状以及图形等各种元素。 Unicode 主要是通过四个十六进制数来表示每个字符,例如汉字“好”的 Unicode 编码是U+…

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