zoukankan      html  css  js  c++  java
  • 据说每个大牛、小牛都应该有自己的库——DOM处理

    这几天整理了一下思路,本来觉得DOM部分会有很多东西,但是忽然发现频繁使用的其实并不太多

    class

    class处理部分主要有四个

    hasClass:检查元素是否包含某个class

    addClass:为元素添加一个class

    removeClass:为元素删除一个class

    toggleClass:切换元素的class, 如果只传入一个class,则切换这个class的有无;如果传入两个class,则元素删除当前class,替换为另一个

    hasClass : function(element, className) {
                var re = new RegExp("(^|\s)" + className + "(\s|$)", "i");
                if (element.className.match(re))
                    return true;
                return false;
            },
    
            addClass : function(element, className) {
                var re = new RegExp("(^|\s)" + className + "(\s|$)", "gi");
                var eleClass = element.className;
                if (!eleClass.match(re))
                    element.className = eleClass + " " + className;
            },
    
            removeClass : function(element, className) {
                var re = new RegExp("(^|\s)" + className + "(\s|$)", "gi");
                var eleClass = element.className;
                eleClass = eleClass.replace(re, "");
                if (element.className != eleClass)
                    element.className = eleClass;
            },
            
            toggleClass:function(element,class1,class2){
                if(class2!=undefined){
                    if(ssLib.hasClass(element,class1)){
                        ssLib.removeClass(element,class1);
                        ssLib.addClass(element,class2);
                    }else if(ssLib.hasClass(element,class2)){
                        ssLib.removeClass(element,class2);
                        ssLib.addClass(element,class1);
                    }
                }else{
                    if(ssLib.hasClass(element,class1)){
                        ssLib.removeClass(element,class1);
                    }else{
                        ssLib.addClass(element,class1);
                    }
                }
            },

     

    元素尺寸

    元素尺寸有两个方法

    getRect:获取元素尺寸,同时包含其上下左右四个边的位置

    getViewPortSize:获取可视窗口(ViewPort,不含滚动条)尺寸

    getScrollSize:获取元素(包含滚动条)尺寸

    getRect : function(element) {
                var rect = element.getBoundingClientRect();
                if (typeof rect.width == 'undefined') {
                    _rect = {
                        width : rect.right - rect.left,
                        height : rect.bottom - rect.top,
                        top : rect.top,
                        bottom : rect.bottom,
                        left : rect.left,
                        right : rect.right
                    };
                    return _rect;
                }
                return rect;
            },
    
            getViewPortSize : function() {
                if (document.compatMode == "CSS1Compat") {
                    return {
                        width : document.documentElement.clientWidth,
                        height : document.documentElement.clientHeight
                    };
                } else {
                    return {
                        width : document.body.clientWidth,
                        height : document.body.clientHeight
                    };
                }
            },
    
            getScrollSize : function(element) {
                var e = element
                        || (document.compatMode == "CSS1Compat" ? 
                                document.documentElement: document.body);
                return {
                   width : Math.max(element.scrollWidth, element.clientWidth),
                   height : Math.max(element.scrollHeight, element.clientHeight)
           };
            },

     

    元素位置

    getScrollPos:获取元素滚动条位置

    getViewPortPos:获取元素相对于可视窗口(ViewPort,不包括滚动条)的位置

    getAbsolutePos:获取元素相对于文档(包含滚动条)位置

    getOffsetPos:获取文档相对于父容器位置

    getScrollPos : function(element) {
                var e = element
                        || (document.compatMode == "CSS1Compat" ? document.documentElement
                                : document.body);
                return {
                    x : e.scrollTop,
                    y : e.scrollLeft
                };
            },
    
            getViewPortPos : function(element) {
                var rect = element.getBoundingClientRect();
                return {
                    x : rect.left,
                    y : rect.top
                };
            },
    
            getAbsolutePos : function(element) {
                var rect=element.getBoundingClientRect();
                var doc = document.compatMode == "CSS1Compat" ? document.documentElement
                        : document.body;
                return{
                    x:rect.left+Math.max(doc.scrollLet,doc.clientLeft),
                    y:rect.top+Math.max(doc.scrollTop,doc.clientTop)
                };
            },
            
            getOffsetPos:function(element){
                return{
                    x:element.offsetLeft,
                    y:elementoffsetTop
                };
            }

    元素属性/样式

    这个借鉴了一下jQuery的写法

    attr:获取/设置元素的属性值

    css:获取/设置元素的style

    这两个函数是临时想到的,还没想好怎么写,明天晚上补上吧

    PS.最近公司太忙,拖了这么久终于补上了,由于内容不少,另外写了一篇据说每个大牛、小牛都应该有自己的库——DOM处理续,另外由于这次写的仓促,除了很多漏洞,谢谢大家不吝指教,感觉进步了很多

  • 相关阅读:
    [Python3网络爬虫开发实战] 3.1.3-解析链接
    pusher-http-go
    gopush-cluster 架构
    消息队列 redis vs nsq
    redis资料
    golang+websocket
    golang之flag.String
    Linux环境下安装mysql
    golang版的crontab
    golang实现wav文件转换为mp3文件
  • 原文地址:https://www.cnblogs.com/dolphinX/p/3308930.html
Copyright © 2011-2022 走看看