1.什么是headroom.js?

headroom是用纯Javascript写的插件,用来隐藏和展示页面元素,从而为页面留下更多空间。比如使用headroom能使导航栏当页面下滚时消失,当页面上滚时候又出现。(查看效果

2.工作原理

通过感应目标元素不同的3种状态(原始,下滚,上滚),为目标元素更改相应的class,通过相应的class的css样式的变化得到所要的效果。

3.如何使用

(以下的例子是基于bootstrap框架和jquery插件的,在bootstrap框架下可以快速写出导航栏navbar,然后以jquery插件方式对导航栏navbar调用headroom()。)

首先需要引用headroom.js和jQuery.headroom.js。将以下的代码加入到你的代码中。headroom.js作用:感应元素不同的状态为之更改相应的class。jQuery.headroom.js作用:提供jquery插件方式和Data-API方式调用headrooom()。

<script  type="text/javascript"  src="https://rawgithub.com/WickyNilliams/headroom.js/master/dist/headroom.js"></script><script  type="text/javascript"  src="https://rawgithub.com/WickyNilliams/headroom.js/master/src/jQuery.headroom.js"></script>

因为headroom()函数传入的参数option对象的默认值如下。

{//在元素没有固定之前,垂直方向的偏移量(以px为单位)offset : 0,//scroll tolerance in px before state changestolerance : 0,//对于每个状态都可以自定义css classes
classes : {//当元素初始化后所设置的classinitial : "headroom",//向上滚动时设置的classpinned : "headroom--pinned",//向下滚动时所设置的classunpinned : "headroom--unpinned"}
}

由此可知原始的状态对应的class是headroom,下滚时的class是headroom--pinned,上滚时的class是headroom--unpinned。所以我们要添加下面的样式,通过css的trasition属性达到变换效果。

    <style type="text/css">.headroom {position: fixed;top:0;left: 0;right: 0;transition: all .2s ease-in-out;}.headroom--unpinned {top: -100px;}.headroom--pinned {top: 0;}</style>

之后添加下面的js代码,使用jquery插件的方式调用。".navbar-fixed-top"只是用来获取导航栏navbar,也可以用其他选择器来获取navbar目标元素

    <script type="text/javascript">$(".navbar-fixed-top").headroom();</script>  

做完了上述步骤,理论上你就可以看到headroom的效果了,如果没有成功可能是以下的原因:

1、js的引用顺序错误,因为一些js要用到其他js才能运行的,所以必须放在其他的js之后。例如

<script type="text/javascript">$(".navbar-fixed-top").headroom();</script>

必须放在headroom.js和jQuery.headroom.js之后,而headroom.js和jQuery.headroom.js必须放在jQuery.js之后。

2、将$(".navbar-fixed-top").headroom(); 放在主体html代码之前,如放在<head></head>中,因为在主体html代码之前,navbar元素还没加载就调用 了headroom(),所以无效。应该用以下代码替换之,表示等文档加载完毕再调用。

  <scripttype="text/javascript">$("doucument").ready(fuction(){$(".navbar-fixed-top").headroom(); });</script>

上述的效果只是通过css自带的trasition属性来实现效果,比较单调。不过可以结合animate.css实现更多的漂亮的消失和出现的效果。(查看效果)

animate.css使用纯css为各种元素实现不同的动画效果,每一种class对应一种动画效果,所以将animate.css引入代码后headroom()可以直接使用已经写好的class。(animate.css下载)

我基于bootstrap和jquery写得例子。

1 <!DOCTYPE html>
2 <html>
3   <head>
4     <title>Bootstrap 101 Template</title>
5     <metaname="viewport"content="width=device-width, initial-scale=1.0">
6     <!--Bootstrap-->
7     <linkrel="stylesheet"href="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/css/bootstrap.min.css">
8
9     <linkrel="stylesheet"href="I:/webpage/animate/animate.css">
10
11     <!--HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries-->
12     <!--WARNING: Respond.js doesn't work if you view the page via file://-->
13     <!--[if lt IE 9]>14 <script src="http://cdn.bootcss.com/html5shiv/3.7.0/html5shiv.min.js"></script>15 <script src="http://cdn.bootcss.com/respond.js/1.3.0/respond.min.js"></script>16 <![endif]-->
17     <styletype="text/css">
18 .headroom{position:fixed;top:0;left:0;right:0;transition:all .2s ease-in-out;}
19 .headroom--unpinned{top:-100px;}
20 .headroom--pinned{top:0;}
21     </style>
22
23     <styletype="text/css">
24 .scrollspy-example{
25 height:1200px;
26 overflow:auto;
27 position:relative;
28       }
29     </style>
30
31
32   </head>
33   <body>
34
35     <!--页眉大屏显示-->
36     <divclass="jumbotron">
37         <divclass="container">
38             <h1>Hello, world!</h1>
39             <p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
40             <p><aclass="btn btn-primary btn-lg"role="button">Learn more »</a></p>
41         </div>
42     </div>
43
44     <divclass="container">
45
46         <!--导航栏-->
47         <navclass="navbar navbar-inverse navbar-fixed-top"role="navigation"id="example">
48             <divclass="navbar-header">
49               <aclass="navbar-brand"href="#">w3school</a>
50             </div>
51
52             <divclass="collapse navbar-collapse"id="tem">
53                 <ulclass="nav navbar-nav">
54                     <liclass="active"><ahref="#php">PHP</a></li>
55                     <li><ahref="#js">JS</a></li>
56                     <liclass="dropdown">
57                         <ahref="#"class="dropdown-toggle"data-toggle="dropdown">database<bclass="caret"></b></a>
58
59                         <ulclass="dropdown-menu">
60                             <li><ahref="#mysql">MySQL</a></li>
61                             <li><ahref="#pgsql">PostgreSQL</a></li>
62                             <li><ahref="#mgdb">MogoDB</a></li>
63                         </ul>
64                     </li>
65                 </ul>
66             </div>
67         </nav>
68
69         <!--主体内容-->
70         <divdata-spy="scroll"data-target="#example"data-offset="0"class="scrollspy-example">
71             <h4id="php">PHP</h4>
72             <p>PHP, an acronym for Hypertext Preprocessor, is a widely-used open source general-purpose scripting language. It is an HTML embedded scripting language and is especially suited for web development. The basic syntax of PHP is similar to C, Java, and Perl, and is easy to learn. PHP is used for creating interactive and dynamic web pages quickly, but you can do much more with PHP.73              </p>
74             <h4id="js">JS</h4>
75             <p>
76 JavaScript is a cross-platform, object-oriented scripting language developed by Netscape. JavaScript was created by Netscape programmer Brendan Eich. It was first released under the name of LiveScript as part of Netscape Navigator 2.0 in September 1995. It was renamed JavaScript on December 4, 1995. As JavaScript works on the client side, It is mostly used for client-side web development.77             </p>
78             <h4id="mysql">MySQL</h4>
79             <p>
80 MySQL tutorial of w3cschool is a comprhensive tutorial to learn MySQL. We have hundreds of examples covered, often with PHP code. This helps you to learn how to create PHP-MySQL based web applications.81             </p>
82             <h4id="pgsql">PostgreSQL</h4>
83             <p>
84 In 1986 the Defense Advanced Research Projects Agency (DARPA), the Army Research Office (ARO), the National Science Foundation (NSF), and ESL, Inc sponsored Berkeley POSTGRES Project which was led by Michael Stonebrakessr. In 1987 the first demo version of the project is released. In June 1989, Version 1 was released to some external users. Version 2 and 3 were released in 1990 and 1991. Version 3 had support for multiple storage managers, an query executor was improved, rule system was rewritten. After that, POSTGRES has been started to be implemented in various research and development projects. For example, in late 1992, POSTGRES became the primary data manager for the Sequoia 2000 scientific computing project4. User community around the project also has been started increasing; by 1993, it was doubled.85             </p>
86             <h4id="mgdb">MongoDB</h4>
87             <p>
88 The term NoSQL was coined by Carlo Strozzi in the year 1998. He used this term to name his Open Source, Light Weight, DataBase which did not have an SQL interface.In the early 2009, when last.fm wanted to organize an event on open-source distributed databases, Eric Evans, a Rackspace employee, reused the term to refer databases which are non-relational, distributed, and does not conform to atomicity, consistency, isolation, durability - four obvious features of traditional relational database systems.89             </p>
90             <p>
91 After reading the largest third party online MySQL tutorial by w3cschool, you will be able to install, manage and develop PHP-MySQL web applications by your own. We have a comprehensive, SQL TUTORIAL, which will help you to understand how to prepare queries to fetch data against various conditions.92             </p>
93
94         </div>
95     </div>
96
97
98     <!--jQuery (necessary for Bootstrap's JavaScript plugins)-->
99     <scriptsrc="http://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
100     <!--Include all compiled plugins (below), or include individual files as needed-->
101     <scriptsrc="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
102
103
104     <scripttype="text/javascript"src="https://rawgithub.com/WickyNilliams/headroom.js/master/dist/headroom.js"></script>
105
106     <scripttype="text/javascript"src="https://rawgithub.com/WickyNilliams/headroom.js/master/src/jQuery.headroom.js"></script>
107
108     <scripttype="text/javascript">
109
110 $(".navbar-fixed-top").headroom();111
112     </script>
113
114
115   </body>
116 </html>

原文地址:http://blog.csdn.net/chenyulearn/article/details/19606751

转载于:https://www.cnblogs.com/ccode/p/3905922.html

headroom.js插件使用方法相关推荐

  1. Headroom.js插件用法

    一.Headroom.js是什么? Headroom.js是一个轻量级.高性能的JS小工具(不依赖不论什么工具库.),它能在页面滚动时做出响应. 此页面顶部的导航条就是一个鲜活的案例,当页面向下滚动时 ...

  2. js插件的经典写法与总结

    之前写了一篇关于js插件的方法,可以传入参数,当时不能够拓展方法,而且模式也不是很好,虽然能够满足一定的业务要求.下面是对js插件的完善,可以实现参数传入,方法拓展,链式操作,设计模式更加清晰. &l ...

  3. jquery.validate.js插件的使用方法

    近期做项目.须要用到 jQuery.validate.js插件,于是记录一下工作中的一些经验,以便日后学习. [样例例如以下] 1.前台页面 <form id="form1" ...

  4. java ajax多文件上传插件_ajaxFileUpload.js插件支持多文件上传的方法

    前提条件: ajaxFileUpload.js插件多文件上传 步骤: 1.修改源码,(源码只支持单个文件的上传): //修改前代码------- //var oldElement = jQuery(' ...

  5. 批量替换字符串,将其中的数字递增(两种方法)和circlr.js插件的使用

    使用circlr.js插件实现3D效果的时候,不想在JS中写追加,直接写html又太麻烦(使用的是HBuilder X),所以找到了两种批量替换字符串,将其中的数字递增的方法. 想要实现的效果: 1. ...

  6. ajaxFileUpload.js插件支持多文件上传的方法

    前提条件: ajaxFileUpload.js插件多文件上传 步骤: 1.修改源码,(源码只支持单个文件的上传): 复制代码 代码如下: //修改前代码------- //var oldElement ...

  7. 3ds Max、Maya安装Babylon.js插件导出gltf格式的3D模型文件方法

    3ds Max.Maya安装Babylon.js插件导出gltf格式的3D模型文件方法 **1.去Github project Releases下载Babylon.js插件. 找到和自己安装的3ds ...

  8. uni-app 项目引入第三方js插件,单个js文件引入成功,调用该插件方法

    通过"vue项目引入第三方js插件,单个js文件引入成功,使用该插件方法时报错(问题已解决)"成功移到UNI-APP上 方法一: 引用网址:https://www.cnblogs. ...

  9. 动画插件wow.js的使用方法

    动画插件wow.js的使用方法 1,下载文件 animate.css 下载地址: http://daneden.github.io/animate.css/ wow.min.js 下载地址: http ...

最新文章

  1. CENTOS 7安装步骤apache-tomcat-8.5.34-windows-x86
  2. 用一个二维码做下载地址,自动区分是 ios 还是 android
  3. Dom4j完整教程~字符串与XML的转换
  4. 读书笔记—《销售铁军》随记4
  5. 新手该怎么独立做跨境电商?做之前需要准备什么?
  6. 华为达芬奇架构到底好在哪里?
  7. msyql之查询某字段值重复的数据个数
  8. open ball、closed ball 与 open set、closed set(interior point,limit point)、dense set
  9. 10亿数据量只需要100MB内存,redis的位存储为什么这么牛?
  10. python sort sorted 排序详解
  11. normalize.css下载
  12. Open EtherCAT Society——SOEM、SOES
  13. unity3d开发微信小游戏2
  14. 取到崭新连号人民币,我却一点都不开心
  15. 使用Axure实现原型设计(一)
  16. JanusGraph入坑笔记(五)- GraphTraversal (Vertex centric)
  17. 单片机设计智能浇水系统
  18. 央行:居民购房意愿仍持续上升
  19. 工具及方法 - 项目管理工具ProjectLibre
  20. MySql 获取去年的第一天

热门文章

  1. 带你玩转 ui 框架 ——scoped及样式穿透问题详解
  2. 《看完它面试必solo | 寻找C站宝藏》
  3. DOM-13 【实战】输入及状态改变事件、京东搜索框
  4. Android绘制(三):Path结合属性动画, 让图标动起来!
  5. SocketErrorCode:10022
  6. hibernate(nested transactions not supported)异常
  7. 唤醒控件曾经拥有的能力
  8. Quickly Find/ Open a file in Visual Studio
  9. java trie实现
  10. SilverlightCMS开发之3经典三页面CMS浮现