jQuery网页开发案例:jQuery常用API--jQuery 尺寸、位置操作及 电梯导航案例和节流阀(互斥锁)

news2024/12/19 18:52:46

jQuery 尺寸

以上参数为空,则是获取相应 值,返回的是数字型。
如果参数为数字,则是修改相应值
参数 可以不必写单位。

这个width方法不包含边框

 innerWidth()包含width+padding   注意这个要大写

 outerWidth()包含width + padding + border

outerWidth(true)包含width + padding + border+magin

 jQuery 位置

位置主要有三个: offset()position()scrollTop()/scrollLeft()

1. offset() 设置或获取元素偏移

offset() 方法设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系

方法有2个属性 lefttop offset().top  用于获取距离文档顶部的距离,offset().left 用于获取距离文档左侧的距离。

可以设置元素的偏移:offset({ top: 10, left: 30 });

2. position() 获取元素偏移

position() 方法用于返回被选元素相对于带有定位的父级偏移坐标,如果父级都没有定位,则以文档为

该方法有2属性 lefttopposition().top 用于获取距离定位父级顶部的距离,position().left 用于获取距离定位父级左侧的距离。

该方法只能获取。

 scrollTop()/scrollLeft() 设置或获取元素被卷去的头部和左侧

scrollTop() 方法设置或返回被选元素卷去的头部

跟参数是获取,参数为不带单位的数字则是设置被卷去的头部

获取被卷起的头部距离 

案例:带有动画的返回顶部

核心原理: 使用animate动画返回顶部。

animate动画函数里面有个scrollTop 属性,可以设置位置

但是是元素做动画,因此 $(“body,html”).animate({scrollTop: 0})

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body {
            height: 2000px;
        }
        
        .back {
            position: fixed;
            width: 50px;
            height: 50px;
            background-color: pink;
            right: 30px;
            bottom: 100px;
            display: none;
        }
        
        .container {
            width: 900px;
            height: 500px;
            background-color: skyblue;
            margin: 400px auto;
        }
    </style>
    <script src="jquery.min.js"></script>
</head>

<body>
    <div class="back">返回顶部</div>
    <div class="container">
    </div>
    <script>
        $(function() {
			$(document).scrollTop(100);
			var boxTop=$(".container").offset().top;
            $(window).scroll(function(){
				// console.log($(document).scrollTop());
				if($(document).scrollTop()>=boxTop){
					$(".back").fadeIn();
				}else{
					$(".back").fadeOut();
				}
			})
			// 返回顶部
			$(".back").click(function(){
				$("body,html").stop().animate({
					scrollTop:0
				})
			})
			// $(".back").click(function(){
				// $("body,html").stop().animate({
					// scrollTop:0
				// })  不能是文档而是body html元素做动画
			// })
        })  
    </script>
</body>

</html>

 案例: 品优购电梯导航

我们滚动到 今日推荐 模块,就让电梯导航显示出来

点击电梯导航页面可以滚动到相应内容区域

核心算法:因为电梯导航模块和内容区模块一一对应的

当我们点击电梯导航某个小模块,就可以拿到当前小模块的索引号

可以把animate要移动的距离求出来:当前索引号内容区模块它的offset().top

然后执行动画即可

$(function(){
	// 显示隐藏电梯导航
	var toolTop=$(".recommend").offset().top;
	$(window).scroll(function(){
		if($(document).scrollTop()>=toolTop){
			$(".fixedtool").show()
		}else{
			$(".fixedtool").hide()
		}
	})
	// 2.点击电梯导航页面就可以滚动到响应内容区域
	$(".fixedtool li").click(function(){
		// 当我们点击小li就要计算前往的位置
		// 选出对应索引号的内容区的盒子 计算它的。offset().top值
		var current=$(".floor .w").eq($(this).index()).offset().top;
		// 页面动画滚动效果
		$("body,html").stop().animate({
			scrollTop:current
		})
	})
})

现在存在bug,当页面刷新他就会消失

$(function(){
	// 显示隐藏电梯导航
	var toolTop=$(".recommend").offset().top;
	toggleTool();
	function toggleTool(){
		if($(document).scrollTop()>=toolTop){
			$(".fixedtool").show()
		}else{
			$(".fixedtool").hide()
		}
	}
	$(window).scroll(function(){
		toggleTool();
	})
	// 2.点击电梯导航页面就可以滚动到响应内容区域
	$(".fixedtool li").click(function(){
		// 当我们点击小li就要计算前往的位置
		// 选出对应索引号的内容区的盒子 计算它的。offset().top值
		var current=$(".floor .w").eq($(this).index()).offset().top;
		// 页面动画滚动效果
		$("body,html").stop().animate({
			scrollTop:current
		})
		// 点击之后,让当前小li添加current类名,姐妹移除current类名
		$(this).addClass("current").siblings().removeClass("current")
	})
})

现在实现效果,封装到函数,页面刷新调用一次,点击之后调用一次,并同时让当前小li添加current类名,姐妹移除current类名

添加动画

当我们点击电梯导航某个小li, 当前小li 添加current类,兄弟移除类名

我们页面滚动到内容区域某个模块, 左侧电梯导航,相对应的小li模块,也会添加current类, 兄弟移除current类。

触发的事件是页面滚动,因此这个功能要写到页面滚动事件里面。

需要用到each,遍历内容区域大模块。 each里面能拿到内容区域每一个模块元素和索引

判断的条件:  被卷去的头部 大于等于 内容区域里面每个模块的offset().top

就利用这个索引号找到相应的电梯导航小li添加类。

$(window).scroll(function(){
		toggleTool();
		// 3.当我们页面滚动到内容区域某个模块, 左侧电梯导航,相对应的小li模块,也会添加current类, 兄弟移除current类。
		$(".floor .w").each(function(i,ele){
			if($(document).scrollTop()>=$(ele).offset().top){
				$(".fixedtool li").eq(i).addClass("current").siblings().removeClass("current")
			}
		})
	})

 电梯导航案例节流阀(互斥锁)

正如上图,我们滑动没有问题,但是当点击时,它会每次都重新的滑动

完整代码

$(function(){
	// 当我们点击了小li此时不需要执行 页面滚动事件里面的li的背景选择 添加current
	var flag=true;
	// 显示隐藏电梯导航
	var toolTop=$(".recommend").offset().top;
	toggleTool();
	function toggleTool(){
		if($(document).scrollTop()>=toolTop){
			$(".fixedtool").show()
		}else{
			$(".fixedtool").hide()
		}
	}
	$(window).scroll(function(){
		toggleTool();
		// 3.当我们页面滚动到内容区域某个模块, 左侧电梯导航,相对应的小li模块,也会添加current类, 兄弟移除current类。
		if(flag){
		$(".floor .w").each(function(i,ele){
			if($(document).scrollTop()>=$(ele).offset().top){
				$(".fixedtool li").eq(i).addClass("current").siblings().removeClass("current")
			}
		})
		}
	})
	
	// 2.点击电梯导航页面就可以滚动到响应内容区域
	$(".fixedtool li").click(function(){
		flag=false;	
		// 当我们点击小li就要计算前往的位置
		// 选出对应索引号的内容区的盒子 计算它的。offset().top值
		var current=$(".floor .w").eq($(this).index()).offset().top;
		// 页面动画滚动效果
		$("body,html").stop().animate({
			scrollTop:current
		},function(){
			flag=true
		})
		// 点击之后,让当前小li添加current类名,姐妹移除current类名
		$(this).addClass("current").siblings().removeClass("current")
	})
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(JavaSE) 数组

文章目录1. 数组的作用2. 数组的创建及初始化2.1 数组的创建2.2 数组的初始化3. 数组的使用3.1 数组中元素的访问3.2 遍历数组方法4. 数组是引用类型4.1 JVM中的内存有那些4.2 数组如何开辟空间4.3 数组 null 的意思4.4 引用不能同时指向多个对象4.5 数组作为方法返回值5. 二维…

【一键生成】3DMAX配景楼生成插件使用教程

3DMAX室外设计师常常需要创建各种场景配楼&#xff0c;为了解决大场景制作难的情况&#xff0c;3dMax配景楼生成插件是一款傻瓜式的插件或许更能快速让你从繁重的体力劳动中解脱出来&#xff01; 【安装方法】 方法一&#xff1a;拖动插件文件到3dMax窗口。 方法二&#xff1a;…

MySQL 主要线程

文章目录MySQL 主要线程1. Master thread2. io thread3. purge thread4. page Cleaner ThreadMySQL 主要线程 1. Master thread Master thread有四大循环&#xff0c;分别是loop,background loop&#xff0c;suspend loop&#xff0c;flush loop。且四大循环的作用如下: loop…

第二篇 基于自然语言处理的漏洞检测方法综述

杨伊等 来源&#xff1a;计算机研究与发展 目录 1 相关技术 1.1 自然语言处理 1.2 漏洞检测与分析 据2021年CVE漏洞趋势安全报告&#xff0c;当前漏洞类型占比最大的5类漏洞分别是代码执行、拒绝服务、溢出、跨站脚本以及信息获取。基于自然语言处理技术实现漏洞检测的研究…

STM32F103实现激光测距传感器测距WT-VL53L0 L1

目录 本博客将采用标准库和HAL库实现 所用设备选择 引脚说明 与单片机的接线表 标准库实现 HAL库实现 本博客将采用标准库和HAL库实现 所用设备选择 单片机型号&#xff1a;STM32F103C8T6 激光测距传感器型号&#xff1a;WT-VL53L0 L1 采用串口TTL电平输出&#xff0c;可…

CSDN云IDE初次测评体验

CSDN云IDE初次测评体验 文章目录CSDN云IDE初次测评体验一、前言二、云IDE产品介绍三、云IDE使用教程1、尝试编写Python爬虫代码2、尝试编写Python可视化代码3、尝试连接MySQL数据库四、最后我想说一、前言 最近一直有收到CSDN官方私信参加这个测评云IDE活动&#xff0c;刚好这…

YOLOv5剪枝 | 模型剪枝理论篇 | 1/2

文章目录 1. 前言2. 摘要精读3. 背景4. 本文提出的解决方式5. 通道层次稀疏性的优势6. 挑战7. 缩放因素和稀疏性惩罚8. 利用BN图层中的缩放因子9. 通道剪枝和微调10. 多通道方案11. 处理跨层连接和预激活结构12. 实验结果12.1 CIFAR-10数据集剪枝效果12.2 CIFAR-100数据集剪枝效…

Kafka图形管理界面Kafka-eagle安装配置详解

Kafka Eagle是一款结合了目前大数据Kafka监控工具的特点&#xff0c;重新研发的一块开源免费的Kafka集群优秀的监控工具。它可以非常方便的监控生产环境中的offset、lag变化、partition分布、owner等。 官方网址&#xff1a;EFAK 点击下载&#xff0c;将安装包下载到电脑本地&…

pytoch安装

1、安装 Anaconda 2、检查显卡&#xff0c;驱动&#xff08;检查是否较新&#xff09; winR——cmd&#xff0c;进入命令行&#xff0c;输入&#xff1a; nvidia-smi 如果版本不够&#xff0c;去官网下载Release Notes :: CUDA Toolkit Documentation (nvidia.com) 3、创建P…

【飞桨PaddleSpeech语音技术课程】— 语音识别-流式服务-模型部分

(以下内容搬运自飞桨PaddleSpeech语音技术课程&#xff0c;点击链接可直接运行源码) 流式语音识别模型 Deepspeech2 与 Conformer 1. 前言 1.1 背景知识 语音识别(Automatic Speech Recognition, ASR) 是一项从一段音频中提取出语言文字内容的任务。 (出处&#xff1a;DLHL…

开源监控软件Zabbix5部署实战

系列文章目录 文章目录系列文章目录一、zabbix介绍一、zabbix部署1、zabbix环境2、安装zabbix的安装包安装zabbix_server安装被监控方 web001一、zabbix介绍 百度百科&#xff1a;Zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。它是一…

2022-10-27 工作记录--Swiper/React-解决swiper处理动态数据出现样式紊乱、抖动问题

Swiper/React-解决swiper处理动态数据出现样式紊乱、抖动问题 First of all&#xff0c;检查自己在push数据前是否先清空了数组&#xff1a; 若已清空&#xff0c;请直接往下看&#x1f441;&#x1f441;哦&#xff1b;若未清空&#xff0c;请先清空数组&#xff08;可查看我的…

机器学习笔记:支持向量机SVM

1 一些概念 1.1 线性可分 在二维空间上&#xff0c;两类点被一条直线完全分开叫做线性可分。严谨的说法是&#xff1a; D0和 D1 是 n 维欧氏空间中的两个点集。如果存在 n 维向量 w 和实数 b&#xff0c;使得所有属于 D0 的点 xi 都有 wxib>0 &#xff0c;而对于所有属于 …

【面试题】 ES6知识点详细解析

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 &#x1f354;let const 其他知识点补充 块级作用域的补充 const 不可以在循环体里面声明变量给大家推荐一个实用面试…

从零备战蓝桥杯——动态规划(背包dp篇)

双非刷leetcode备战2023年蓝桥杯&#xff0c;qwq加油吧&#xff0c;无论结果如何总会有收获&#xff01;一起加油,我是跟着英雄哥的那个思维导图刷leetcode的&#xff0c;大家也可以看看所有涉及到的题目用leetcode搜索就可以哦&#xff0c;因为避让添加外链&#xff0c;一起加…

【JavaWeb】之Tomcat介绍、安装与使用

【JavaWeb】Tomcat前言一、Tomcat简介1.什么是Tomcat2.其他常用Web服务器二、Tomcat安装1.下载Tomcat2.配置环境变量三、Tomcat使用1.启动与关闭Tomcat2.修改Tomcat的端口号和主机名称3.使用IDEA搭建Web开发环境4.在Tomcat中部署web项目四、Web项目目录结构五、网站访问流程后记…

【Linux】yum vim 基础工具的使用

文章目录1. Linux环境下的软件包管理器---- yum1.2 什么是软件包1.3 yum源镜像配置1.4 yum查看软件包1.5 yum 如何安装软件1.6 yum 如何卸载软件2. Linux编辑器--vim2.1 vim 简介2.2 . vim的基本操作2.3 vim命令模式下的命令集2.3.1 光标移动2.3.2 编辑2.4 vim末行模式下的命令…

Python入门自学进阶-Web框架——24、DjangoAdmin项目应用-定制页面2

这里要实现点击对应的表名称&#xff0c;显示具体表的详细内容&#xff0c;大致的流程是&#xff1a; 前端显示各个表名&#xff0c;如下&#xff1a; <tbody>{% for table_name,admin in app_tables.items %}<tr class"border-bottom"><td style&…

彻底理解Java并发:volatile关键字

本篇内容包括&#xff1a;volatile 关键字简介、volatile 保证可见性&#xff08;包括&#xff1a;关乎不可见性问题描述、JMM内存模型和不可见性的解决方案&#xff09;以及 volatile 其他特性&#xff08;包括&#xff1a;volatile 不保证原子性、volatile 原子性的保证操作、…

mysql-高级命令(1)和一些函数(悟已往之不谏,知来者之可追)

一、高级命令 1.查询某个字段和多个字段 select 某个字段&#xff08;或者多个字段&#xff0c;中间以逗号间隔&#xff09;from 表名&#xff1b; 2. 去除字段的重复值 3.and 表示&#xff08;两个条件都需要满足&#xff09; 4.or &#xff08;两个条件满足一点&#xff09;…