jQuery实现页面导航内容定位效果,并支持内容切换
需求
页面向下滚动时,需要将顶部的搜索栏信息和导航菜单吸顶,并且,搜索栏信息和导航菜单之间可以切换。
效果
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实现页面导航内容定位效果,并支持内容切换的更多相关文章
- jQuery实现页面元素智能定位
实现过程 Js侦听滚动事件,当页面滚动的距离(页面滚动的高度)超出了对象(要滚动的层)距离页面顶部的高度,即要滚动的层到达了浏览器窗口上边缘时,立即将对象定位属性position值改成fixed(固定 ...
- jQuery实现页面锚点滚动效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jquery实现页面控件拖动效果js代码
;(function($) { var DragPanelId = "divContext"; var _idiffx = 0; var _idiffy = 0; var _Div ...
- 基于jquery实现页面loading加载效果
实现loading 加载提示 ······ 透明遮罩 居中效果 具体代码如下: CSS样式部分: <style type="text/css"> .background ...
- JQuery 实现页面无刷新
对于JQuery实现页面无刷新的效果,即:应用这个JQuery这个组件,可以实现在页面上加载数据库中的数据信息,但是并没有给用户页面刷新的感觉,这样既可以有效的进行数据交互,也可以不妨碍用户的其他操作 ...
- 简单实现弹出弹框页面背景半透明灰,弹框内容可滚动原页面内容不可滚动的效果(JQuery)
弹出弹框 效果展示 实现原理 html结构比较简单,即: <div>遮罩层 <div>弹框</div> </div> 先写覆盖显示窗口的遮罩层div.b ...
- Vue 事件监听实现导航栏吸顶效果(页面滚动后定位)
Vue 事件监听实现导航栏吸顶效果(页面滚动后定位) Howie126313 关注 2017.11.19 15:05* 字数 100 阅读 3154评论 0喜欢 0 所说的吸顶效果就是在页面没有滑动之 ...
- jquery mobile页面切换效果(Flip toggle switch)(注:jQuery移动使用的数据属性的列表。 )
1.页面切换(data-transition)
- jquery的固定定位效果
今天做了个固定定位的效果.比如对导航需要进行固定定位效果: 当没有滚动到导航下面,导航正常显示. 当滚动到导航下面,导航就固定到顶部. 这个效果使用了jquery的方法实现,具体思路为: 1)首先获取 ...
随机推荐
- C++ and OO Num. Comp. Sci. Eng. - Part 2.
本文参考自<C++ and Object-Oriented Numeric Computing for Scientists and Engineers>. 1. Basic Types ...
- nginx_install
[root@MiWiFi-R1CM-srv ~]# yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre-devel pc ...
- Go知识点大纲
目录 1. 基本介绍 2. 安装及配置 3. 变量 4. 常量 5. 数据类型 5.1 numeric(数字) 5.2 string(字符串) 5.3 array(数组) 5.4 slice(切片) ...
- c#图标、显示图表、图形、json echarts实例 数据封装【c#】
page: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Viewxxx ...
- Hadoop入门 集群崩溃的处理方法
目录 集群崩溃的处理方法 搞崩集群 错误示范 正确处理方法 1 回到hadoop的家目录 2 杀死进程 3 删除每个集群的data和logs 4 格式化 5 启动集群 总结 原因分析 集群崩溃的处理方 ...
- Apache2配置文件解读
每次碰到都不知道具体的作用,所以来分析一下 配置文件结构 apache2在启动的时候自动读取/etc/apache2/apache2.conf文件的配置信息,不同的配置项按功能分布在不同的文件中,然后 ...
- E面波导和H面波导的问题
我感觉与窄壁平行是E面,反之为H面.通常E面(窄面)是指与电场方向平行的方向图切面(窄面):H面(宽面)是指与磁场方向平行的方向图切面(宽面).E面的意思是... ElevationH面的意思是... ...
- Android数据存取
Android数据存取 一.SharedPreferencesc存取数据 SharedPreferences是使用键值对的方式来存储数据的,也就是在保存一条数据时,需要给这条数据提供一个对应的键,这样 ...
- linux修改文件权限命令
先看个实例: [root@local opt]#ls -al ls -al 命令是列出目录的所有文件,包括隐藏文件.隐藏文件的文件名第一个字符为'.' -rw-r--r-- 1 root root ...
- Nodejs源码解析之module
modulejs的导入 Require函数详解 module路径解析 module.js的导入 module.js是由node.js在Nodejs程序启动的时候导入的.module.js中使用的req ...