發表文章

目前顯示的是有「jQuery」標籤的文章

javascript 自動捲動至選取項目

圖片
當我們在瀏覽項目時,無論是條列式或圖像式,選取的下一個目標跑出畫面時,使用者可能會期待系統自動捲動到某個恰當的位置以繼續瀏覽,於是有了這個計算及需求,跟各位分享一下。 首先,我的系統架構是這樣,使用者可以透過左右鍵好移動到前一個或下一個目標,然後先假設螢幕的高度是100,每個項目的高度是28,如下圖: 再來,透過jQuery的 $(window).scrollTop()可以取得現在畫面的最上緣是在整個垂直方向的甚麼位置,以上圖來說,一開始畫面是紅框範圍,值為0。 接著,透過 $selectedItem.offset().top 可以取得選取項目的最上緣所在垂直方向位置。以B項目為例,它的位置是88。 然後,每當我們選取到一個新目標時,都要判斷它的位置是不是在合理的瀏覽範圍內,以我的需求來說,會希望整顆圖像在畫面裡,也就是說,下一個新的目標,它的位置至少要在 0 (畫面當下位置) + 100 (螢幕高度) - 28 (項目高度) = 72 裡。 那來到現在的範例動作,當我們從A項目往下一個B項目移動時,B的位置是88 > 72,所以將畫面捲動。我希望畫面捲動成藍色框的位置,讓B離最上緣還稍微有個8的距離空間,所以我透過 $(window).scrollTop(B的位置 - 8) 來捲動。 以上,是簡化的的範例,那再來,以下分享我在工作上實際的需求。 系統的上方有個漂浮的header,下面也有個漂浮的footer,一併列入計算。 當我往前面的項目移動時,我希望捲動頁面成新的目標在畫面最上排;而當我往後面項目移動時,希望捲動成新的目標在畫面最下排,程式碼如下: // 當選取Item超出畫面,做適當捲動 var headHeight = $('#pageHeader').outerHeight(), footHeight = $('#toolbar_0').outerHeight(), $window = $(window), winHeight = $window.height(), wi...

HTML - jQuery - Pagination - xPager

圖片
前陣子因為工作上的需要,參考一些網路資源,做了一個自己的 jQuery Pagination 元件。 這個元件的優點在於: 1. 可以在初始化時不給資料總數。 2. 可以動態變更每頁資料筆數。 3. 可以直接跳到指定的頁數。 4. 會顯示瀏覽資訊。 這是範例圖: 下載路徑 (內含範例): https://drive.google.com/file/d/0B0kC-urN3g_jYmRBejBzX1hlS3M/edit?usp=sharing

jQuery - css - dynamic change style

圖片
最近工作上所開發的網頁系統,打算把切換介面風格的功能做上去,於是研究了一下如何動態改變CSS並且套用,發現還挺簡單的~ 只需要置換網頁所Link的CSS file即可 ,以下弄個實際範例,透過jQuery來操作: 首先我們建立一個簡單的網頁 <html> <head> <title>Sample</title> <link rel="stylesheet" type="text/css" href="style_1.css" class="pagestyle" id="style_1" /> <script type="text/javascript" src="jquery-1.10.1.min.js"></script> <script type="text/javascript"> </script> </head> <body> <div class="outborder" id="div_1"> <div class="inline">Sample text</div> </div> </body> </html> 這個網頁所使用的CSS file為 style_1.css ,其內容如下: /*  *  Style 1  */ body { text-align:center; } .outborder { padding:5px;  background:red ; } .inline { padding:5px;  color:black; font-size:40px; font-weight:bold;  background:yellow ; } 接下來我們建立第二種風格,檔案為 style_2.css...

jQuery - header & floating menu - dynamic detect & adjust

圖片
相信很多人都有手機相關APP的使用經驗,這些APP的介面,大多最上方會有一個Header,Header裡面可能放了一些主題名稱、功能按鈕等等。接著,我們按了某個按鈕之後,最常看到就是會跑出一個功能選單,這個功能選單是蓋在內容上方的,如圖: 我昨天花了點時間,使用HTML及CSS,把這東西實做出來了,基本上的技巧就是延續之前介紹footer的做法,透過css設定 position:fixed; 以固定Header及Menu的位置,然後內容Content上方保留一些空間, padding Header的高度。 本來以為這樣就很棒了,Perfect!但今天測試的時候發現一個問題!由於我的Title是依照顯示內容會動態改變,當這個Title文字過長而換行的時候,糟糕了,那個位置固定的話就會錯亂,如下: 看到了嗎?Menu選單顯示時應該下移一點配合Header的高度,而且Content第一行也被Header蓋住了!所以怎麼解決這問題呢?我今天想來想去,目前想到的做法是,當Header高度有改變的時候,我就跟著調整Menu跟Content的位置設定。而這個方法要完成,需要解決兩件事情,第一件事情是我要知道Header的實際高度,而第二件事情是,高度改變的時候要觸發處理事件。 先從第一件事情來,在jQuery裡有個方法叫 outerHeight() ,它會回傳我們所選取物件目前的實際高度。我們取得實際高度之後,接著去設定Menu及Content,如下: function HeaderResize() { // Header高度變動時,動態調整Page及Menu顯示的位置 var headerHeight = $('#header_title') .outerHeight (); $('#PopupMenu').css('top', headerHeight); $('#content').css('padding', headerHeight + ' 0 0 0'); } 接著第二件事情就是,我們要在高度改變的時候觸發這個處理function。高度改變有兩種狀況,第一種狀況是我們在瀏覽的時候改變了視窗大小而導致Title...