Dom7 - 自訂 DOM 函式庫
Framework7 沒有使用任何第三方函式庫,即使是針對 DOM 操作。它有自己的自訂 DOM7 - DOM 函式庫,利用大多數邊緣和高性能的方法進行 DOM 操作。您不需要學習新的東西,它的用法非常簡單,因為它具有與著名的 jQuery 函式庫相同的語法,支援最受歡迎和廣泛使用的函式和類 jQuery 的串接。
要開始使用它,有一個 Dom7
全域視窗函式,但我們建議將它指定給一些具有更方便名稱的區域變數,例如 $$
,但不要指定為 "$",以防止與其他函式庫(如 jQuery 或 Zepto)發生衝突
//Export DOM7 to local variable to make it easy accessible
var $$ = Dom7;
使用範例
您所知道的一切
$$('.something').on('click', function (e) {
$$(this).addClass('hello').attr('title', 'world').insertAfter('.something-else');
});
可用函式
所有這些函式的工作方式和參數幾乎與 jQuery 或 Zepto 中相同
$$(window).trigger('resize');
類別 | |
---|---|
.addClass(className) | 將類別新增至元素
|
.removeClass(className) | 移除指定的類別
|
.hasClass(className) | 判斷是否將任何符合的元素指定給定類別
|
.toggleClass(className) | 移除(如果類別存在)或新增(如果不存在)一個或多個類別至符合元素組中的每個元素
|
屬性和特性 | |
.prop(propName) | 取得屬性值
|
.prop(propName, propValue) | 設定單一屬性值
|
.prop(propertiesObject) | 設定多個屬性
|
.attr(attrName) | 取得屬性值
|
.attr(attrName, attrValue) | 設定單一屬性值
|
.attr(attributesObject) | 設定多個屬性
|
.removeAttr(attrName) | 移除指定的屬性
|
.val() | 取得相符元素集中第一個元素的目前值
|
.val(newValue) | 設定每個相符元素的值
|
資料儲存 | |
.data(key, value) | 儲存與相符元素相關的任意資料
|
.data(key) | 傳回集合中第一個元素的命名資料儲存區的值,由 data(key, value) 或 HTML5 data-* 屬性設定
或
|
.removeData(key) | 移除指定資料
|
資料集 | |
.dataset() | 傳回元素的資料集(data- 屬性的集合)作為一般物件
|
CSS 轉換、轉場 | |
.transform(CSSTransformString) | 加入前置 CSS 轉換屬性
|
.transition(transitionDuration) | 設定集合的 CSS transition-duration 屬性
|
事件 | |
.on(eventName, handler, useCapture) | 將事件處理函式新增到一個或多個事件,以選取元素。
|
.on(eventName, delegatedTarget, handler, useCapture) | 即時/委派事件處理函式
|
.once(eventName, handler, useCapture) | 將事件處理函式新增到一個或多個事件,以選取元素,這些事件只會執行一次
|
.once(eventName, delegatedTarget, handler, useCapture) | 即時/委派事件處理函式,只會執行一次
|
.off(eventName, handler, useCapture) | 移除事件處理函式
|
.off(eventName, delegatedTarget, handler, useCapture) | 移除即時/委派事件處理函式
|
.trigger(eventName, eventData) | 執行所有已新增到相符元素的處理函式,以取得指定的事件 |
.transitionStart(callback) | 將前置 transitionStart 事件處理函式新增到集合 |
.transitionEnd(callback, permanent) | 將前置 transitionEnd 事件處理函式新增到集合
|
.animationEnd(callback) | 將前置 animationEnd 事件處理函式新增到集合
|
樣式 | |
.width() | 取得相符元素集中第一個元素的目前計算寬度
|
.outerWidth([includeMargin]) | 取得第一個匹配元素的目前計算寬度,包含內邊距、邊框和外邊距(如果 includeMargin 為 true)
|
.height() | 取得第一個匹配元素的目前計算高度
|
.outerHeight([includeMargin]) | 取得第一個匹配元素的目前計算高度,包含內邊距、邊框和外邊距(如果 includeMargin 為 true)
|
.offset() | 取得第一個元素相對於文件的目前座標
|
.hide() | 將「display:none」設定為匹配元素
|
.show() | 將「display:block」設定為匹配元素
|
.css(property) | 取得第一個元素指定 CSS 屬性的值
|
.css(property, value) | 將指定 CSS 屬性設定為匹配元素
|
.css(propertiesObject) | 將多個 CSS 屬性設定為匹配元素
|
捲動 | |
.scrollTop() | 取得元素的 scrollTop 位置 |
.scrollTop(position, duration, callback) | 在「duration」(以毫秒為單位)期間,以動畫方式設定 scrollTop「position」。如果未指定 duration,將立即設定捲動頂部位置。如果您指定了「callback」函式,則在捲動完成後將執行此函式 |
.scrollLeft() | 取得元素的 scrollLeft 位置 |
.scrollLeft(position, duration, callback) | 在「duration」(以毫秒為單位)期間,以動畫方式設定 scrollLeft「position」。如果未指定 duration,將立即設定捲動左邊位置。如果您指定了「callback」函式,則在捲動完成後將執行此函式 |
.scrollTo(left, top, duration, callback) | 在「duration」(以毫秒為單位)期間,以動畫方式設定捲動左邊和捲動頂部。如果未指定 duration,將立即設定捲動位置。如果您指定了「callback」函式,則在捲動完成後將執行此函式 |
Dom 處理 | |
.add(elements) | 建立一個新的 Dom7 集合,其中包含新增到匹配元素集合的元素
|
.each(callback) | 遍歷集合,為每個匹配元素執行 callback 函式 |
.html() | 取得第一個匹配元素的 HTML 內容 |
.html(newInnerHTML) | 設定每個匹配元素的 HTML 內容 |
.text() | 取得第一個匹配元素的文字內容 |
.text(newTextContent) | 設定每個匹配元素的文字內容 |
.is(CSSSelector) | 根據 CSS 選擇器檢查目前匹配的元素集合 |
.is(HTMLElement) | 根據 HTML 元素或 Dom7 集合檢查目前匹配的元素集合 |
.index() | 傳回第一個元素在 Dom7 集合中相對於其同層元素的位置 |
.eq(索引) | 將匹配的元素組縮減至指定索引位置的元素 |
.append(HTML字串) | 將由參數指定的內容插入至匹配的元素組中每個元素的結尾 |
.append(HTML元素) | 將指定的 HTML 元素插入至匹配的元素組中每個元素的結尾 |
.appendTo(HTML元素) | 將內容/元素插入至參數中指定的元素結尾 |
.prepend(新HTML) | 將由參數指定的內容插入至匹配的元素組中每個元素的開頭 |
.prepend(HTML元素) | 將指定的 HTML 元素插入至匹配的元素組中每個元素的開頭 |
.prependTo(HTML元素) | 將內容/元素插入至參數中指定的元素開頭 |
.insertBefore(目標) | 將匹配的元素組中的每個元素插入至目標之前。目標可以指定為 CSS 選擇器、HTML 元素或 Dom7 集合 |
.insertAfter(目標) | 將匹配的元素組中的每個元素插入至目標之後。目標可以指定為 CSS 選擇器、HTML 元素或 Dom7 集合 |
.next([選擇器]) | 取得匹配的元素組中每個元素的緊鄰後一個同層元素。如果提供了選擇器,則僅當後一個同層元素符合該選擇器時才會擷取 |
.nextAll([選擇器]) | 取得匹配的元素組中每個元素的所有後一個同層元素,可選擇使用選擇器進行篩選 |
.prev([選擇器]) | 取得匹配的元素組中每個元素的緊鄰前一個同層元素,可選擇使用選擇器進行篩選 |
.prevAll([選擇器]) | 取得匹配的元素組中每個元素的所有前一個同層元素,可選擇使用選擇器進行篩選 |
.siblings([選擇器]) | 取得匹配的元素組中每個元素的同層元素,可選擇使用選擇器進行篩選 |
.parent([選擇器]) | 取得匹配的元素組中每個元素的第一個父元素,可選擇使用選擇器進行篩選 |
.parents([選擇器]) | 取得匹配的元素組中每個元素的所有祖先元素,可選擇使用選擇器進行篩選 |
.closest([選擇器]) | 對於組中的每個元素,透過測試元素本身並向上遍歷其在 DOM 樹中的祖先元素,取得第一個符合選擇器的元素 |
.find(選擇器) | 取得目前相符元素集合中每個元素的後代元素,並依選取器過濾 |
.children(selector) | 取得相符元素集合中每個元素的子元素,可選擇依選取器過濾 |
.filter(callback) | 過濾元素集合
|
.remove() | 從 Dom 中移除/分離相符元素 |
.empty() | 從 DOM 中移除相符元素集合的所有子節點。.html('') 的別名 |
捷徑 | |
.click() | 觸發集合上的「click」事件 |
.click(handler) | 將「click」事件處理常式新增至集合 |
.blur() | 觸發集合上的「blur」事件 |
.blur(handler) | 將「blur」事件處理常式新增至集合 |
.focus() | 觸發集合上的「focus」事件 |
.focus(handler) | 將「focus」事件處理常式新增至集合 |
.focusin() | 觸發集合上的「focusin」事件 |
.focusin(handler) | 將「focusin」事件處理常式新增至集合 |
.focusout() | 觸發集合上的「focusout」事件 |
.focusout(handler) | 將「focusout」事件處理常式新增至集合 |
.keyup() | 觸發集合上的「keyup」事件 |
.keyup(handler) | 將「keyup」事件處理常式新增至集合 |
.keydown() | 觸發集合上的「keydown」事件 |
.keydown(handler) | 將「keydown」事件處理常式新增至集合 |
.keypress() | 觸發集合上的「keypress」事件 |
.keypress(handler) | 將「keypress」事件處理常式新增至集合 |
.submit() | 觸發集合上的「submit」事件 |
.submit(handler) | 將「submit」事件處理常式新增至集合 |
.change() | 觸發集合上的「change」事件 |
.change(handler) | 將「change」事件處理常式新增至集合 |
.mousedown() | 觸發集合上的「mousedown」事件 |
.mousedown(handler) | 將「mousedown」事件處理常式新增至集合 |
.mousemove() | 觸發集合上的「mousemove」事件 |
.mousemove(handler) | 將「mousemove」事件處理常式新增至集合 |
.mouseup() | 觸發集合上的「mouseup」事件 |
.mouseup(handler) | 將「mouseup」事件處理常式新增至集合 |
.mouseenter() | 觸發集合上的「mouseenter」事件 |
.mouseenter(handler) | 將「mouseenter」事件處理常式新增至集合 |
.mouseleave() | 觸發集合上的「mouseleave」事件 |
.mouseleave(handler) | 將「mouseleave」事件處理常式新增至集合 |
.mouseout() | 觸發集合上的「mouseout」事件 |
.mouseout(handler) | 將「mouseout」事件處理常式新增至集合 |
.mouseover() | 觸發集合上的「mouseover」事件 |
.mouseover(handler) | 將「mouseover」事件處理常式新增至集合 |
.touchstart() | 在集合上觸發「touchstart」事件 |
.touchstart(handler) | 將「touchstart」事件處理常式新增至集合 |
.touchend() | 在集合上觸發「touchend」事件 |
.touchend(handler) | 將「touchend」事件處理常式新增至集合 |
.touchmove() | 在集合上觸發「touchmove」事件 |
.touchmove(handler) | 將「touchmove」事件處理常式新增至集合 |
.resize(handler) | 將「resize」事件處理常式新增至集合 |
.scroll(handler) | 將「scroll」事件處理常式新增至集合 |
動畫
.animate(properties, parameters)- 執行一組 CSS 屬性的自訂動畫
- properties - object - 要動畫化的 CSS 屬性
- parameters - object - 動畫參數
傳回 Dom7 集合
$$('#animate-me').animate(
/* CSS properties to animate, e.g.: */
{
'margin-left': 100,
'width': 200,
'height': 300,
'opacity': 0.5
},
/* Animation parameters */
{
// Animation duration in ms, optional (default to 300)
duration: 300,
// Animation easing, optional (default to 'swing'), can be also 'linear'
easing: 'swing',
/* Callbacks */
// Animation begins, optional
begin: function (elements) {
console.log('animation began');
},
// Animation completed, optional
complete: function (elements) {
console.log('animation completed');
},
// Animation in progress, optional
progress: function (elements, complete, remaining, start) {
/* Where
complete - The call's completion percentage (as a decimal value)
remaining - How much time remains until the call completes (in ms)
start - The absolute time at which the call began (in ms)
*/
console.log('animation in progress');
}
}
);
它也支援串接佇列
$$('#animate-me')
.animate(
{
'margin-left': 100,
'width': 200,
'height': 300,
'opacity': 0.5
}
)
.animate(
{
'width': 50,
'height': 50
}
);