上方配置一張圖片,因為自適應效果計算此區塊的高度後,將 Hander 的高度和下方的選單區塊做 fixed 的切換。


01-jQurry 分析與解析

01-1-變數宣告方式

JQuery跟Javascript的變數宣告方式一樣,一般來說變數宣告最基礎的方式有以下兩種…

另外也可以在一個敘述句中宣告多個變數或是多個帶變數值的變數,使用上彈性還蠻大的也可以減少要一直重複打 var 的麻煩

01-2-立即執行的匿名函式

01-3-jquery-trigger()

.trigger 反迴值針對 function _static() > $header(‘marginTop’, 值);

01-4-jQuery-scroll()方法

描述: 為 JavaScript 的 “scroll” 事件綁定一個處理函數,或者觸發元素上的該事件。當用戶滾動指定的元素時,會發生 scroll 事件。scroll 事件適用於所有可滾動的元素和 window 對象(瀏覽器窗口)。scroll() 方法觸發 scroll 事件,或規定當發生 scroll 事件時運行的函數。

資料來源:
http://www.w3school.com.cn/jquery/event_scroll.asp
http://www.css88.com/jqapi-1.9/scroll/

01-5-?: 條件選擇 a ? b : c – 比較與運算子

($('#headerTopicContainer').height() <= $(window).scrollTop()) ? _fixed() : _static();

01-6-jQuery-.next()方法

.next() 選下層元素

01-7-jQuery-.on()方法

定義和用法

  • on() 方法在被選元素及子元素上添加一個或多個事件處理程序
  • 注意:使用 on() 方法添加的事件處理程序適用於當前及未來的元素(比如由腳本創建的新元素)。

語法 $(selector).on(event,childSelector,data,function,map)

  • event 必需。規定要從被選元素移除的一個或多個事件或命名空間。由空格分隔多個事件值。必須是有效的事件。
  • childSelector 可選。規定只能添加到指定的子元素上的事件處理程序(且不是選擇器本身,比如已廢棄的 delegate() 方法)。
  • data 可選。規定傳遞到函數的額外數據。
  • function 可選。規定當事件發生時運行的函數。
  • map 規定事件映射 ({event:function, event:function, …}),包含要添加到元素的一個或多個事件,以及當事件發生時運行的函數。

資料來源:http://www.runoob.com/jquery/event-on.html


02-以知問題與改善方法

02-1-Hander 圖片太大還網速慢會使得JS效果失效

#headerTopicContainer 內的圖片主要功能是要讓自適應圖片效果的高度 #headerTopicContainer 撐開,給 JS 取得高度的值後去計算 #headerContainer 在多少高度之後可以執行換 fixed (固定於上方區塊),若在圖片沒有完整的載入完成的話是無法計算高度,因此在 #headerTopicContainer 加入 CSS min-hight:10vh;,JS 取得此高度的值後就可以順利執行了。


03-實做與演示

See the Pen jqeury-選單固定於瀏覽器上方 by Jimmy_Wu (@Jimmy_Wu) on CodePen.


04-參考資料來源

進擊的IT-【JQuery】《第二回》JQuery變數宣告與型態及變數生命週期-變數宣告方式

相近似的功能
男丁格爾-[jQ]仿 Apple Store 的固定購物清單捲動效果 || 說明頁面展示頁面
梅問題-jQuery教學-浮動式固定上選單 || 說明頁面展示頁面