headroom.js插件使用方法

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(),所以無效。應該用以下代碼替換之,表示等文檔加載完畢再調用。

  <script type="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     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     <!-- Bootstrap -->
  7     <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/css/bootstrap.min.css">
  8 
  9     <link rel="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     <style type="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     <style type="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     <div class="jumbotron">
 37         <div class="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><a class="btn btn-primary btn-lg" role="button">Learn more ?</a></p>
 41         </div>
 42     </div>
 43 
 44     <div class="container">
 45 
 46         <!-- 導航欄 -->
 47         <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation" id="example">
 48             <div class="navbar-header">
 49               <a class="navbar-brand" href="#">w3school</a>
 50             </div>
 51 
 52             <div class="collapse navbar-collapse" id="tem">
 53                 <ul class="nav navbar-nav">
 54                     <li class="active"><a href="#php">PHP</a></li>
 55                     <li><a href="#js">JS</a></li>
 56                     <li class="dropdown">
 57                         <a href="#" class="dropdown-toggle" data-toggle="dropdown">database<b class="caret"></b></a>
 58 
 59                         <ul class="dropdown-menu">
 60                             <li><a href="#mysql">MySQL</a></li>
 61                             <li><a href="#pgsql">PostgreSQL</a></li>
 62                             <li><a href="#mgdb">MogoDB</a></li>
 63                         </ul>
 64                     </li>
 65                 </ul>
 66             </div>
 67         </nav>
 68 
 69         <!-- 主體內容-->
 70         <div data-spy="scroll" data-target="#example" data-offset="0" class="scrollspy-example">
 71             <h4 id="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             <h4 id="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             <h4 id="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             <h4 id="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             <h4 id="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     <script src="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     <script src="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
102 
103 
104     <script  type="text/javascript"  src="https://rawgithub.com/WickyNilliams/headroom.js/master/dist/headroom.js"></script>
105 
106     <script  type="text/javascript"  src="https://rawgithub.com/WickyNilliams/headroom.js/master/src/jQuery.headroom.js"></script>
107 
108     <script type="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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273629.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JDK 8 新特性 之 方法引用

概述 方法引用&#xff1a;當要傳遞給Lambda體的操作&#xff0c;已經有實現的方法了&#xff0c;就可以使用方法引用方法引用&#xff1a;在Lambda的基礎上進一步的簡化。換句話說&#xff0c;方法引用就是Lambda表達式&#xff0c;也就是函數式接口的一個實例&#xff0c;通過…

項目記錄:springmvc forward redirect 問題

RequestMapping("/redirect")public String redirect(RedirectAttributes redirectAttributes){redirectAttributes.addFlashAttribute("test", "testdata"); //專供此種情況下使用。return "redirect:read";} 注意&#xff1a;此種情…

JDK 8 新特性 之 Lambda表達式

前言 Lambda 表達式&#xff0c;也可稱為閉包&#xff0c;它是推動 Java 8 發布的最重要新特性。Lambda 允許把函數作為參數傳遞進方法中。使用 Lambda 表達式可以使代碼變的更加簡潔緊湊。lambda表達式的重要特征: 可選類型聲明&#xff1a;不需要聲明參數類型&#xff0c;編譯…

開源組件DocX導出Word

1、使用Docx替換Word模板里書簽里內容的一個方法 using Novacode;public class ExportWord{/// <summary>/// 導出word/// </summary>/// <param name"lBookMarks">書簽數據源</param>/// <param name"sTemplatePath">導出W…

JDK 8 新特性 之 Strams簡單使用

概述 Java 8 API添加了一個新的抽象稱為流Stream&#xff0c;可以讓你以一種聲明的方式處理數據。 Stream 使用一種類似用 SQL 語句從數據庫查詢數據的直觀方式來提供一種對 Java 集合運算和表達的高階抽象。 Stream API可以極大提供Java程序員的生產力&#xff0c;讓程序員寫出…

Cannot open include file: jni.h: No such file or directory解決方法

在此運行Visual Studio 2012 項目時出現 #include <stdio.h> #include <jni.h> int main() { printf("Hello World"); } But when I try to build, I get the following error - 1>c:testtest.cpp(2) : fatal error C1083: Cannot open include file:…

JDK 8 新特性 之 函數接口

函數接口 定義:接口中只有唯一的一個抽象方法&#xff0c;該接口就稱之為函數接口。 //函數接口 public interface FunctionInterface1 {//1、只有一個方法的接口&#xff0c;默認稱之為函數接口void get(); }//非函數接口 public interface FunctionInterface2 {void get1();v…

微服務之基礎知識

什么是微服務架構 微服務是系統架構上的一種設計風格&#xff0c; 它的主旨是將一個原本獨立的系統拆分成多個小型服務&#xff0c;這些小型服務都在各自獨立的進程中運行&#xff0c;服務之間通過基于HTTP的RESTful API進行通信協作。 被拆分成的每一個小型服務都圍繞著系統中…

LightOj 1078 Basic Math

思路&#xff1a; 設輸入的兩個數分別為n和a,每一次所得到的數為update&#xff1a; 開始updatea,依次update分別為update*10a,這樣數據會超出范圍&#xff0c;則update每次為update(update*10a)%n即可&#xff0c; 如果update0,跳出循環&#xff1b; 只需證明&#xff1a;(upd…

還是俄羅斯方塊之android版

前面的&#xff0c;口水話 請直接跳過。 雖然現在不比以前了 也沒多少人氣了&#xff0c;放到首頁 都不到幾百的點擊量。也許博客園整體水平也是在往水的方向發展。不談那些了&#xff0c;哥也曾經輝煌過 有過一天上千的點擊量 &#xff0c;哥也曾經有過粉絲&#xff0c;被小妹…

Integer 值判斷相等

Integer 值判斷相等 案例&#xff1a; public class Test {public static void main(String[] args) {Integer a 127;Integer b 127;System.out.println("a b :" (a b));System.out.println("a.equals(b):"a.equals(b));String x "127";Str…

自定義快捷命令程序(VC++加批處理)

一 概述 在看《從小工到專家-程序員修煉之道》時&#xff0c;看到建議使用Shell&#xff0c;很有感觸。在很多時候&#xff0c;通過鍵盤操作&#xff0c;比鼠標的確會塊很多&#xff0c;如果能用好shell命令&#xff08;或批處理命令&#xff09; &#xff0c;的確能節省我們…

Redis 快速入門

簡介 Redis 是一個 Key-Value 存儲系統。和 Memcached 類似&#xff0c;它支持存儲的 value 類型相對更多&#xff0c;包括 string(字符串)、 list(鏈表)、 set(集合)和 zset(有序集合)。這些數據類型都支持 push/pop、add/remove 及取交集并集和差集及更豐富的操作&#xff0c…

7. Adapter

轉載于:https://www.cnblogs.com/anit/p/3930202.html

Redis 中常用命令

Redis 中常用命令 keys 返回滿足給定 pattern 的所有 key。 127.0.0.1:6379> keys *1) "name2"2) "myzset"3) "myset7"4) "name"5) "myset6"6) "mylist"7) "mylist2"8) "myset3"9) "…

CGI與Servlet的區別和聯系

1. 定義&#xff1a; CGI(Common Gateway Interface 公共網關接口)是HTTP服務器與你的或其它機器上的程序進行“交談”的一種工具&#xff0c;其程序須運行在網絡服務器上。 2. 功能&#xff1a; 絕大多數的CGI程序被用來解釋處理杰自表單的輸入信息&#xff0c;并在服 務器產生…

Redis sorted set 類型操作及常用命令

七個原則 Redis 是一個操作數據結構的語言工具&#xff0c;它提供基于 TCP 的協議以操作豐富的數據結構。在 Redis 中&#xff0c;數據結構這個詞的意義不僅表示在某種數據結構上的操作&#xff0c;更包括了結構本身及這些操作的時間空間復雜度。Redis 定位于一個內存數據庫&am…

Gradle中的buildScript代碼塊

在編寫Gradle腳本的時候&#xff0c;在build.gradle文件中經常看到這樣的代碼&#xff1a; build.gradle1 2 3 4 5 6 7 8 9 buildScript {repositories {mavenCentral() } }repositories {mavenCentral() }這樣子很容易讓人奇怪&#xff0c;為什么repositories要聲明兩次哪&…

Redis List 類型操作及常用命令

七個原則 Redis 是一個操作數據結構的語言工具&#xff0c;它提供基于 TCP 的協議以操作豐富的數據結構。在 Redis 中&#xff0c;數據結構這個詞的意義不僅表示在某種數據結構上的操作&#xff0c;更包括了結構本身及這些操作的時間空間復雜度。Redis 定位于一個內存數據庫&am…

Hibernate查詢之Criteria查詢

轉自&#xff1a;http://www.cnblogs.com/Laupaul/archive/2012/02/15/2353194.html Criteria是一種比hql更面向對象的查詢方式。Criteria 可使用 Criterion 和 Projection 設置查詢條件。可以設置 FetchMode( 聯合查詢抓取的模式 ) &#xff0c;設置排序方式&#xff0c;Crite…