📄 dom.js
字号:
if (!el[i]) {
id = id[i];
}
collection[collection.length] = method.call(scope, el[i], o);
}
return collection;
},
/**
* Returns the height of the document.
* @return {Int} The height of the actual document (which includes the body and its margin).
*/
getDocumentHeight: function() {
var scrollHeight=-1,windowHeight=-1,bodyHeight=-1;
var marginTop = parseInt(util.Dom.getStyle(document.body, 'marginTop'), 10);
var marginBottom = parseInt(util.Dom.getStyle(document.body, 'marginBottom'), 10);
var mode = document.compatMode;
if ( (mode || isIE) && !isOpera ) { // (IE, Gecko)
switch (mode) {
case 'CSS1Compat': // Standards mode
scrollHeight = ((window.innerHeight && window.scrollMaxY) ? window.innerHeight+window.scrollMaxY : -1);
windowHeight = [document.documentElement.clientHeight,self.innerHeight||-1].sort(function(a, b){return(a-b);})[1];
bodyHeight = document.body.offsetHeight + marginTop + marginBottom;
break;
default: // Quirks
scrollHeight = document.body.scrollHeight;
bodyHeight = document.body.clientHeight;
}
} else { // Safari & Opera
scrollHeight = document.documentElement.scrollHeight;
windowHeight = self.innerHeight;
bodyHeight = document.documentElement.clientHeight;
}
var h = [scrollHeight,windowHeight,bodyHeight].sort(function(a, b){return(a-b);});
return h[2];
},
/**
* Returns the width of the document.
* @return {Int} The width of the actual document (which includes the body and its margin).
*/
getDocumentWidth: function() {
var docWidth=-1,bodyWidth=-1,winWidth=-1;
var marginRight = parseInt(util.Dom.getStyle(document.body, 'marginRight'), 10);
var marginLeft = parseInt(util.Dom.getStyle(document.body, 'marginLeft'), 10);
var mode = document.compatMode;
if (mode || isIE) { // (IE, Gecko, Opera)
switch (mode) {
case 'CSS1Compat': // Standards mode
docWidth = document.documentElement.clientWidth;
bodyWidth = document.body.offsetWidth + marginLeft + marginRight;
break;
default: // Quirks
bodyWidth = document.body.clientWidth;
docWidth = document.body.scrollWidth;
break;
}
} else { // Safari
docWidth = document.documentElement.clientWidth;
bodyWidth = document.body.offsetWidth + marginLeft + marginRight;
}
var w = Math.max(docWidth, bodyWidth);
return w;
},
/**
* Returns the current height of the viewport.
* @return {Int} The height of the viewable area of the page (excludes scrollbars).
*/
getViewportHeight: function() {
var height = -1;
var mode = document.compatMode;
if ( (mode || isIE) && !isOpera ) {
switch (mode) { // (IE, Gecko)
case 'CSS1Compat': // Standards mode
height = document.documentElement.clientHeight;
break;
default: // Quirks
height = document.body.clientHeight;
}
} else { // Safari, Opera
height = self.innerHeight;
}
return height;
},
/**
* Returns the current width of the viewport.
* @return {Int} The width of the viewable area of the page (excludes scrollbars).
*/
getViewportWidth: function() {
var width = -1;
var mode = document.compatMode;
if (mode || isIE) { // (IE, Gecko, Opera)
switch (mode) {
case 'CSS1Compat': // Standards mode
width = document.documentElement.clientWidth;
break;
default: // Quirks
width = document.body.clientWidth;
}
} else { // Safari
width = self.innerWidth;
}
return width;
}
};
}();
/**
* @class A region is a representation of an object on a grid. It is defined
* by the top, right, bottom, left extents, so is rectangular by default. If
* other shapes are required, this class could be extended to support it.
*
* @param {int} t the top extent
* @param {int} r the right extent
* @param {int} b the bottom extent
* @param {int} l the left extent
* @constructor
*/
YAHOO.util.Region = function(t, r, b, l) {
/**
* The region's top extent
* @type int
*/
this.top = t;
/**
* The region's top extent as index, for symmetry with set/getXY
* @type int
*/
this[1] = t;
/**
* The region's right extent
* @type int
*/
this.right = r;
/**
* The region's bottom extent
* @type int
*/
this.bottom = b;
/**
* The region's left extent
* @type int
*/
this.left = l;
/**
* The region's left extent as index, for symmetry with set/getXY
* @type int
*/
this[0] = l;
};
/**
* Returns true if this region contains the region passed in
*
* @param {Region} region The region to evaluate
* @return {boolean} True if the region is contained with this region,
* else false
*/
YAHOO.util.Region.prototype.contains = function(region) {
return ( region.left >= this.left &&
region.right <= this.right &&
region.top >= this.top &&
region.bottom <= this.bottom );
};
/**
* Returns the area of the region
*
* @return {int} the region's area
*/
YAHOO.util.Region.prototype.getArea = function() {
return ( (this.bottom - this.top) * (this.right - this.left) );
};
/**
* Returns the region where the passed in region overlaps with this one
*
* @param {Region} region The region that intersects
* @return {Region} The overlap region, or null if there is no overlap
*/
YAHOO.util.Region.prototype.intersect = function(region) {
var t = Math.max( this.top, region.top );
var r = Math.min( this.right, region.right );
var b = Math.min( this.bottom, region.bottom );
var l = Math.max( this.left, region.left );
if (b >= t && r >= l) {
return new YAHOO.util.Region(t, r, b, l);
} else {
return null;
}
};
/**
* Returns the region representing the smallest region that can contain both
* the passed in region and this region.
*
* @param {Region} region The region that to create the union with
* @return {Region} The union region
*/
YAHOO.util.Region.prototype.union = function(region) {
var t = Math.min( this.top, region.top );
var r = Math.max( this.right, region.right );
var b = Math.max( this.bottom, region.bottom );
var l = Math.min( this.left, region.left );
return new YAHOO.util.Region(t, r, b, l);
};
/**
* toString
* @return string the region properties
*/
YAHOO.util.Region.prototype.toString = function() {
return ( "Region {" +
"top: " + this.top +
", right: " + this.right +
", bottom: " + this.bottom +
", left: " + this.left +
"}" );
};
/**
* Returns a region that is occupied by the DOM element
*
* @param {HTMLElement} el The element
* @return {Region} The region that the element occupies
* @static
*/
YAHOO.util.Region.getRegion = function(el) {
var p = YAHOO.util.Dom.getXY(el);
var t = p[1];
var r = p[0] + el.offsetWidth;
var b = p[1] + el.offsetHeight;
var l = p[0];
return new YAHOO.util.Region(t, r, b, l);
};
/////////////////////////////////////////////////////////////////////////////
/**
* @class
*
* A point is a region that is special in that it represents a single point on
* the grid.
*
* @param {int} x The X position of the point
* @param {int} y The Y position of the point
* @constructor
* @extends Region
*/
YAHOO.util.Point = function(x, y) {
if (x instanceof Array) { // accept output from Dom.getXY
y = x[1];
x = x[0];
}
/**
* The X position of the point, which is also the right, left and index zero (for Dom.getXY symmetry)
* @type int
*/
this.x = this.right = this.left = this[0] = x;
/**
* The Y position of the point, which is also the top, bottom and index one (for Dom.getXY symmetry)
* @type int
*/
this.y = this.top = this.bottom = this[1] = y;
};
YAHOO.util.Point.prototype = new YAHOO.util.Region();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -