Dom7 - 自定义DOM库
Framework7不使用任何第三方库,即使是用于DOM操作。它有自己的自定义DOM7 - DOM库,该库利用了大多数边缘和高性能的DOM操作方法。你不需要学习新东西,它的使用非常简单,因为它具有与众所周知的jQuery库相同的语法,并支持最流行和广泛使用的方法和jQuery式的链式调用。
要开始使用它,有一个Dom7
全局window函数,但我们建议将其分配给一个具有更方便名称的局部变量,如$$
,但不为"$"以防止与其他库(如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相同的参数:
类 | |
---|---|
.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, 值) | 存储与匹配元素关联的任意数据
|
.data(key) | 返回集合中第一个元素在命名数据存储中的值,该值由data(key, value)或HTML5 data-*属性设置
或
|
.removeData(key) | 移除指定的数据
|
数据集 | |
.dataset() | 返回元素的 dataSet(数据-属性集)作为普通对象
|
CSS转换,过渡 | |
.transform(CSSTransformString) | 添加带前缀的CSS转换属性:
|
.transition(transitionDuration) | 将CSS transition-duration属性设置为集合:
|
事件 | |
.on(eventName, 处理程序, useCapture) | 为选定的元素添加一个或多个事件的事件处理函数。
|
.on(eventName, delegatedTarget, 处理程序, useCapture) | 活动委托事件处理程序
|
.once(eventName, 处理程序, useCapture) | 为选定的元素添加一个或多个事件的事件处理函数,该函数只执行一次
|
.once(eventName, delegatedTarget, 处理程序, useCapture) | 活动委托事件处理程序,该程序只执行一次
|
.off(eventName, 处理程序, useCapture) | 移除事件处理程序
|
.off(eventName, delegatedTarget, 处理程序, useCapture) | 移除活动委托事件处理程序
|
.trigger(eventName, eventData) | 为匹配元素执行指定事件的所有处理程序 |
.transitionStart(回调) | 为集合添加带前缀的transitionStart事件处理程序 |
.transitionEnd(回调, permanent) | 为集合添加带前缀的transitionEnd事件处理程序:
|
.animationEnd(回调) | 为集合添加带前缀的animationEnd事件处理程序:
|
样式 | |
.width() | 获取匹配元素集中第一个元素当前的计算宽度
|
.outerWidth([includeMargin]) | 获取匹配元素集中第一个元素当前的计算宽度,包括填充和边框,以及margin(如果includeMargin是true)
|
.height() | 获取匹配元素集中第一个元素当前的计算高度
|
.outerHeight([includeMargin]) | 获取匹配元素集中第一个元素当前的计算高度,包括填充和边框,以及margin(如果includeMargin是true)
|
.offset() | 获取匹配元素相对于文档的当前坐标
|
.hide() | 将"display:none"设置为匹配的元素
|
.show() | 将"display:block"设置为匹配的元素
|
.css(属性加载,则无法正常工作) | 获取第一个元素的指定CSS属性的值:
|
.css(属性加载,则无法正常工作, 值) | 将指定的CSS属性设置为匹配的元素:
|
.css(propertiesObject) | 将多个CSS属性设置为匹配的元素:
|
滚动 | |
.scrollTop() | 获取元素scrollTop位置 |
.scrollTop(位置, 持续时间, 回调) | 在"duration"(以毫秒为单位)期间使用动画设置scrollTop"位置"。如果未指定duration,则将立即设置滚动顶位置。如果您指定了"callback"函数,则它将在滚动完成后执行 |
.scrollLeft() | 获取元素scrollLeft位置 |
.scrollLeft(位置, 持续时间, 回调) | 在"duration"(以毫秒为单位)期间使用动画设置scrollLeft"位置"。如果未指定duration,则将立即设置滚动左位置。如果您指定了"callback"函数,则它将在滚动完成后执行 |
.scrollTo(左, 顶部, 持续时间, 回调) | 在"duration"(以毫秒为单位)期间使用动画设置滚动左和滚动顶位置。如果未指定duration,则将立即设置滚动位置。如果您指定了"callback"函数,则它将在滚动完成后执行 |
DOM操作 | |
.add(elements) | 使用添加到匹配元素集中的元素创建一个新的Dom7集合:
|
.each(回调) | 遍历集合,为每个匹配的元素执行回调函数 |
.html() | 获取匹配元素集中第一个元素的HTML内容 |
.html(newInnerHTML) | 设置每个匹配元素的HTML内容 |
.text() | 获取匹配元素集中第一个元素的文本内容 |
.text(newTextContent) | 设置每个匹配元素的文本内容 |
.is(CSSSelector) | 将当前匹配的元素集与CSS选择器进行比较 |
.is(HTMLElement) | 将当前匹配的元素集与HTML元素或Dom7集合进行比较 |
.index() | 返回第一个元素在其兄弟元素相对于Dom7集合中的位置 |
.eq(index) | 将匹配的元素集减少到指定索引处的元素 |
.append(HTMLString) | 将内容插入到每个匹配元素集的末尾 |
.append(HTMLElement) | 将指定的HTML元素插入到匹配元素集的每个元素的末尾 |
.appendTo(HTMLElement) | 将内容/元素插入到参数中指定的元素的末尾 |
.prepend(newHTML) | 将内容插入到每个匹配元素集的每个元素的开始处 |
.prepend(HTMLElement) | 将指定的HTML元素插入到匹配元素集的每个元素的开始处 |
.prependTo(HTMLElement) | 将内容/元素插入到参数中指定的元素的开始处 |
.insertBefore(target) | 将匹配元素集中的每个元素插入到目标之前。目标可以是CSS选择器或HTML元素或Dom7集合 |
.insertAfter(target) | 将匹配元素集中的每个元素插入到目标之后。目标可以是CSS选择器或HTML元素或Dom7集合 |
.next([selector]) | 获取匹配元素集中每个元素的下一个同级元素。如果提供了选择器,则仅检索与该选择器匹配的下一个同级元素 |
.nextAll([selector]) | 获取匹配元素集中每个元素的所有后续同级元素,可选地通过选择器进行过滤 |
.prev([selector]) | 获取匹配元素集中每个元素的下一个同级元素,可选地通过选择器进行过滤 |
.prevAll([selector]) | 获取匹配元素集中每个元素的所有前序同级元素,可选地通过选择器进行过滤 |
.siblings([selector]) | 获取匹配元素集中每个元素的兄弟元素,可选地通过选择器进行过滤 |
.parent([selector]) | 获取当前匹配元素集中的每个元素的第一个父元素,可选地通过选择器进行过滤 |
.parents([selector]) | 获取当前匹配元素集中每个元素的祖先元素,可选地通过选择器进行过滤 |
.closest([selector]) | 对于集合中的每个元素,通过测试元素本身并通过遍历DOM树中的其祖先来获取第一个匹配选择器的元素 |
.find(selector) | 获取当前匹配元素集中每个元素的子孙元素,通过选择器进行过滤 |
.children(selector) | 获取匹配元素集中每个元素的子元素,可选地通过选择器进行过滤 |
.filter(回调) | 过滤元素集合
|
.remove() | 从Dom中移除/分离匹配的元素 |
.empty() | 从匹配元素集中删除所有子节点。的别名.html('') |
简便方法 | |
.click() | 在集合上触发"click"事件 |
.click(处理程序) | 向集合添加"click"事件处理程序 |
.blur() | 在集合上触发"blur"事件 |
.blur(处理程序) | 向集合添加"blur"事件处理程序 |
.focus() | 在集合上触发"focus"事件 |
.focus(处理程序) | 向集合添加"focus"事件处理程序 |
.focusin() | 在集合上触发"focusin"事件 |
.focusin(处理程序) | 向集合添加"focusin"事件处理程序 |
.focusout() | 在集合上触发"focusout"事件 |
.focusout(处理程序) | 向集合添加"focusout"事件处理程序 |
.keyup() | 在集合上触发"keyup"事件 |
.keyup(处理程序) | 向集合添加"keyup"事件处理程序 |
.keydown() | 在集合上触发"keydown"事件 |
.keydown(处理程序) | 向集合添加"keydown"事件处理程序 |
.keypress() | 在集合上触发"keypress"事件 |
.keypress(处理程序) | 向集合添加"keypress"事件处理程序 |
.submit() | 在集合上触发"submit"事件 |
.submit(处理程序) | 向集合添加"submit"事件处理程序 |
.change() | 在集合上触发"change"事件 |
.change(处理程序) | 向集合添加"change"事件处理程序 |
.mousedown() | 在集合上触发"mousedown"事件 |
.mousedown(处理程序) | 向集合添加"mousedown"事件处理程序 |
.mousemove() | 在集合上触发"mousemove"事件 |
.mousemove(处理程序) | 向集合添加"mousemove"事件处理程序 |
.mouseup() | 在集合上触发"mouseup"事件 |
.mouseup(处理程序) | 向集合添加"mouseup"事件处理程序 |
.mouseenter() | 在集合上触发"mouseenter"事件 |
.mouseenter(处理程序) | 向集合添加"mouseenter"事件处理程序 |
.mouseleave() | 在集合上触发"mouseleave"事件 |
.mouseleave(处理程序) | 向集合添加"mouseleave"事件处理程序 |
.mouseout() | 在集合上触发"mouseout"事件 |
.mouseout(处理程序) | 向集合添加"mouseout"事件处理程序 |
.mouseover() | 在集合上触发"mouseover"事件 |
.mouseover(处理程序) | 向集合添加"mouseover"事件处理程序 |
.touchstart() | 在集合上触发"touchstart"事件 |
.touchstart(处理程序) | 向集合添加"touchstart"事件处理程序 |
.touchend() | 在集合上触发"touchend"事件 |
.touchend(处理程序) | 向集合添加"touchend"事件处理程序 |
.touchmove() | 在集合上触发"touchmove"事件 |
.touchmove(处理程序) | 向集合添加"touchmove"事件处理程序 |
.resize(处理程序) | 向集合添加"resize"事件处理程序 |
.scroll(处理程序) | 向集合添加"scroll"事件处理程序 |
动画
.animate(属性, 参数)- 执行一组CSS属性的定制动画
- 属性 - 对象- 要动画的CSS属性
- 参数 - 对象- 动画参数
返回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
}
);