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
}
);