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 transform 属性 |
| .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,则立即设置 scrollTop 位置。如果指定了 "callback" 函数,则在滚动完成后执行该函数。 |
| .scrollLeft() | 获取元素的 scrollLeft 位置。 |
| .scrollLeft(position, duration, callback) | 在 "duration"(以毫秒为单位)时间内以动画方式设置 scrollLeft "position"。如果没有指定 duration,则立即设置 scrollLeft 位置。如果指定了 "callback" 函数,则在滚动完成后执行该函数。 |
| .scrollTo(left, top, duration, callback) | 在“duration”(以毫秒为单位)时间内使用动画设置滚动条左侧位置和滚动条顶部位置。如果未指定持续时间,则将立即设置滚动位置。如果您已指定“callback”函数,则它将在滚动完成后执行 |
| DOM 操作 | |
| .add(elements) | 创建一个新的 Dom7 集合,并将元素添加到匹配元素集中 |
| .each(callback) | 迭代集合,为每个匹配的元素执行回调函数 |
| .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([选择器]) | 获取匹配元素集合中每个元素的兄弟元素,可以选择使用选择器进行过滤 |
| .parent([选择器]) | 获取当前匹配元素集合中每个元素的第一个父元素,可以选择使用选择器进行过滤 |
| .parents([选择器]) | 获取当前匹配元素集合中每个元素的所有祖先元素,可以选择使用选择器进行过滤 |
| .closest([选择器]) | 对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先元素,获取与选择器匹配的第一个元素 |
| .find(选择器) | 获取当前匹配元素集合中每个元素的所有后代元素,并使用选择器进行过滤 |
| .children(选择器) | 获取匹配元素集合中每个元素的子元素,可以选择使用选择器进行过滤 |
| .filter(回调函数) | 过滤元素集合 |
| .remove() | 从 DOM 中移除/分离匹配的元素 |
| .empty() | 从 DOM 中移除匹配元素集合的所有子节点。 这是 .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(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 - 对象 - 要进行动画处理的 CSS 属性
- parameters - 对象 - 动画参数
返回 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
}
);

