需求

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

效果

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. 洛谷 P6776 - [NOI2020] 超现实树(找性质,神仙题)

    洛谷题面传送门 nb tea 一道! 首先考虑怎样入手分析这个看似非常不可做的问题.首先题目涉及高度无穷的树,根本枚举不了.不过我们冷静一下就会发现,如果我们记 \(mx=\max\limits_{i ...

  2. AT695 マス目

    AT695 マス目 本题选自 DP 优化方法大杂烩 状压部分. 这个题很 nb.下文记 \(n=H\),\(m=W\). 对于每一列,如果只记录一个格子是否为黑色,那么发现它无法处理从右边绕到左边再绕 ...

  3. linux下面升级 Python版本并修改yum属性信息

    最近需要在linux下使用python,故需要升级一下python版本,上网查询了一下相关资料,更新了一下linux下面的python环境,记录如下: linux下面升级 Python版本并修改yum ...

  4. 网络爬虫-python-爬取天涯求职贴

    使用urllib请求页面,使用BeautifulSoup解析页面,使用xlwt3写入Excel import urllib.request from bs4 import BeautifulSoup ...

  5. kubernetes部署 kube-apiserver服务

    kubernetes部署 kube-apiserver 组件 本文档讲解使用 keepalived 和 haproxy 部署一个 3 节点高可用 master 集群的步骤. kube-apiserve ...

  6. 【模板】一般图最大匹配(带花树算法)/洛谷P6113

    题目链接 https://www.luogu.com.cn/problem/P6113 题目大意 给定一个 \(n\) 个点 \(m\) 条边的无向图,求该图的最大匹配. 题目解析 二分图最大匹配,一 ...

  7. C语言中的main函数的参数解析

    main()函数既可以是无参函数,也可以是有参的函数.对于有参的形式来说,就需要向其传递参数.但是其它任何函数均不能调用main()函数.当然也同样无法向main()函数传递,只能由程序之外传递而来. ...

  8. Hadoop入门 完全分布式运行模式-准备

    目录 Hadoop运行环境 完全分布式运行模式(重点) scp secure copy 安全拷贝 1 hadoop102上的JDK文件推给103 2 hadoop103从102上拉取Hadoop文件 ...

  9. absent, absolute

    absent 1. A teacher asked in a class who killed Abraham Lincoln. A blonde said "It wasn't me, I ...

  10. Hive相关知识点

    ---恢复内容开始--- 转载:Hive 性能优化 介绍 首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据量大不是问题,数据倾斜是个问题. jobs数比较多的作业运行效率相 ...