需求

页面向下滚动时,需要将顶部的搜索栏信息和导航菜单吸顶,并且,搜索栏信息和导航菜单之间可以切换。

效果

https://www.iguopin.com/index.php?m=&c=index&a=index

代码实现

HTML

	<div class="nav-search">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">
<img alt="Brand" src="../public/images/igplogo2.png" class="header-brand">
</a>
</div>
<div class="right_part noprint">
<form class="ip-group">
<div class="ip-box">
<div class="type">
<div class="text"></div>
<i class="layui-icon layui-icon-down" style="font-size: 18px;cursor: pointer;"></i>
<div class="dpdown">
<div class="option" id="1">社会招聘</div>
<div class="option" id="2">校园招聘</div>
<div class="option" id="3">高端职位</div>
<div class="option" id="4">实习职位</div>
</div>
</div>
<input
type="text"
name="jobkey"
id="top_search_input"
value=""
placeholder="请输入职位或企业名称"/>
</div>
<input type="submit" class="ip-btn" value="搜索">
<input type="hidden" name="act" id="top_search_type" value="QS_jobslist"/>
</form>
<div class="nav-btn">
<span class="nav-text">导航</span>
<span class="iconfont icon-other"></span>
</div>
<div class="qrcodes">
<img class="qrcode qr1" src="../public/images/index/gp_qrcode.png"></img>
<img class="qrcode qr2" src="../public/images/index/gpfb_qrcode.png"></img>
<div class="qrcode-tip-box">
<span class="tip1 active">关注最新招聘资讯</span>
<span class="tip2">获取简历投递状态</span>
</div>
</div>
<div class="clear"></div>
</div>
</div>
</div>
...
...
...
<div class="link-nav">
<div class="container">
<ul class="nav navbar-nav site_link">
<li><a target="_blank" href="www.iguopin.com">国聘行动</a></li>
<li><a target="_blank" href="https://zhaogong.iguopin.com/">线上招工</a></li>
<li><a target="_blank" href="https://zhaogong.iguopin.com/abroad">一带一路</a></li>
</ul>
<div class="clearfix"></div>
</div>
</div>

css

.nav-search {
width: 100%;
background-color: #fff;
z-index: 1000;
}
.navbar .container .navbar-header {
margin-right: 0;
float: none;
margin-left: 0;
width: 20%;
}
.navbar .container .right_part {
align-items: center;
width: 80%;
}
.nav-btn {
float: right;
display: none;
width: 70px;
margin-left: 40px;
font-size: 16px;
color: #c90808;
line-height: 85px;
cursor: pointer;
}
.nav-search-fixed {
position: fixed;
top: 0;
-webkit-box-shadow: 2px 2px 10px #ccc;
box-shadow: 2px 2px 10px #ccc;
}
.nav-search-fixed .navbar-header {
display: none;
}
.navbar .nav-search-fixed .container .right_part {
width: 100%;
}
.navbar .nav-search-fixed .container .right_part .ip-group {
margin-left: 100px;
}
.nav-search-fixed .nav-btn {
display: inline-block;
position: relative;
top: 2px;
}
...
...
...
.link-nav {
width: 100%;
border-bottom: 2px solid #c90808;
background: #fff;
box-sizing: border-box;
height: 72px;
.container {
width: 1200px;
margin: 0 auto;
height: 72px;
box-sizing: border-box; .navbar-nav {
width: 100%;
height: 72px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-pack: distribute;
justify-content: space-around;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
margin: 0;
padding: 0;
list-style: none; > li {
float: left;
position: relative;
display: block;
padding: 0;
margin: 0;
line-height: 72px;
list-style-type: none;
box-sizing: border-box;
}
} > .avatar-li {
&:hover {
.dropdown-menu {
display: block;
}
}
}
}
}
}
.container-fixed {
position: fixed;
z-index: 1000;
width: 1070px;
top: 0;
.navbar-nav {
height: 120px;
line-height: 120px;
> li {
line-height: 120px;
&.active, &:hover {
height: 120px;
}
}
}
}
.clearfix {
zoom: 1;
display: block;
}
}
.link-nav-fixed {
width: 1200px;
margin: 0 auto;
}

JS

        $(function () {
// 导航吸顶
fixedNav();
$(window).scroll(function () {
fixedNav();
})
});
// 页面滚动到一定高度,固定顶部导航
var flag = false;
function fixedNav() {
var top = $(document).scrollTop();
if (top >= 212) {
$('.nav-search').addClass('nav-search-fixed');
navChange();
} else {
$('.nav-search').removeClass('nav-search-fixed');
$('.ip-group').show();
$('.qrcodes').show();
$('.container').removeClass('container-fixed');
$('.link-nav').removeClass('link-nav-fixed');
}
};
// 定位导航内容切换
$('.nav-btn').click(function () {
flag = !flag;
navChange();
});
function navChange() {
if (flag) {
$('.nav-text').text("搜索");
$('.nav-btn').children('.iconfont').removeClass('icon-other').addClass('icon-search');
$('.ip-group').hide();
$('.qrcodes').hide();
$('.link-nav').addClass('link-nav-fixed');
$('.container').addClass('container-fixed');
} else {
$('.nav-text').text("导航");
$('.nav-btn').children('.iconfont').removeClass('icon-search').addClass('icon-other');
$('.ip-group').show();
$('.qrcodes').show();
$('.link-nav').removeClass('link-nav-fixed');
$('.container').removeClass('container-fixed');
}
}

总结

主要是scroll, scrollTop(), click, show(), hide方法和position: fixed等属性的理解和使用。需要注意的是,一开始就调用fixedNav(),是用于当页面刷新且未滚动,但页面已不在顶部的位置时(也就是刷新页面后看不到顶部导航的位置),出现吸顶的导航的效果。

jQuery实现页面导航内容定位效果,并支持内容切换的更多相关文章

  1. jQuery实现页面元素智能定位

    实现过程 Js侦听滚动事件,当页面滚动的距离(页面滚动的高度)超出了对象(要滚动的层)距离页面顶部的高度,即要滚动的层到达了浏览器窗口上边缘时,立即将对象定位属性position值改成fixed(固定 ...

  2. jQuery实现页面锚点滚动效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. jquery实现页面控件拖动效果js代码

    ;(function($) { var DragPanelId = "divContext"; var _idiffx = 0; var _idiffy = 0; var _Div ...

  4. 基于jquery实现页面loading加载效果

    实现loading 加载提示 ······ 透明遮罩 居中效果 具体代码如下: CSS样式部分: <style type="text/css"> .background ...

  5. JQuery 实现页面无刷新

    对于JQuery实现页面无刷新的效果,即:应用这个JQuery这个组件,可以实现在页面上加载数据库中的数据信息,但是并没有给用户页面刷新的感觉,这样既可以有效的进行数据交互,也可以不妨碍用户的其他操作 ...

  6. 简单实现弹出弹框页面背景半透明灰,弹框内容可滚动原页面内容不可滚动的效果(JQuery)

    弹出弹框 效果展示 实现原理 html结构比较简单,即: <div>遮罩层 <div>弹框</div> </div> 先写覆盖显示窗口的遮罩层div.b ...

  7. Vue 事件监听实现导航栏吸顶效果(页面滚动后定位)

    Vue 事件监听实现导航栏吸顶效果(页面滚动后定位) Howie126313 关注 2017.11.19 15:05* 字数 100 阅读 3154评论 0喜欢 0 所说的吸顶效果就是在页面没有滑动之 ...

  8. jquery mobile页面切换效果(Flip toggle switch)(注:jQuery移动使用的数据属性的列表。 )

    1.页面切换(data-transition)

  9. jquery的固定定位效果

    今天做了个固定定位的效果.比如对导航需要进行固定定位效果: 当没有滚动到导航下面,导航正常显示. 当滚动到导航下面,导航就固定到顶部. 这个效果使用了jquery的方法实现,具体思路为: 1)首先获取 ...

随机推荐

  1. 决策单调性&wqs二分

    其实是一个还算 trivial 的知识点吧--早在 2019 年我就接触过了,然鹅当时由于没认真学并没有把自己学懂,故今复学之( 1. 决策单调性 引入:在求解 DP 问题的过程中我们常常遇到这样的问 ...

  2. Codeforces 1542E2 - Abnormal Permutation Pairs (hard version)(DP)

    upd on 2021.7.7:修了个 typo Codeforces 题目传送门 & 洛谷题目传送门 首先考虑怎样处理"字典序小"这个问题,按照字典序比大小的套路,我们可 ...

  3. 第42篇-JNI引用的管理(1)

    在本地函数中会使用Java服务,这些服务都可以通过调用JNIEnv中封装的函数获取.我们在本地函数中可以访问所传入的引用类型参数,也可以通过JNI函数创建新的 Java 对象.这些 Java 对象显然 ...

  4. linux 两服务器之间的文件传输scp

    Linux scp 命令用于 Linux 之间复制文件和目录. scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令. scp 是加 ...

  5. 1.TwoSum-Leetcode

    #include<iostream> #include<algorithm> #include<map> using namespace std; class So ...

  6. day07 Nginx入门

    day07 Nginx入门 Nginx简介 Nginx是一个开源且高性能.可靠的http web服务.代理服务 开源:直接获取源代码 高性能:支持海量开发 可靠:服务稳定 特点: 1.高性能.高并发: ...

  7. NuxtJS的AsyncData和Fetch使用详解

    asyncData 简介 asyncData 可以用来在客户端加载 Data 数据之前对其做一些处理,也可以在此发起异步请求,提前设置数据,这样在客户端加载页面的时候,就会直接加载提前渲染好并带有数据 ...

  8. collection映射

    讲了manyToOne和oneToMany,下面来看看get方法.在之前已经说过,如果是映射单对象,直接使用association来映射.而如果关系 是一个集合,则需要使用collection来描述. ...

  9. python 从ubantu环境迁移到windows环境

    下载安装Anaconda3 Anaconda3-2021.05-Windows-x86_64.exe 默认安装目录 C:\ProgramData\Anaconda3 可以启动Anaconda查看不同的 ...

  10. Android给页面添加横线和竖线

    竖线 <View      android:layout_width="1dip"     android:layout_height="match_parent& ...