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日

相关文章

  • JavaScript实现表单验证

    JavaScript实现表单验证是网站开发中非常常见的任务之一,它可以确保用户输入的信息符合预期,提高网站的可靠性和稳定性。下面将详细介绍该任务的完整攻略: 1. 确定需要验证的表单元素 在进行表单验证之前,我们需要明确需要验证的表单元素。一般来说,输入框、文本框、下拉框等表单元素都需要进行验证。在明确需要验证的表单元素之后,我们可以给它们添加合适的ID和c…

    css 2023年6月10日
    00
  • js鼠标移动时禁止选中文字

    要在JS中实现当鼠标移动到元素上时禁止选中文字,我们可以通过设置CSS属性user-select来实现。该属性控制用户是否可以选中文本。当设置为none时,用户无法选中文本。 以下是完整的实现步骤。 1. 定义CSS样式 我们需要定义CSS样式来禁止用户选择文本。在元素的样式中,我们将user-select属性设置为none。以下是一个示例: .nosele…

    css 2023年6月10日
    00
  • 详解IE浏览器的haslayout属性及相关兼容性问题解决

    详解IE浏览器的hasLayout属性及相关兼容性问题解决 什么是hasLayout属性 在IE浏览器中,每个元素都有一个布局属性叫做“hasLayout”。这个属性不仅会影响元素的渲染方式,还可能引起各种布局问题。 该属性的主要作用是决定元素如何进行布局,比如浮动、定位、对齐等样式的渲染。具有“hasLayout”属性的元素会形成一个完整的渲染块(也被称为…

    css 2023年6月10日
    00
  • BootStrap 图片样式、辅助类样式和CSS组件的实例详解

    BootStrap 图片样式、辅助类样式和CSS组件的实例详解 1. 图片样式 使用 BootStrap 的图片样式,你可以轻松地将图片与其他内容上下文相结合,如文字。常用的图片样式包括: 1.1 图片形状样式 BootStrap 提供了多种图片形状样式,你可以通过添加类来实现,例如: rounded: 将图片圆角化。 circle: 将图片变为圆形。 th…

    css 2023年6月9日
    00
  • CSS网页设计:百分比进行背景图片定位

    当我们制作网页时,经常需要用到背景图片,但是如何精确定位背景图片却是一件比较棘手的问题。这时候,我们可以使用CSS百分比进行背景图片定位。以下是进行背景图片定位的详细攻略。 1. 设置背景图片 首先,在CSS中设置背景图片,代码如下: body { background-image: url(background.jpg); background-repea…

    css 2023年6月9日
    00
  • 值得收藏的25款免费响应式网页模板

    下面是详细讲解“值得收藏的25款免费响应式网页模板”的完整攻略: 1. 概述 本攻略主要介绍25款值得收藏的免费响应式网页模板,适用于不同类型的网站,包括企业、个人博客、电商等。模板具有响应式设计和漂亮的界面,可以帮助你快速搭建一个现代化的网站。 本攻略的模板均来源于互联网上已公开发布的资源,未经过测试,作者不对模板的质量和安全性作任何保证。使用前请务必仔细…

    css 2023年6月11日
    00
  • jQuery选择器之基本选择器用法实例分析

    jQuery选择器之基本选择器用法实例分析 什么是jQuery选择器? jQuery选择器是用于选择和操作HTML文档中的元素的一种jQuery方法,可以通过id、class、标签名等多种方式来获取元素,从而实现对页面元素的操作。 基本选择器有哪些? jQuery提供了丰富的选择器,许多常用的选择器都是基于CSS选择器进行扩展实现的。基本选择器包括: 定位元…

    css 2023年6月9日
    00
  • jQuery原理系列-常用Dom操作详解

    jQuery原理系列-常用Dom操作详解 1. jQuery是什么 jQuery是一种JavaScript库,它使编写JavaScript变得更容易。jQuery使在HTML文档中处理文档元素,处理事件以及应用Ajax技术变得更加容易。 2. jQuery的基础(语法与选择器) jQuery的基础语法: $(selector).action() $表示对jq…

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