zBase --轻量级DOM操作库

项目地址:ZengTianShengZ-github

zBase-1.2.0 --v3

  • 修复部分bug,添加AMD规范测试

zBase-1.1.0 --v2

  • 对 v1 版本做了升级,优化DOM查找,简化API,提高代码可读性,支持模块化
  • 支持 AMD & CommonJS

zBase-1.0.0 --v1

  • 没有任何依赖
  • 轻量级的Dom操作库,封装一些常用的css选择器和事件操作等

Quick start

$ npm install
$ gulp scripts

使用npm安装 zBase:

$ npm install zbase

Usage

#require
var base = require(‘zbase‘);

#es6
import Base from ‘zbase‘;

#script
<script type="text/javascript" src="lib/zBase-1.2.0.js"></script>

一、节点的查找:

1、一般查找:

语法 概述
$(‘div_id‘) id = ‘div_id‘ 的元素
$(‘p‘) 所有 p 标签的元素
$(‘.className‘) 所有 class = ‘className‘ 的元素
   
$(this) 当前 HTML 元素

2、组合查找
在此前提下,你还可以任意组合,得到你所需要的节点,如:

语法 概述
$(‘div_id p‘) id = ‘div_id‘ 节点下的 所有 p 元素(注意中间空格)
$(‘.name1 .name2‘) 所有class = ‘name1 ‘ 下的所有 class = ‘name1 ‘元素
$(‘p a‘) 所有 p 标签下的 a 标签元素

3、find查找
利用 find() 方法来查找:

语法 概述
$(‘p‘).find(‘a‘) 所有 p 标签下的 a 标签元素
$(‘.name1‘).find(‘.name2‘) 所有class = ‘name1 ‘ 下的所有 class = ‘name1 ‘元素
$(‘#div_1‘).find(‘div_2‘) 注意这样也是行的,但没什么意义,最后得到的是 id= ‘div_2‘ 的元素,与 id= ‘div_2‘没关系

二 、操作节点

1、.addClass()

//给 所有 p 标签 添加 一个‘name_1‘  的class

$(‘p‘).addClass(‘name_1‘)
//添加多个  className
$(‘p‘).addClass(‘name_1 name_2‘)

2、.removeClass()

//给 所有 p 标签 移除 一个‘name_1‘  的className
$(‘p‘).removeClass(‘name_1‘)
//移除多个  removeClass
$(‘p‘).removeClass(‘name_1 name_2‘)

3、获取第几个节点 .getE()
注意.getE() 返回的是 dom元素,所以后面不能再执行链式操作

//得到 ul 里面的 第 3 个 li节点
$(‘ul li‘).getE(2)

4、getElement 获取第几个节点

与第 3 条不同的是 .getElement() 返回的是 当前对象,所以后面可以再执行链式操作

//得到 ul 里面的 第 3 个 li节点
$(‘ul li‘).getElement(2) .css(‘color‘,‘red‘);

5、css方法

// 给所有 p 标签 添加 color样式
 $(‘p‘).css(‘color‘,‘red‘);
// 给所有 p 标签 添加多组样式
 $(‘p‘).css({
        "color":"red",
        "background":"blue"
    });

说明

// 当 参数只有一个时,获取该值
 $(‘p‘).css(‘color‘);

6、获取 或 设置 某一节点的属性 .arrt()

// 给所有 p 标签 添加 age 属性
$(‘p‘).arrt("age","233");

// 当参数只有一个时 , 获得 p 标签下的属性值
$(‘p‘).arrt("age");

7、html()获取或设置html

// 给所有 p 标签 设置 html
$(‘p‘).html("I love JavaScript!");

// 得到 html 值
$(‘p‘).html("age");

三、事件操作

1、隐藏标签 show 和 hide方法

$(‘p‘).show();

$(‘p‘).hide();

2、hover()鼠标的移入移出事件;

// hover传递两个函数,分别 用于处理 鼠标移入事件 和 鼠标移出 事件

 $(‘span‘).hover(function () {
        $(‘span‘).css("color","red");
    },function () {
        $(‘span‘) .css("color","blue");
    });

3、addEvent(ele,type,fun) 添加事件 ;
这里做了兼容 IE6、7、8
参数:ele:添加事件的元素节点 , type:事件类型(click,movie等),fun:执行事件函数
注意:第一个参数为元素节点,可用上面提到的 getE() 来获得

 addEvent($(‘#div_id‘).getE(0),‘click‘,function () {
        alert(" 啊 ,我被点击啦~~~ ");
    });

4、removeEvent(ele,type,fun) 移除事件

//添加事件
 addEvent($(‘#div_id‘).getE(0),‘click‘,f_click);
// 移除事件
 removeEvent($(‘#div_id‘).getE(0),‘click‘,f_click);

 function f_click() {
    alert(" 啊 ,我被点击啦~~~ ");
 }

5、绑定事件 bind();

// 给所有的 span 标签 绑定点击事件

 $(‘span‘).bind(‘click‘,function () {
        console.log("........"+this);  //  ....[object HTMLSpanElement]
    });

四、animate动画

animate(obj);

/
 * @param attr 样式 ,一般是 left 或 top
 * @param start 开始的位置
 * @param step 移动的距离
 * @param target 移动的终点
 * @param t 每次移动的毫秒
/
    $(‘#div_id‘).animate({
        ‘attr‘:‘x‘,
        ‘start‘:100,
        ‘t‘:500,
        ‘step‘:10,
        ‘alter‘:550
    });

五、一些工具方法

1、设置元素处在 视口中间位置 .centerInWindow()

传递的两个参数分别是 元素自身的 的 宽 和 高;

// 传递的两个参数分别是 元素自身的 的 宽 和 高;
 $(‘#div_id‘).centerInWindow(100,100);

2、获取当前视口的大小 $().getInner();
返回 obj ,兼容 IE

  console.log("...width....."+  $().getInner().width);
  console.log("...height....."+ $().getInner().height);

3、获取 浏览器滚动条的距离 $().getScroll()

 console.log("...top....."+ $().getScroll().top);
console.log("...top....."+  $().getScroll().left);

4、图片预加载 $().preprocessorImage(obj)

参数 obj :一个对象,里面是 图片的 链接数组 和 回调函数,如下例子:
加载完图片,再将 <img 标签插入 div 里面

 $().preprocessorImage({
                img_array:[‘http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1209/10/c1/13764273_1347270360314_800x600.jpg‘,
                    ‘https://cloud.githubusercontent.com/assets/15622519/18378764/61d0b4be-76a1-11e6-9571-36d785a35e56.png‘],

                callback:function (img_src) {

                    $(‘#img-div‘).html( ‘![](‘+  img_src +‘)‘);
                }
            });

六、添加插件

zBase库还支持扩展插件:

// 加载在 zBase.js 的后面
<script  src="../js/zBase_drag.js"></script>

那么这个js插件需要 用 $().extend(‘name‘,fun) 来扩展
参数:第一个参数为 插件的名称,第二个参数是 插件的实现函数

$().extend("drag",function () {

        // your code here...
}

那怎么调用写好的插件呢? 比如我上面写了是一个 盒子拖拽的插件,那么我直接调用

 $(‘#div_id‘).drag();

此时,id = div_id 的元素就有了拖拽的功能了(前提这个 div 必须 position: absolute;)
关于 zBase_drag.js 插件源码可以查看的到。

有了插件扩展是不是很方便呢,可以为 zBase 库 扩展跟多自己实用的功能。

七、ajax封装

引入zBase-ajax.js文件:

<script src="../js/zBase-ajax.js"></script>

ajax(obj);
参数 obj 里面的属性说明:

  method : 请求方式 -- get 或 post
  url : 请求路径
  async :true 为异步请求 , false 为同步请求
  data : 请求数据 ,为 一个 对象
  success :请求成功时的回调函数
  error :请求失败时的回调函数
 addEvent(document,‘click‘,function () {
        ajax({
            method:‘get‘,
            url:‘https://api.github.com/users/ZengTianShengZ‘,
            async:true,
            data:{
                ‘name‘:‘zeng‘,
                ‘age‘: 24
            },
            success:function (text) {
                alert(text);
            },
            error : function(error_status,error_statusText){
                alert(error_status + ‘.........‘ + error_statusText);
            }

        });

项目有不足的地方欢迎大家 issues ,本类库适合做一些小项目时使用,主要避免了原生js操作dom的麻烦,以及浏览器的兼容问题.

各位看官如果觉得还口以的话,可以 star 一下此项目哦!

项目地址:ZengTianShengZ-github

LICENSE

(MIT License)

Copyright (c) 2016 ZengTianShengZ

时间: 2024-11-18 20:37:56

zBase --轻量级DOM操作库的相关文章

认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法

(一)认识JQuery  JQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一套定义好的方法    JQuery的主旨:以更少的代码,实现更多的功能 (二)JQuery的优势 1)可以像CSS一样访问和操作DOM 2)修改CSS控制页面外观 3)简化JS代码操作 4)事件代理更加容易 5)动画效果使用方便 6) Ajax技术更加完美 7)大量的基于Jquery的插件 8)可以自定义扩展功能插件 (三)JQuery的语法 格式:$(selector).actio

IOTutility 一个轻量级的 IOT 基础操作库

目录 IOTutility 一个轻量级的 IOT 基础操作库 1. 为什么要写一个 IOT 编程库? 2. IOTutility 具有什么功能? 3. IOTutility 有什么特点 IOTutility 实现了哪些功能 MQTT protocol implement MQTT 实现 1. 创建一个 MQTT_Session 2. 连接到服务器 3. 订阅感兴趣的主题 4. 可以通过 Publish 接口直接上传消息给服务器 如何使用 1. 下载代码 2. 编译代码库 3. 编译示例程序并执行

js day43 Jquery入门(回顾js,Jquery选择器,dom操作)

1     Javascript回顾 问题:Javascript能做什么? 1. 获取操作dom <style> .aa{ background:red} .bb{ background:blue} </style> <body> <div id="dv" title="提示信息" class="aa">AAAAAAAAA</div> <button onclick="f

jQuery选择器和DOM操作——《锋利的jQuery》(第2版)读书笔记1

第1章 认识jQuery jQuery有以下优势: 轻量级: 强大的选择器: 出色的DOM操作的封装: 可靠的事件处理机制: 完善的Ajax: 不污染顶级变量: 出色的浏览器兼容性: 链式操作方式: 隐式迭代: 行为层与结构层的分离: 丰富的插件支持: 完善的文档: 开源. jQuery对象就是通过jQuery包装DOM对象后产生的对象. 在jQuery对象中无法使用DOM对象的任何方法.同样,DOM对象也不能使用jQuery里的方法. jQuery对象和DOM对象的相互转换        如果

jQuery学习之路(2)-DOM操作

▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看看DOM操作都有哪些 逐一来看 先写一份HTML代码,后面的代码将操作这份HTML代码 <p title="选择你最喜欢的水果">你最喜欢的水果?</p> <ul> <li title="苹果">苹果</li>

为什么说DOM操作很慢

原文转自:http://kb.cnblogs.com/page/534571/ 一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为,比如布局(layout)和绘制(paint).下面主要先介绍下这些浏览器行为,阐述一个页面是怎么最终被呈现出来的,另外还会从代码的角度,来说明一些不好的实践以及一些优化方案

为什么DOM操作很慢

转自:http://kb.cnblogs.com/page/534571/ 一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为,比如布局(layout)和绘制(paint).下面主要先介绍下这些浏览器行为,阐述一个页面是怎么最终被呈现出来的,另外还会从代码的角度,来说明一些不好的实践以及一些优化方案.

jquer 事件,选择器,dom操作

一.jQuery简介 jQuery 是一个 JavaScript 库.(其实就是js,就是封装了,语法上有些不一样) jQuery 极大地简化了 JavaScript 编程. jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数. $:jQuery标识符 二.jQuery选择器 1.基本选择器(写法上就跟css一样) *①ID选择器:# $("#div1").css("background-color", "red&

2014 年10个最佳的PHP图像操作库

2014 年10个最佳的PHP图像操作库 Thomas Boutell 以及众多的开发者创造了以GD图形库闻名的一个图形软件库,用于动态的图形计算. GD提供了对于诸如C, Perl, Python, PHP, OCaml等等诸多编程语言的支持. 除了生成HTML输出之外, 你还可以使用php以众多的像 PNG, JPEG, GIF, WBMP,以及 XPM这样的图形文件格式来创建和计算图形文件. 并且,php的使用还能让你可以直接向一个浏览器输出图像流. 为了做到这一点,你需要借助于GD库图像