Js如何实现当网页超过一屏时导航菜单始终置顶-吸顶盒效果

news2024/11/15 12:23:19

前言

我们平时在逛一些电商网站时,无论是首页还是详情页,通常会有一个导航菜单石红跟随着页面,无论是页面滚动到中间还是底部

这是为了方便用户查看商品的各类信息或提交订单购物

也就是吸顶盒效果,那这个效果是怎么实现的?

原生Js

fc46c55b21c26bbca9ad29b20b5b1789.gif

如下是原生js

// 初始化函数
function init() {
    // 获取顶部元素的DOM
    var wrap = document.getElementById("wrap");
    var scrollTop = 0;  // 初始化为顶部
    // 监听页面滚动事件
    window.onscroll = function() {
        // 获取当前的滚动距离
        scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
        // 当超过150像素时,把顶部的导航菜单设置固定
        if(scrollTop > 150) {
            wrap.className = "fix-top";  // 固定顶部的样式
        }else {
            wrap.className = 'wrap';  // 恢复原有的样式
        }
    }
}

如下是css样式

* {
    margin:0;
    padding:0;
}

.wrap {
    width: 100%;
}
.hd {
    width: 980px;
    height: 150px;
    margin: 0 auto;
    background: red;
}

.bd {
    width:980px;
    height: 40px;
    margin: 0 auto;
    background: blue;
}

.fix-top {
    position:fixed;
    width: 100%;
}

.fix-top .hd {
    display:none;
}

如下是html代码

<body style="height:1000px">
    <div id="wrap" class="wrap">
     <div class="hd"></div>
     <div class="bd"></div>
    </div>
</body>

总结

要想实现一个层始终固定在屏幕的顶部或底部,就不得不使用css的positon样式,其次,在来控制网页是不是需要把导航菜单置顶,因为当网页内容的浏览没有滑出导航菜单的可见范围时,是没有必要把导航菜单置顶的,因此,在代码中就需要监听网页的滚动跳滑动事件

当超过一定的范围以后,才有必要为导航菜单设置固定的position样式

其实也有另外一种解决办法,就是导航栏始终是固定在顶部,当拉动滚动条时到一定的范围,就改变背景色,也是一种解决办法

a4545163bd7aa57d2e93b65a6b777a30.jpeg

VueJs中如何使用Teleport组件

2023-01-22

d4895b98038c79a4fc7dde0b4f4accf2.jpeg

VueJs中如何使用provide与inject

2023-01-21

0f954452bd532d5dd503c6e3b1276b09.jpeg

VueJs中customRef函数的使用

2023-01-20

27617bf1381da0d061ecae34797b6dee.jpeg

vueJs中toRaw与markRaw函数的使用比较

2023-01-19

141a22495f501ee3f60ac8179a06831f.jpeg

vueJs中readonly与shallowReadonly函数的使用比较

2023-01-18

abc2a777ff8ac789695eba430e944c77.jpeg
点击左下角查看更多

edb15826a54389341422f06c5efa7d40.gif

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

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

相关文章

[Pytorch] CIFAR-10数据集的训练和模型优化

本篇文章借鉴了我的朋友Jc的报告&#xff0c;他是一个十分优秀的人。 本篇文章记录了第一次完整训练优化的过程 0 关于数据集 在CIFAR-10 dataset的介绍中&#xff0c;cifar-10数据集一共10类图片&#xff0c;每一类有6000张图片&#xff0c;加起来就是60000张图片&#xff0…

深度卷积对抗神经网络 基础 第五部分 Inception-v3 architecture GANs

深度卷积对抗神经网络 基础 第五部分 Inception-v3 architecture GANs 对抗神经网络能够产生不存在的图片&#xff0c;换脸或者生成一些艺术品&#xff0c;这些有趣和强大的对抗神经网络的能力不仅能够创造价值&#xff0c;还能够用来犯罪。With Great Power , Comes With Res…

3.1.1 类和对象

文章目录1.类2.对象3.类和对象的关系4.类的创建使用5.对象在内存中的存储过程6.对象创建过程分析1.类 java最基本的单位就是类&#xff0c;可以理解为类型类是一类事物的抽象可以理解为模板或者设计图纸 注意:类在现实世界并不存在,它只是一种对象的数据类型。例如乌鸦&#…

如何使用DevExpress WPF组件实现异步加载TreeList节点?建议收藏

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。在本文中&#xff0c;我…

PADS Layout封装创建时批量放置焊盘的方法

批量放置焊盘一般是在BGA封装的是用的比较多&#xff0c;当然对于一些普通贴片焊盘也是挺常用的。 1、第一步&#xff1a;打开PCB封装编辑器&#xff0c;进入到封装编辑界面&#xff0c;放置焊盘后&#xff0c;点击焊盘右键“分步与重复”既可。2、第二步&#xff1a;点击以后弹…

常见的锁策略和synchronized的锁机制

文章目录一. 常见的锁策略1. 乐观锁和悲观锁2. 轻量级锁和重量级锁3. 自旋锁和挂起等待锁4. 普通互斥锁和读写锁5. 公平锁和非公平锁6. 可重入锁和不可重入锁二. synchronized的锁机制1. 锁升级/锁膨胀2. 锁消除3. 锁粗化一. 常见的锁策略 1. 乐观锁和悲观锁 乐观锁和悲观锁主…

C++ | 数据结构与算法 | 最小生成树算法讲解 | Kruskal Prim

文章目录前言Kruskal算法Prim算法前言 讲解之前&#xff0c;我们需要先明白连通图是指什么&#xff1f;连通图具有以一个顶点为起点可以到达该图中的任意一个顶点的特性&#xff0c;就算它们不直接相连&#xff0c;但是它们之间至少有一条可以递达的路径。并且连通图是针对无向…

劳务派遣协议范本整理版模板范本

劳务派遣协议范本整理版 甲方&#xff08;用工单位&#xff09;&#xff1a;______ 法定代表人&#xff1a;____________ 地址&#xff1a;__________________ 电话&#xff1a;__________________ 传真&#xff1a;__________________ 乙方&#xff08;派遣单位&#xf…

【Java】一文彻底弄懂访问修饰符(public/protected/默认/private)--建议收藏

博主简介&#xff1a;努力学习的预备程序媛一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 前言 OOP(Object Oriented Programing)&#xff0c;即面向对象编程&#xff0c;最重要的功能/特点之一就是封装&#xff0c;这点在该专栏开篇博客【…

WebPack面试题汇总

1&#xff0c;Webpack有什么作用&#xff0c;谈谈你对它的理解 现在的前端网页功能丰富&#xff0c;特别是SPA&#xff08;single page web application 单页应用&#xff09;技术流行后&#xff0c;JavaScript的复杂度增加和需要一大堆依赖包&#xff0c;还需要解决Scss、Les…

记录--这样封装列表 hooks,一天可以开发 20 个页面

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 这样封装列表 hooks,一天可以开发 20 个页面 前言 在做移动端的需求时&#xff0c;我们经常会开发一些列表页&#xff0c;这些列表页大多数有着相似的功能&#xff1a;分页获取列表、上拉加载、下拉刷…

【Java 面试题合集】ThreadPoolExecutor 线程池面试题

文章目录自定义的线程池的 7 个参数如何合理设置核心线程数 corePoolSize 的大小《JAVA 并发编程实战》中的方案java 开发手册中为什么不允许使用 Executors 默认的实现&#xff1f;一个线程池中的线程异常了&#xff0c;那么线程池会怎么处理这个线程?线程池被创建后里面有线…

OpenCV——总结《图像处理-1》

1.HSV H - 色调&#xff08;主波长&#xff09;。S - 饱和度&#xff08;纯度/颜色的阴影&#xff09;。V值&#xff08;强度&#xff09; hsvcv2.cvtColor(img,cv2.COLOR_BGR2HSV)2.图像阈值 函数介绍&#xff1a; ret, dst cv2.threshold(src, thresh, maxval, type) sr…

嵌入式Linux从入门到精通之第九节:系统编程

系统编程概述 在讲解系统编程之前,先了解几个概念: 操作系统的作用: 操作系统用来管理所有的资源,并将不同的设备和不同的程序关联起来。 什么是Linux系统编程? 在有操作系统的环境下编程,并使用操作系统提供的系统调用及各种库,对系统资源进行访问。 学会了C语言再知…

Grafana9.3.x在windows上的安装及使用

Grafana9.3.x的安装及使用1. Grafana install1.1 Download1.2 Install2. User Guide1.1 Document1.2 Table视图背景色渲染3.Awakening1. Grafana install 1.1 Download 下载地址 Grafana Website: https://grafana.com/. 1.2 Install 直接点击安装就好了 进入conf目录复制一…

python集合语法与应用

python集合语法与应用 文章目录python集合语法与应用一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.创建2.增加3.删除4.集合运算5.拓展知识一6.拓展知识二总结一、实验目的 掌握集合的用法 二、实验原理 集合中只能包含数字、字符串、元组等不可变的类型的…

规则引擎,实现业务低代码开发的重要工具

规则引擎&#xff0c;是将业务执行抽象化的配置&#xff0c;通过其定义的数据结构、算法和流程来实现应用程序功能的普适化。 规则引擎可以帮助企业提高业务开发效率&#xff0c;提高运营的灵活性&#xff0c;降低运营成本与开发成本&#xff0c;让系统更加智能化灵活化。这里以…

【Rust】5. 所有权

5. 所有权 5.1 什么是所有权 5.1.1 栈&#xff08;Stack&#xff09;与堆&#xff08;Heap&#xff09; 5.1.2 所有权规则 5.1.3 变量作用域 5.1.4 String 类型 String 类型可进行修改&#xff0c;而字符串字面值是不可以的&#xff01;&#xff08;区别在于二者对内存的处理…

OAuth2

目录一、什么是OAuth2.0二、OAuth2中的角色三、认证流程四、生活中的Oauth2思维5. 令牌的特点6.OAuth2授权方式6.1 授权码6.2 隐藏方式6.3 密码方式6.4 凭证方式一、什么是OAuth2.0 OAuth2.0是目前使用非常广泛的授权机制&#xff0c;用于授权第三方应用获取用户的数据。 举例…

PythonWeb Django框架学习笔记

文章目录Django一、初步了解Django1.1 创建项目1.2 文件介绍1.3 APP的创建和说明添加新的app注册app创建页面1.4 templates模板templates语法单一变量列表循环【列表】字典循环【字典】列表套字典条件判断templates小结1.5 请求和响应案例&#xff1a;用户管理二、数据库操作2.…