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

📄 resize-debug.js

📁 这是YUI的源码及相关示例。里面有很多很炫的Javascript效果。
💻 JS
📖 第 1 页 / 共 5 页
字号:
                Event.on(this._handles[h[i]], 'mouseout', this._handleMouseOut, this, true);                this._dds[h[i]] = new YAHOO.util.DragDrop(this._handles[h[i]], this.get('id') + '-handle-' + h, { useShim: this.get('useShim') });                this._dds[h[i]].setPadding(15, 15, 15, 15);                this._dds[h[i]].on('startDragEvent', this._handleStartDrag, this._dds[h[i]], this);                this._dds[h[i]].on('mouseDownEvent', this._handleMouseDown, this._dds[h[i]], this);            }            YAHOO.log('Creating the Status box', 'info', 'Resize');            this._status = document.createElement('span');            this._status.className = this.CSS_STATUS;            document.body.insertBefore(this._status, document.body.firstChild);        },        /**         * @private        * @method _ieSelectFix        * @description The function we use as the onselectstart handler when we start a drag in Internet Explorer        */        _ieSelectFix: function() {            return false;        },        /**         * @private        * @property _ieSelectBack        * @description We will hold a copy of the current "onselectstart" method on this property, and reset it after we are done using it.        */        _ieSelectBack: null,        /**         * @private        * @method _setAutoRatio        * @param {Event} ev A mouse event.        * @description This method checks to see if the "autoRatio" config is set. If it is, we will check to see if the "Shift Key" is pressed. If so, we will set the config ratio to true.        */        _setAutoRatio: function(ev) {            if (this.get('autoRatio')) {                YAHOO.log('Setting up AutoRatio', 'info', 'Resize');                if (ev && ev.shiftKey) {                    //Shift Pressed                    YAHOO.log('Shift key presses, turning on ratio', 'info', 'Resize');                    this.set('ratio', true);                } else {                    YAHOO.log('Resetting ratio back to default', 'info', 'Resize');                    this.set('ratio', this._configs.ratio._initialConfig.value);                }            }        },        /**         * @private        * @method _handleMouseDown        * @param {Event} ev A mouse event.        * @description This method preps the autoRatio on MouseDown.        */        _handleMouseDown: function(ev) {            if (this._locked) {                YAHOO.log('Resize Locked', 'info', 'Resize');                return false;            }            if (D.getStyle(this._wrap, 'position') == 'absolute') {                this._positioned = true;            }            if (ev) {                this._setAutoRatio(ev);            }            if (this.browser.ie) {                this._ieSelectBack = document.body.onselectstart;                document.body.onselectstart = this._ieSelectFix;            }        },        /**         * @private        * @method _handleMouseOver        * @param {Event} ev A mouse event.        * @description Adds CSS class names to the handles        */        _handleMouseOver: function(ev) {            if (this._locked) {                YAHOO.log('Resize Locked', 'info', 'Resize');                return false;            }            //Internet Explorer needs this            D.removeClass(this._wrap, this.CSS_RESIZE);            if (this.get('hover')) {                D.removeClass(this._wrap, this.CSS_HOVER);            }            var tar = Event.getTarget(ev);            if (!D.hasClass(tar, this.CSS_HANDLE)) {                tar = tar.parentNode;            }            if (D.hasClass(tar, this.CSS_HANDLE) && !this._active) {                D.addClass(tar, this.CSS_HANDLE + '-active');                for (var i in this._handles) {                    if (Lang.hasOwnProperty(this._handles, i)) {                        if (this._handles[i] == tar) {                            D.addClass(tar, this.CSS_HANDLE + '-' + i + '-active');                            break;                        }                    }                }            }            //Internet Explorer needs this            D.addClass(this._wrap, this.CSS_RESIZE);        },        /**         * @private        * @method _handleMouseOut        * @param {Event} ev A mouse event.        * @description Removes CSS class names to the handles        */        _handleMouseOut: function(ev) {            //Internet Explorer needs this            D.removeClass(this._wrap, this.CSS_RESIZE);            if (this.get('hover') && !this._active) {                D.addClass(this._wrap, this.CSS_HOVER);            }            var tar = Event.getTarget(ev);            if (!D.hasClass(tar, this.CSS_HANDLE)) {                tar = tar.parentNode;            }            if (D.hasClass(tar, this.CSS_HANDLE) && !this._active) {                D.removeClass(tar, this.CSS_HANDLE + '-active');                for (var i in this._handles) {                    if (Lang.hasOwnProperty(this._handles, i)) {                        if (this._handles[i] == tar) {                            D.removeClass(tar, this.CSS_HANDLE + '-' + i + '-active');                            break;                        }                    }                }            }            //Internet Explorer needs this            D.addClass(this._wrap, this.CSS_RESIZE);        },        /**         * @private        * @method _handleStartDrag        * @param {Object} args The args passed from the CustomEvent.        * @param {Object} dd The <a href="YAHOO.util.DragDrop.html">YAHOO.util.DragDrop</a> object we are working with.        * @description Resizes the proxy, sets up the <a href="YAHOO.util.DragDrop.html">YAHOO.util.DragDrop</a> handlers, updates the status div and preps the cache        */        _handleStartDrag: function(args, dd) {            YAHOO.log('startDrag', 'info', 'Resize');            var tar = dd.getDragEl();            if (D.hasClass(tar, this.CSS_HANDLE)) {                if (D.getStyle(this._wrap, 'position') == 'absolute') {                    this._positioned = true;                }                this._active = true;                this._currentDD = dd;                if (this._proxy) {                    YAHOO.log('Activate proxy element', 'info', 'Resize');                    this._proxy.style.visibility = 'visible';                    this._proxy.style.zIndex = '1000';                    this._proxy.style.height = this.get('element').clientHeight + 'px';                    this._proxy.style.width = this.get('element').clientWidth + 'px';                }                for (var i in this._handles) {                    if (Lang.hasOwnProperty(this._handles, i)) {                        if (this._handles[i] == tar) {                            this._currentHandle = i;                            var handle = '_handle_for_' + i;                            D.addClass(tar, this.CSS_HANDLE + '-' + i + '-active');                            dd.on('dragEvent', this[handle], this, true);                            dd.on('mouseUpEvent', this._handleMouseUp, this, true);                            YAHOO.log('Adding DragEvents to: ' + i, 'info', 'Resize');                            break;                        }                    }                }                D.addClass(tar, this.CSS_HANDLE + '-active');                if (this.get('proxy')) {                    YAHOO.log('Posiiton Proxy Element', 'info', 'Resize');                    var xy = D.getXY(this.get('element'));                    D.setXY(this._proxy, xy);                    if (this.get('ghost')) {                        YAHOO.log('Add Ghost Class', 'info', 'Resize');                        this.addClass(this.CSS_GHOST);                    }                }                D.addClass(this._wrap, this.CSS_RESIZING);                this._setCache();                this._updateStatus(this._cache.height, this._cache.width, this._cache.top, this._cache.left);                YAHOO.log('Firing startResize Event', 'info', 'Resize');                this.fireEvent('startResize', { type: 'startresize', target: this});            }        },        /**         * @private        * @method _setCache        * @description Sets up the this._cache hash table.        */        _setCache: function() {            YAHOO.log('Setting up property cache', 'info', 'Resize');            this._cache.xy = D.getXY(this._wrap);            D.setXY(this._wrap, this._cache.xy);            this._cache.height = this.get('clientHeight');            this._cache.width = this.get('clientWidth');            this._cache.start.height = this._cache.height;            this._cache.start.width = this._cache.width;            this._cache.start.top = this._cache.xy[1];            this._cache.start.left = this._cache.xy[0];            this._cache.top = this._cache.xy[1];            this._cache.left = this._cache.xy[0];            this.set('height', this._cache.height, true);            this.set('width', this._cache.width, true);        },        /**         * @private        * @method _handleMouseUp        * @param {Event} ev A mouse event.        * @description Cleans up listeners, hides proxy element and removes class names.        */        _handleMouseUp: function(ev) {            this._active = false;            var handle = '_handle_for_' + this._currentHandle;            this._currentDD.unsubscribe('dragEvent', this[handle], this, true);            this._currentDD.unsubscribe('mouseUpEvent', this._handleMouseUp, this, true);            if (this._proxy) {                YAHOO.log('Hide Proxy Element', 'info', 'Resize');                this._proxy.style.visibility = 'hidden';                this._proxy.style.zIndex = '-1';                if (this.get('setSize')) {                    YAHOO.log('Setting Size', 'info', 'Resize');                    this.resize(ev, this._cache.height, this._cache.width, this._cache.top, this._cache.left, true);                } else {                    YAHOO.log('Firing Resize Event', 'info', 'Resize');                    this.fireEvent('resize', { ev: 'resize', target: this, height: this._cache.height, width: this._cache.width, top: this._cache.top, left: this._cache.left });                }                if (this.get('ghost')) {                    YAHOO.log('Removing Ghost Class', 'info', 'Resize');                    this.removeClass(this.CSS_GHOST);                }            }            if (this.get('hover')) {                D.addClass(this._wrap, this.CSS_HOVER);            }            if (this._status) {                D.setStyle(this._status, 'display', 'none');            }            if (this.browser.ie) {                YAHOO.log('Resetting IE onselectstart function', 'info', 'Resize');                document.body.onselectstart = this._ieSelectBack;            }            if (this.browser.ie) {                D.removeClass(this._wrap, this.CSS_RESIZE);            }            for (var i in this._handles) {                if (Lang.hasOwnProperty(this._handles, i)) {                    D.removeClass(this._handles[i], this.CSS_HANDLE + '-active');                }            }            if (this.get('hover') && !this._active) {                D.addClass(this._wrap, this.CSS_HOVER);            }            D.removeClass(this._wrap, this.CSS_RESIZING);            D.removeClass(this._handles[this._currentHandle], this.CSS_HANDLE + '-' + this._currentHandle + '-active');            D.removeClass(this._handles[this._currentHandle], this.CSS_HANDLE + '-active');            if (this.browser.ie) {                D.addClass(this._wrap, this.CSS_RESIZE);            }            this._resizeEvent = null;            this._currentHandle = null;                        if (!this.get('animate')) {                this.set('height', this._cache.height, true);                this.set('width', this._cache.width, true);            }            YAHOO.log('Firing endResize Event', 'info', 'Resize');            this.fireEvent('endResize', { ev: 'endResize', target: this, height: this._cache.height, width: this._cache.width, top: this._cache.top, left: this._cache.left });        },        /**         * @private        * @method _setRatio        * @param {Number} h The height offset.        * @param {Number} w The with offset.        * @param {Number} t The top offset.        * @param {Number} l The left offset.        * @description Using the Height, Width, Top & Left, it recalcuates them based on the original element size.        * @return {Array} The new Height, Width, Top & Left settings        */        _setRatio: function(h, w, t, l) {            YAHOO.log('Setting Ratio', 'info', 'Resize');            var oh = h, ow = w;            if (this.get('ratio')) {                var orgH = this._cache.height,                    orgW = this._cache.width,                    nh = parseInt(this.get('height'), 10),                    nw = parseInt(this.get('width'), 10),                    maxH = this.get('maxHeight'),                    minH = this.get('minHeight'),                    maxW = this.get('maxWidth'),                    minW = this.get('minWidth');                switch (this._currentHandle) {                    case 'l':                        h = nh * (w / nw);                        h = Math.min(Math.max(minH, h), maxH);                                                w = nw * (h / nh);                        t = (this._cache.start.top - (-((nh - h) / 2)));                        l = (this._cache.start.left - (-((nw - w))));                        break;                    case 'r':                        h = nh * (w / nw);                        h = Math.min(Math.max(minH, h), maxH);                                                w = nw * (h / nh);                        t = (this._cache.start.top - (-((nh - h) / 2)));                        break;                    case 't':                        w = nw * (h / nh);                        h = nh * (w / nw);                        l = (this._cache.start.left - (-((nw - w) / 2)));                        t = (this._cache.start.top - (-((nh - h))));                        break;                    case 'b':                        w = nw * (h / nh);                        h = nh * (w / nw);                        l = (this._cache.start.left - (-((nw - w) / 2)));                        break;                    case 'bl':                        h = nh * (w / nw);                        w = nw * (h / nh);                        l = (this._cache.start.left - (-((nw - w))));                        break;                    case 'br':                        h = nh * (w / nw);                        w = nw * (h / nh);                        break;                    case 'tl':                        h = nh * (w / nw);                        w = nw * (h / nh);

⌨️ 快捷键说明

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