jquery 置顶菜单

2024-08-21 04:32

本文主要是介绍jquery 置顶菜单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求

13423234-d9cf1265152735be.png

初始状态如上图,当拖动右侧的滚动条,菜单置顶的时候需要固定位置,如下:

13423234-78b47264711626c5.png

注意:当Banner图片完全上移出了浏览器可视区域,此时菜单固定定位在文档的最上方。

首先编写基本HTML以及CSS

13423234-89661c2d7799b5e1.png

编写jquery实现menu置顶效果

13423234-a107833feb4f6eba.png

设置当$(document).scrollTop() > 100的时候,也即是banner离开可视区域的时候,修改menu的样式为固定定位,并且设置topleft的距离。

此时有一个问题,就是滚动条往上拖的时候,无法恢复看到banner,一直被menu覆盖着。

对于这个问题,只需要设置当$(document).scrollTop() <= 100 或者 if 判断中的 else分支,恢复position为定位的默认值即可。

那么问题来了!!position的默认值是什么呢?答案就是static
更加关于position的详细内容可以查看CSS 定位布局 - 相对、绝对、固定三种定位。

编写menu当滚动条往上拖动的时候,恢复原来的定位,可以展示出banner

13423234-5ce1d1ba6c948b7e.png

当设置postion:static的时候,定位的方式就会恢复文档流中的布局。其中topleft就会失效。

问题2:menu设置固定定位的时候,因为脱离了文档流布局,p段落直接飘到上方。

另一个问题,当menu置顶的时候,p段落的内容直接就被遮挡了,如下:

13423234-425c89d164bbd324.png

设置透明度为0.5之后,就可以看到第一个p段落在menu的下方。

这种肯定不合理,那么怎么去解决呢?

设置一个menu的背景div,当menu固定定位的时候,设置这个背景div撑住文档流的位置,这样就可以规避这个问题了。

增加一个背景div

13423234-8637c37116fae5d5.png

设置当menu固定的时候,同时设置menu_bak显示出来

13423234-7a12f2d86402412e.png

可以看到,由于menu_bak撑住,所以p段落没有一下子上移上去了。

基本上执行菜单的问题就差不多是这样了。

完整代码如下:

<!DOCTYPE html>
<html>
<head><title></title><script type="text/javascript" src="jquery/jquery-3.3.1.min.js"></script><script type="text/javascript">$(function(){var $menu = $('.menu');var $menu_bak = $('.menu_bak');$(window).scroll(function(){console.log("document.scrollTop = " + $(document).scrollTop());if( $(document).scrollTop() > 100 ){// alert("scrollTop > 100");$menu.css({"position":'fixed',"top":0,"left":0});$menu_bak.show();}else{$menu.css({"position":'static',});$menu_bak.hide();}});});</script><style type="text/css">*{padding: 0;margin: 0;}p{color: red;text-align: center;}.banner{width: 100%;height: 100px;background-color: rgb(184,233,189);line-height: 100px;text-align: center;}.menu{width: 100%;height: 100px;background-color: rgb(236,237,176);line-height: 100px;text-align: center;opacity: 0.5;}.menu_bak{width: 100%;height: 100px;display: none;}</style>
</head>
<body><div class="banner">Banner</div><div class="menu">menu</div><div class="menu_bak"></div><!-- (p{这是文档内容}+br*10)*10 --><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br><p>这是文档内容</p><br><br><br><br><br><br><br><br><br><br>
</body>
</html>
13423234-0e3934319aa622f6.png

这篇关于jquery 置顶菜单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Vue中插槽slot的使用示例详解

《Vue中插槽slot的使用示例详解》:本文主要介绍Vue中插槽slot的使用示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、插槽是什么二、插槽分类2.1 匿名插槽2.2 具名插槽2.3 作用域插槽三、插槽的基本使用3.1 匿名插槽

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f