⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.js.svn-base

📁 prototype 实现网络相册的ajax界面。
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
Element.getDimensions = function(element){  element = $(element);  // All *Width and *Height properties give 0 on elements with display "none", so enable the element temporarily  if (element.style.display == "none"){    var originalVisibility = element.style.visibility;    var originalPosition = element.style.position;    element.style.visibility = "hidden";    element.style.position = "absolute";    element.style.display = "";    var originalWidth = element.clientWidth;    var originalHeight = element.clientHeight;    element.style.display = "none";    element.style.position = originalPosition;    element.style.visibility = originalVisibility;    return {width: originalWidth, height: originalHeight};      } else {    return {width: element.offsetWidth, height: element.offsetHeight};  }} /*--------------------------------------------------------------------------*/Position.positionedOffset = function(element) {  var valueT = 0, valueL = 0;  do {    valueT += element.offsetTop  || 0;    valueL += element.offsetLeft || 0;    element = element.offsetParent;    if (element) {      p = Element.getStyle(element,'position');      if(p == 'relative' || p == 'absolute') break;    }  } while (element);  return [valueL, valueT];}// Safari returns margins on body which is incorrect if the child is absolutely positioned.// for performance reasons, we create a specialized version of Position.cumulativeOffset for// KHTML/WebKit onlyif(/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {  Position.cumulativeOffset = function(element) {    var valueT = 0, valueL = 0;    do {      valueT += element.offsetTop  || 0;      valueL += element.offsetLeft || 0;            if (element.offsetParent==document.body)         if (Element.getStyle(element,'position')=='absolute') break;              element = element.offsetParent;    } while (element);    return [valueL, valueT];  }}Position.page = function(forElement) {  var valueT = 0, valueL = 0;  var element = forElement;  do {    valueT += element.offsetTop  || 0;    valueL += element.offsetLeft || 0;    // Safari fix    if (element.offsetParent==document.body)      if (Element.getStyle(element,'position')=='absolute') break;        } while (element = element.offsetParent);  element = forElement;  do {    valueT -= element.scrollTop  || 0;    valueL -= element.scrollLeft || 0;      } while (element = element.parentNode);  return [valueL, valueT];}// elements with display:none don't return an offsetParent, // fall back to  manual calculationPosition.offsetParent = function(element) {  if(element.offsetParent) return element.offsetParent;  if(element == document.body) return element;    while ((element = element.parentNode) && element != document.body)    if (Element.getStyle(element,'position')!='static')      return element;    return document.body;}Position.clone = function(source, target) {  var options = Object.extend({    setLeft:    true,    setTop:     true,    setWidth:   true,    setHeight:  true,    offsetTop:  0,    offsetLeft: 0  }, arguments[2] || {})    // find page position of source  source = $(source);  var p = Position.page(source);  // find coordinate system to use  target = $(target);  var delta = [0, 0];  var parent = null;  // delta [0,0] will do fine with position: fixed elements,   // position:absolute needs offsetParent deltas  if (Element.getStyle(target,'position') == 'absolute') {    parent = Position.offsetParent(target);    delta = Position.page(parent);  }    // correct by body offsets (fixes Safari)  if (parent==document.body) {    delta[0] -= document.body.offsetLeft;    delta[1] -= document.body.offsetTop;   }  // set position  if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + "px";  if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + "px";  if(options.setWidth)  target.style.width = source.offsetWidth + "px";  if(options.setHeight) target.style.height = source.offsetHeight + "px";}Position.absolutize = function(element) {  element = $(element);  if(element.style.position=='absolute') return;  Position.prepare();  var offsets = Position.positionedOffset(element);  var top     = offsets[1];  var left    = offsets[0];  var width   = element.clientWidth;  var height  = element.clientHeight;  element._originalLeft   = left - parseFloat(element.style.left  || 0);  element._originalTop    = top  - parseFloat(element.style.top || 0);  element._originalWidth  = element.style.width;  element._originalHeight = element.style.height;  element.style.position = 'absolute';  element.style.top    = top + 'px';;  element.style.left   = left + 'px';;  element.style.width  = width + 'px';;  element.style.height = height + 'px';;}Position.relativize = function(element) {  element = $(element);  if(element.style.position=='relative') return;  Position.prepare();  element.style.position = 'relative';  var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);  var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);  element.style.top    = top + 'px';  element.style.left   = left + 'px';  element.style.height = element._originalHeight;  element.style.width  = element._originalWidth;}/*--------------------------------------------------------------------------*/Element.Class = {    // Element.toggleClass(element, className) toggles the class being on/off    // Element.toggleClass(element, className1, className2) toggles between both classes,    //   defaulting to className1 if neither exist    toggle: function(element, className) {      if(Element.Class.has(element, className)) {        Element.Class.remove(element, className);        if(arguments.length == 3) Element.Class.add(element, arguments[2]);      } else {        Element.Class.add(element, className);        if(arguments.length == 3) Element.Class.remove(element, arguments[2]);      }    },    // gets space-delimited classnames of an element as an array    get: function(element) {      element = $(element);      return element.className.split(' ');    },    // functions adapted from original functions by Gavin Kistner    remove: function(element) {      element = $(element);      var regEx;      for(var i = 1; i < arguments.length; i++) {        regEx = new RegExp("(^|\\s)" + arguments[i] + "(\\s|$)", 'g');        element.className = element.className.replace(regEx, '')      }    },    add: function(element) {      element = $(element);      for(var i = 1; i < arguments.length; i++) {        Element.Class.remove(element, arguments[i]);        element.className += (element.className.length > 0 ? ' ' : '') + arguments[i];      }    },    // returns true if all given classes exist in said element    has: function(element) {      element = $(element);      if(!element || !element.className) return false;      var regEx;      for(var i = 1; i < arguments.length; i++) {        if((typeof arguments[i] == 'object') &&           (arguments[i].constructor == Array)) {          for(var j = 0; j < arguments[i].length; j++) {            regEx = new RegExp("(^|\\s)" + arguments[i][j] + "(\\s|$)");            if(!regEx.test(element.className)) return false;          }        } else {          regEx = new RegExp("(^|\\s)" + arguments[i] + "(\\s|$)");          if(!regEx.test(element.className)) return false;        }      }      return true;    },    // expects arrays of strings and/or strings as optional paramters    // Element.Class.has_any(element, ['classA','classB','classC'], 'classD')    has_any: function(element) {      element = $(element);      if(!element || !element.className) return false;      var regEx;      for(var i = 1; i < arguments.length; i++) {        if((typeof arguments[i] == 'object') &&           (arguments[i].constructor == Array)) {          for(var j = 0; j < arguments[i].length; j++) {            regEx = new RegExp("(^|\\s)" + arguments[i][j] + "(\\s|$)");            if(regEx.test(element.className)) return true;          }        } else {          regEx = new RegExp("(^|\\s)" + arguments[i] + "(\\s|$)");          if(regEx.test(element.className)) return true;        }      }      return false;    },    childrenWith: function(element, className) {      var children = $(element).getElementsByTagName('*');      var elements = new Array();      for (var i = 0; i < children.length; i++)        if (Element.Class.has(children[i], className))          elements.push(children[i]);      return elements;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -