⑴ 如何使用iscroll.js插件
如何使用iscroll.js插件
A-A+
前端博客•前端開發資源|移動前端開發•javaScript|JavaScript插件•5010View0
文章目錄
入門
初始化
參數配置
理解核心
滾動條
滾動的編程介面
scrollTo(x, y, time, easing)
scrollBy(x, y, time, easing)
scrollToElement(el, time, offsetX, offsetY, easing)
對齊
goToPage(x, y, time, easing)
縮放
刷新
自定義事件
按鍵綁定
滾動條信息
銷毀
這篇文章講到了iscroll的一些使用入門、參數配置和示例,並講到了滾動條的介面,自定義事件和銷毀動作等。原文:iscroll.js的使用
入門
Scroll是一個類,每個需要使用滾動功能的區域均要進行初始化。每個頁面上的iScroll實例數目在設備的CPU和內存能承受的范圍內是沒有限制的。
盡可能保持DOM結構的簡潔。iScroll使用硬體合成層但是有一個限制硬體可以處理的元素。
最佳的HTML結構如下:
iScroll作用於滾動區域的外層。在上面的例子中,UL元素能進行滾動。只有容器元素的第一個子元素能進行滾動,其他子元素完全被忽略。
最基本的腳本初始化的方式如下:
**第一個參數可以是滾動容器元素的DOM選擇器字元串**,**也可以是滾動容器元素的引用對象**。下面是一個有效的語法:
所以基本上你要麼直接傳遞元素,要麼傳遞一個querySelector字元串。因此可以使用css名稱代替ID去選擇一個滾動器容器,如下:
注意,iScroll使用的是querySelector 而不是 querySelectorAll,所以iScroll只會作用到選擇器選中元素的第一個。如果你需要對多個對象使用iScroll,你需要構建自己的循環機制。
初始化
當DOM准備完成後iScroll需要被初始化。最保險的方式是在w**indow的onload事件中啟動它**。
在**DOMContentLoaded**事件中或者**inline initialization**中做也可以,需要記住的是腳本需要知道滾動區域的高度和寬度。***如果你有一些圖片在滾動區域導致不能立馬獲取區域的高度和寬度,iScroll的滾動尺寸有可能會錯誤***。
為滾動起容器增加position:relative或者absolute樣式。這將解決大多數滾動器容器大小計算不正確的問題。
綜上所述,最小的iScroll配置如下:
**註:**如果你有一個復雜的DOM結構,最好在onload事件之後適當的延遲,再去初始化iScroll。最好給瀏覽器100或者200毫秒的間隙再去初始化iScroll。
參數配置
在iScroll初始化階段可以通過構造函數的第二個參數配置它。
上面的例子示例了在iScroll初始化時開啟滑鼠滾輪支持和滾動條支持。
理解核心
iScroll使用基於設備和瀏覽器性能的各種技術來進行滾動。通常不需要你來配置引擎,iScroll會為你選擇最佳的方式。
盡管如此,理解iScroll工作機制和了解如何去配置他們也是很重要的。
options.useTransform
默認情況下引擎會使用**CSStransform**屬性。如果現在還是2007年,那麼可以設置這個屬性為false,這就是說:引擎將使用top/left屬性來進行滾動。
這個屬性在滾動器感知到Flash,iframe或者視頻插件內容時會有用,但是需要注意:性能會有極大的損耗。
默認值:true
options.useTransition
iScroll使用**CSStransition**來實現動畫效果(動量和彈力)。如果設置為false,那麼將使用requestAnimationFrame代替。
在現在瀏覽器中這兩者之間的差異並不明顯。在老的設備上transitions執行得更好。默認值:true
options.HWCompositing
這個選項嘗試使用**translateZ(0)**來把滾動器附加到硬體層,以此來改變CSS屬性。在移動設備上這將提高性能,但在有些情況下,你可能想要禁用它(特別是如果你有太多的元素和硬體性能跟不上)。
默認值:true
*註:***如果不確定iScroll的最優配置。從性能角度出發,上面的所有選項應該設置為true。(或者更好的方式,讓他們自動設置屬性為true)。你可以嘗試這配置他們,但是要小心內存泄漏。
滾動條
滾動條不只是像名字所表達的意義一樣,在內部它們是作為indicators的引用。
一個指示器偵聽滾動條的位置並且現實它在全局中的位置,但是它可以做更多的事情。
先從最基本的開始。
options.scrollbars
正如我們在基本功能介紹中提到的,激活滾動條只需要做一件事情,這件事情就是:
當然這個默認的行為是可以定製的。
滾動的編程介面
當然還可以通過編程來進行滾動。
scrollTo(x, y, time, easing)
對應存在的一個叫做myScroll的iScroll實例,可以通過下面的方式滾動到任意的位置:
通過上面的方式將向下滾動100個像素。記住:0永遠是左上角。需要滾動你必須傳遞負數。
time 和 easing是可選項。他們控制滾動周期(毫秒級別)和動畫的擦除效果。
擦除功能是一個有效的IScroll.utils.ease對象。例如應用一個一秒的經典擦除動畫你應該這么做:
擦除動畫的類型選項有:quadratic, circular, back, bounce, elastic。
scrollBy(x, y, time, easing)
和上面一個方法類似,但是可以傳遞X和Y的值從當前位置進行滾動。
上面這個語句將在當前位置向下滾動10個像素。如果你當前所在位置為-100,那麼滾動結束後位置為-110.
scrollToElement(el, time, offsetX, offsetY, easing)
這是一個很有用的方法,你會喜歡它的。
在這個方法中只有一個強制的參數就是el。傳遞一個元素或者一個選擇器,iScroll將嘗試滾動到這個元素的左上角位置。
time是可選項,用於設置動畫周期。
offsetX 和 offsetY定義像素級的偏移量,所以你可以滾動到元素並且加上特別的偏移量。但並不僅限於此。如果把這兩個參數設置為true,元素將會位於屏幕的中間。
easing參數和scrollTo方法里的一樣。
對齊
iScroll能對齊到固定的位置和元素。
options.snap
最簡單的對齊配置如下:
這將按照頁面容器的大小自動分割滾動條。
snap屬性也可以傳遞字元類型類型的值。這個值是滾動條將要對齊到的元素的選擇器。比如下面:
這個示例中滾動條將會對齊到每一個LI標記的元素。
下面將幫助你快速瀏覽iScroll提供的關於對齊的一系列有趣的方法。
goToPage(x, y, time, easing)
x 和 y呈現你想滾動到橫向軸或者縱向軸的頁面數。如果你需要在單個唯獨上使用滾動條,只需要為你不需要的軸向傳遞0值。
time屬性是動畫周期,easing屬性是滾動到指定點使用的擦除功能類型。請參考高級功能中的option.bounceEasing。這兩個屬性都是可選項。
myScroll.goToPage(10, 0, 1000);
上面這個例子將在一秒內沿著橫向滾動到第10頁。
next()
prev()
滾動到當前位置的下一頁或者前一頁。
縮放
為了使用縮放功能,你最好使用iscroll-zoom.js腳本。
和前面的示例一樣,一個好的縮放功能的配置如下:
刷新
iScroll需要知道包裝器和滾動器確切的尺寸,在iScroll初始化的時候進行計算,如果元素大小發生了變化,需要告訴iScroll DOM發生了變化。
下面將提供調用refresh方法的正確時機。
每次觸摸DOM,瀏覽器渲染器重繪頁面。一旦發生了重畫我們可以安全地讀新的DOM屬性。重新繪制階段不是瞬時發生的只是范圍結束時觸發。這就是為什麼我們需要給渲染器刷新iScroll之前一點時間。
為了確保javascript得到更新後的屬性,應該像下面的例子這樣使用刷新方法:
這里調用refresh()使用了零秒等待,如果你需要立即刷新iScroll邊界就是如此使用。當然還有其他方法可以等待頁面重繪,但零超時方式相當穩定。
**註:***如果你有一個相當復雜的HTML結構,你應該給瀏覽器更多的執行事件,可以設置100到200毫秒的超時時間。
這通常適用於所有任務必須在DOM上進行。通常給渲染器一些執行的時間。*
自定義事件
iScroll還提供額一些你可以掛靠的有用的自定義事件。
使用on(type, fn)方法注冊事件。
上面的代碼會在每次滾動停止是執行doSomething方法。
可以掛靠的事件如下:
beforeScrollStart,在用戶觸摸屏幕但還沒有開始滾動時觸發。
scrollCancel,滾動初始化完成,但沒有執行。
scrollStart,開始滾動
scroll,內容滾動時觸發,只有在scroll-probe.js版本中有效,請參考onScroll event。
scrollEnd,停止滾動時觸發。
flick,用戶打開左/右。
zoomStart,開始縮放。
zoomEnd,縮放結束。
按鍵綁定
你可以激活keyBindings選項來支持鍵盤控制。默認情況下iScroll監聽方向鍵,上下翻頁建,home/end鍵,但這些按鍵綁定完全可以自定義。
你可以通過傳遞一個包含按鍵代碼列表的對象來進行按鍵綁定。
默認的按鍵值如下:
當然你也可以傳遞字元串進行按鍵綁定(例如:pageUp: 'a')。只要你設置了對於的按鍵值,那麼iScroll就會響應你的設置。
滾動條信息
iScroll存儲了很多有用的信息,您可以使用它們來增強您的應用。
你可能會發現有用的:
myScroll.x/y,當前位置
myScroll.directionX/Y,最後的方向 (-1 down/right, 0 still, 1 up/left)
myScroll.currentPage,當前對齊捕獲點
下面是關於處理時間的代碼示例:
如果 x 位置是低於-1000 像素滾輪停止時,上述執行某些代碼。請注意我用這個產品而不是 myScroll,您可以使用兩個當然,但 iScroll 傳遞本身作為這種情況下,當觸發自定義事件的功能。
銷毀
在不需要使用iScoll的時候調用iScroll實例的公共方法destroy()可以釋放一些內存。
⑵ 撿了個蘋果手機,關機了被打進電話,求怎麼樣讓定位什麼沒有,讓他找不到,這是我最高的分了
按著關機 音量上和HOME鍵三個鍵一起按!!就能進入挖煤模式!!再開機就沒問題了。。不過你最好換內存卡!把原來的內存卡換了
⑶ 怎樣刪除用iPhone:/User/Ducuments root# ln -s / home建立的鏈
千萬別用91直接刪除那個文件,會將iPhone上的所有文件清空掉的按照你引用的帖子裡面的內容,我改了下,還是進入到/User/Document目錄下面,然後用rm home 來刪除 login root password:alpine (輸密碼時是看不見你輸的字元的哈,輸完按回車就好了,如果錯了就重新輸入login root) iPhone:~ root# cd /User/Documents (注意大小寫) iPhone:/User/Ducuments root# rm home[ 本帖最後由 jefftang 於 2009-3-6 13:06 編輯 ]
⑷ 如何實時監聽 input 和 textarea輸入框值的變化
在實際前端開發中我們經常會遇到要實時監聽用戶的輸入,根據不同的輸入值來採取不同的措施。舉一個常見的例子:我們在使用Google 搜索框進行搜索時,每多輸入一個字,搜索框下方顯示的匹配結果會實時變化。這樣的效果就是通過實時監聽搜索框的輸入值變化從而提取不同的匹配結果來實現的。
那麼,一般使用最多的輸入框就是 input 和 textarea 了。要想實時監聽這兩種輸入框的值變化,就不得不提到鍵盤事件 key event 了。
鍵盤相關事件
onkeydown
onkeypress
onkeyup
oninput
onchange
onpropertychange
onkeydown/onkeypress/onkeyup
使用這三個事件監聽輸入框值變化,不能監聽到右鍵的復制、粘貼、剪切的操作。
onkeydown
按下鍵盤上的任意鍵(不包括PrScrn鍵)時觸發;如果一直按著鍵不放,則會一直觸發此事件。
onkeypress
按下鍵盤上的可顯示字元鍵(可以參考此文的鍵盤按鍵分類一節)時觸發,如果一直按著鍵不放,則會一直觸發此事件。
onkeyup
釋放鍵盤上的任意鍵(不包括PrScrn鍵)時觸發
1、是否可以捕獲組合鍵?
onkeydown/onkeyup可以捕獲組合鍵,onkeypress 只能捕獲單個字元。
在捕獲組合鍵時建議使用 onkeyup 事件。
2、是否區分大小寫字元?
onkeypress 能區分字元的大小寫,onkeydown/onkeyup不能區分。
3、是否區分主鍵盤和小鍵盤的數字?
onkeypress不區分主鍵盤和小鍵盤的數字,onkeydown/onkeyup則可以區分。
4、觸發順序
先 onkeydown, 再 onkeypress, 最後onkeyup
參考文檔
oninput/onpropertychange
上面講到用 keydown/keypress/keyup無法監聽右鍵粘貼復制操作,於是就有了 oninput 事件。
oninput是 HTML5的新事件,可以在輸入框( textarea, input:text/password/search等)的value值發生變化時(通過 JS修改輸入值除外)立即觸發,所以可以監聽右鍵粘貼復制操作。但 IE9.0以下版本不支持,此時需要用到IE特有的 onpropertychange事件。在 Safari5.0以下版本,oninput 不支持 textarea 元素。
onpropertychange是 IE特有的事件,與 oninput不同的是,只要綁定對象的相關屬性(不單 value 值)發生變化(包括 通過JS腳本來修改)都會觸發此事件。
onchange
要觸發這個事件有2個必備條件:
1、和onpropertychange一樣,只要綁定對象的相關屬性發生了變化就會觸發此事件。但和onpropertychange不同,通過JS腳本改變屬性時無法觸發);
2、輸入框失去焦點後觸發,所以無法做到實時監聽;
鍵盤按鍵分類
鍵盤上的每一個按鍵都對應唯一的 ASCII碼值,從這個角度理解其實每一個按鍵都是字元鍵。但這些按鍵可以分為2類: ASCII碼控制字元鍵和 ASCII碼可顯示字元鍵。
ASCII碼控制字元鍵
控制字元鍵是不會產生我們能看到的字元的按鍵,這類控制字元鍵常見的有:F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵。
常見控制字元鍵對應的 ASCII碼見下:
ESC鍵 VK_ESCAPE (27)
回車鍵: VK_RETURN (13)
TAB鍵: VK_TAB (9)
Caps Lock鍵: VK_CAPITAL (20)
Shift鍵: VK_SHIFT ($10)
Ctrl鍵: VK_CONTROL (17)
Alt鍵: VK_MENU (18)
空格鍵: VK_SPACE (32)
退格鍵: VK_BACK (8)
左徽標鍵: VK_LWIN (91)
右徽標鍵: VK_LWIN (92)
滑鼠右鍵快捷鍵:VK_APPS (93)
Insert鍵: VK_INSERT (45)
Home鍵: VK_HOME (36)
Page Up: VK_PRIOR (33)
PageDown: VK_NEXT (34)
End鍵: VK_END (35)
Delete鍵: VK_DELETE (46)
方向鍵(←): VK_LEFT (37)
方向鍵(↑): VK_UP (38)
方向鍵(→): VK_RIGHT (39)
方向鍵(↓): VK_DOWN (40)
F1鍵: VK_F1 (112)
F2鍵: VK_F2 (113)
F3鍵: VK_F3 (114)
F4鍵: VK_F4 (115)
F5鍵: VK_F5 (116)
F6鍵: VK_F6 (117)
F7鍵: VK_F7 (118)
F8鍵: VK_F8 (119)
F9鍵: VK_F9 (120)
F10鍵: VK_F10 (121)
F11鍵: VK_F11 (122)
F12鍵: VK_F12 (123)
ASCII碼可顯示字元鍵
可顯示字元鍵是會產生我們能看到的字元的按鍵,這類按鍵常見得有:數字(包括 shift+數字)、字母(大小寫)、小鍵盤。
常用可顯示字元鍵ASCII碼如下:
65 A 鍵
66 B 鍵
67 C 鍵
68 D 鍵
69 E 鍵
70 F 鍵
71 G 鍵
72 H 鍵
73 I 鍵
74 J 鍵
75 K 鍵
76 L 鍵
77 M 鍵
78 N 鍵
79 O 鍵
80 P 鍵
81 Q 鍵
82 R 鍵
83 S 鍵
84 T 鍵
85 U 鍵
86 V 鍵
87 W 鍵
88 X 鍵
89 Y 鍵
90 Z 鍵
鍵盤按鍵 ASCII 碼對應表