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

yizhihongxing

下面是详细的攻略:

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日

相关文章

  • Vue运用transition实现过渡动画

    下面是“Vue运用transition实现过渡动画”的完整攻略。 一、transition基本概念 在Vue中使用<transition>组件可以优雅地实现过渡动画效果。<transition>组件是Vue内置的过渡动画组件。它可以在元素显示、隐藏、插入和删除时,根据设置的动画属性进行动画过渡。 <transition>组…

    css 2023年6月10日
    00
  • 进一步理解CSS编程中的块级元素和行内元素

    下面是针对“进一步理解CSS编程中的块级元素和行内元素”的完整攻略。 什么是块级元素和行内元素 在 HTML 中,文本和其他元素被定义为块级元素或行内元素。块级元素以新行开始,可以容纳其他块级元素和行内元素,而行内元素则不能容纳块级元素,一般只能容纳文本或其他行内元素。它们的差异主要在于渲染后的表现形式和默认属性。 块级元素 常见的块级元素有<div&…

    css 2023年6月10日
    00
  • jQuery实现适用于移动端的跑马灯抽奖特效示例

    下面是详细的jQuery实现适用于移动端的跑马灯抽奖特效的攻略: 1. 准备工作 在实现跑马灯抽奖特效之前,我们需要先准备一些基本的素材,包括CSS样式表和HTML结构。在CSS样式表中,我们一般需要定义一些基本的样式,例如设置背景颜色、边框样式等等。在HTML结构中,我们需要定义一个容器元素和一个跑马灯元素。 示例代码: <!DOCTYPE html…

    css 2023年6月9日
    00
  • vue.js从安装到搭建过程详解

    Vue.js 是一款流行的 JavaScript 框架,它可以帮助开发者构建高效、灵活和易于维护的 Web 应用程序。本文将提供一些关于 Vue.js 从安装到搭建过程的详解,包括安装 Vue.js 和创建 Vue.js 应用程序的示例说明。 安装 Vue.js 安装 Vue.js 可以通过以下两种方式: 通过 CDN 引入 可以通过 CDN 引入 Vue.…

    css 2023年5月18日
    00
  • 基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果

    接下来我将详细讲解几种基于jQuery实现菜单效果的攻略,包括手风琴菜单、层级菜单、置顶菜单和无缝滚动效果。 手风琴菜单 手风琴菜单是一种常用的网站导航菜单,它的特点是只展开一个菜单,其他菜单在收起的状态。下面是一条jQuery代码实现手风琴菜单的示例: $(‘.accordion-header’).click(function () { $(this).t…

    css 2023年6月11日
    00
  • CSS教程(2):通过实例学习CSS背景

    下面是详细的攻略: CSS教程(2):通过实例学习CSS背景 1. 学习CSS背景概述 CSS的背景属性是页面设计中非常重要的一部分,我们可以通过CSS来改变元素的背景颜色、背景图片、背景位置以及背景的重复方式等。在学习CSS背景时,我们需要掌握的核心概念有以下四点: background-color:元素背景的颜色 background-image:元素背…

    css 2023年6月9日
    00
  • CSS中对RGB颜色的使用详解

    CSS中对RGB颜色的使用详解 1. RGB颜色表示法 RGB颜色表示法是在CSS中最常用的颜色表示法之一。RGB指的是红、绿、蓝三原色,通过调整这三种颜色的数值来表示不同的颜色,主要用于表示彩色图片、网页背景色、字体颜色等。 1.1 RGB颜色值的语法 RGB颜色值由三个数字组成,分别代表红、绿、蓝三种颜色的亮度值,取值范围为0-255。RGB颜色值的语法…

    css 2023年6月9日
    00
  • bootstrap-table实现表头固定以及列固定的方法示例

    要实现bootstrap-table表头固定和列固定,主要需要以下几个步骤: 一、引入jQuery库和bootstrap-table插件库。 在文档的head中引入jQuery库和bootstrap-table插件库,如下: <head> <script src="https://cdn.bootcss.com/jquery/3.…

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