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

📄 layout.js

📁 javascript 很酷的类库
💻 JS
📖 第 1 页 / 共 5 页
字号:
// sets the member's breadth if the member does not have an explicitly specified breadth and// this layout alters member breadths.  Returns true if the member's breadth was changed, false// otherwiseautoSetBreadth : function (member) {    if (!this.shouldAlterBreadth(member)) return false;    // set layoutInProgress, otherwise, we'll think the resize we're about to do was done by the    // user and treat it as an explicit size    var wasInProgress = this._layoutInProgress;    this._layoutInProgress = true;    this.setMemberBreadth(member, this._getMemberDefaultBreadth(member));        this._layoutInProgress = wasInProgress;    return true;},// return whether this member should be resized on the perpendicular axis.  shouldAlterBreadth : function (member) {    // any member with an explicit breadth setting is left alone (hence will stick out or be    // smaller than the breadth of the layout)    var explicitBreadth = this._explicitBreadth(member);    if (explicitBreadth != null) {        // managePercentBreadths if so configured.  For any other explicit breath, let the        // member size itself.        return (this.managePercentBreadth &&                 this.getBreadthPolicy() == isc.Layout.FILL &&                isc.isA.String(explicitBreadth) &&                 isc.endsWith(explicitBreadth,this._$percent));    }    // NOTE: overflow:visible members: if the policy indicates that we change their breadth,    // what we're basically setting is a minimum, and also advising the browser as to the optimal    // point to wrap their content if it's wrappable.  Once such a member is drawn, it may exceed    // the layout's breadth, similar to a member with an explicit size.        if (this.vertical && member.inherentWidth) return false;    // members will be set to the breadth of the layout if they have no explicit size of their own    if (this.getBreadthPolicy() == isc.Layout.FILL) return true;    // with no breadth policy, don't change member breadth    return false;},// move these canvases offscreen so that we can find out their size_moveOffscreen : function (member) {    if (member.isDrawn()) return;        var moveOffscreen = (!(!isc.Browser.isWin && isc.Browser.isMoz &&                            this.showCustomScrollbars == false &&                            (this.overflow == isc.Canvas.AUTO)));     if (moveOffscreen) member.moveTo(null, -9999);},// return the total space dedicated to margins or resizeBarsgetMarginSpace : function () {    var marginSpace = this._getLengthMargin();    for (var i = 0; i < this.members.length; i++) {        var member = this.members[i];        if (member.showResizeBar) {            // leave room for resizeBar            marginSpace += this.resizeBarSize;        } else if (i < this.members.length - 1 && !this._shouldIgnoreMember(this.members[i+1])) {            // leave room for margins if not the last visible member            marginSpace += this.membersMargin;        }        // leave extra space on a member-by-member basis        marginSpace += this.getMemberGap(member);    }    // re add 1 * this.memberOverlap so we don't clip the member closest to our ege    if (this.memberOverlap != null) marginSpace += this.memberOverlap    return marginSpace;},// return the total space to be allocated among members by the layout policy: the specified// size minus space taken up by margins and resizeBarsgetTotalMemberSpace : function () {    return this.getLength() - this.getMarginSpace(); },// get the total length of all members including margins and resizeBars, which may exceed the// specified size of the layout if the layout as a whole overflowed_getTotalMemberLength : function () {    var totalMemberLength = 0;    for (var i = 0; i < this.members.length; i++) {        var member = this.members[i];        if (this._shouldIgnoreMember(member)) continue;        totalMemberLength += this.getMemberLength(member);    }    return totalMemberLength + this.getMarginSpace();},// This method prevents the member from being repositioned / resized when we reflow, even// if it's visibleignoreMember : function (member) {    if (!member || !this.members || this.members.indexOf(member) == -1) return;    member._isIgnoringLayout = true;},// Allow a member that was previously being ignored to respond to reflow.stopIgnoringMember : function (member) {    member._isIgnoringLayout = false;    this.reflow();},isIgnoringMember : function (member) {    if (member._isIgnoringLayout)        return member._isIgnoringLayout;    return false;},// Helper method to determine whether the specified member should be resized / relayed out when// layoutChildren / reflow// Returns true if we're ignoring the member, or its hidden._shouldIgnoreMember : function (member) {        if (member.visibility == isc.Canvas.HIDDEN        && !(member._edgedCanvas && member._edgedCanvas.isVisible())) return true;    if (this.isIgnoringMember(member)) return true;    return false;},// Allow a member with a managed Z order (via stackZIndex) to be unmanaged.// DO NOT MANIPULATE _isIgnoringZIndex DIRECTLY! Side effects may be necessary (notably// when one stops ignoring the member).ignoreMemberZIndex : function (member) {    if (!member || !this.members || this.members.indexOf(member) == -1) return;    member._isIgnoringZIndex = true;    this.reflow();},stopIgnoringMemberZIndex : function (member) {    member._isIgnoringZIndex = false;    this.reflow();},_isIgnoringMemberZIndex : function (member) {    if (this.isIgnoringMember(member))        return true;    else if (member._isIgnoringZIndex)        return member._isIgnoringZIndex;    return false;},_$layout : "layout",// gather the sizes settings that should be passed to the layout policy// two modes: normal mode, or mode where members that can overflow are treated as being fixed// size at their drawn sizegatherSizes : function (overflowAsFixed, layoutInfo, sizes) {    if (!layoutInfo) {        // re-use a per-instance array for storing layoutInfo        layoutInfo = this._layoutInfo;        if (layoutInfo == null) {            layoutInfo = this._layoutInfo = [];        } else {            layoutInfo.length = 0;        }    }    var policy = this.getLengthPolicy();    // whether to put together info for a big layout report at the end of the resizing/policy run    var report = this.logIsInfoEnabled(this._$layout);    // detect sizes that should be regarded as fixed    for (var i = 0; i < this.members.length; i++) {        var member = this.members[i];         var memberInfo = layoutInfo[i];        if (memberInfo == null) {            memberInfo = layoutInfo[i] = {};        }        // skip hidden members        if (this._shouldIgnoreMember(member)             //>Animation            // If we're about to animateShow() a new member, it's visibility will be hidden,             // but we need to determine its initial size anyway            && !member._prefetchingSize //<Animation           ) {            memberInfo._policyLength = 0;            if (report) memberInfo._lengthReason = "hidden";            continue;        }        // if a member has an inherent length, we always respect it as a fixed size.  If we        // have no sizing policy, in effect everything is "inherent length": we just ask it for        // it's size; if it has a percent size or other non-numeric size, it interprets it        // itself        if (this.memberHasInherentLength(member) || policy == isc.Layout.NONE) {            memberInfo._policyLength = this.getMemberLength(member);            // we never want to set a length for inherent size members            if (report) {                memberInfo._lengthReason = (policy == isc.Layout.NONE ? "no length policy" :                                            "inherent size");            }            continue;        }        // if we are treating overflowing members as fixed (second pass), members that can        // overflow should now be treated as fixed size by the policy        if (overflowAsFixed && this._overflowsLength(member)) {            var drawnLength = this.getMemberLength(member);            // if the member's drawn size doesn't match the size we assigned it in the first            // pass, it has overflowed.              if (drawnLength != sizes[i]) {                if (report) {                    this.logInfo("member: " + member + " overflowed.  set length: " + sizes[i] +                                 " got length: " + drawnLength, "layout");                 }                memberInfo._overflowed = true;                memberInfo._policyLength = drawnLength;            }            continue;        }        // respect any explicitly specified size (this includes percent)        if (this._explicitLength(member) != null) {            memberInfo._policyLength = this.vertical ? member._userHeight : member._userWidth;            if (report) memberInfo._lengthReason = "explicit size";            continue;        }        // no size specified; ask for as much space as is available        if (memberInfo._policyLength == null) {            memberInfo._policyLength = this._$star;            if (report) memberInfo._lengthReason = "no length specified";        }    }    return layoutInfo;},// resize the members to the sizes given in the sizes[] array.  If overflowersOnly is true, only// resize members that can overflow. //>Animation_resizeAnimations:["show", "hide", "rect"],//<AnimationresizeMembers : function (sizes, layoutInfo, overflowersOnly) {    var report = this.logIsInfoEnabled(this._$layout);	for (var i = 0; i < this.members.length; i++) {        var member = this.members[i],            memberInfo = layoutInfo[i];        // ignore hidden members and explicitly ignored members        if (this._shouldIgnoreMember(member)) continue;        // if we're only resizing overflowers, skip other members        if (overflowersOnly && !this._overflowsLength(member)) continue;                // get the breadth this member should be set to, or null if it shouldn't be changed        var breadth = null;        if (this.shouldAlterBreadth(member)) {             if (report)                 memberInfo._breadthReason = "breadth policy: " + this.getBreadthPolicy();                        breadth = memberInfo._breadth = this._getMemberDefaultBreadth(member);        } else {            // don't set breadth            memberInfo._breadth = this.getMemberBreadth(member);            if (report) {                memberInfo._breadthReason =                     (this.getBreadthPolicy() == isc.Layout.NONE ? "no breadth policy" :                                                 "explicit size");            }        }                // get the length we should set the member to                var length = null;                if (this.getLengthPolicy() != isc.Layout.NONE &&            (!this.memberHasInherentLength(member) && !memberInfo._overflowed))        {            length = memberInfo._resizeLength = sizes[i];        }        // avoid trying to resize an overflowed member to less than it's overflowed size        // (if the width is not also changing, and the member isn't dirty for another reason)        if (length != null && this._overflowsLength(member) && !member.isDirty()) {            var specifiedLength = (this.vertical ? member.getHeight() : member.getWidth()),                visibleLength = this.getMemberLength(member);            // member has overflowed length            if (visibleLength > specifiedLength &&                // the new length is less than or equal to the member's overflowed size                length <= visibleLength &&                 // breadth won't change or isn't increasing                (breadth == null || breadth <= this.getMemberBreadth(member)))             {                if (report) this.logInfo("not applying " + this.getLengthAxis() + ": " + length +                                          " to overflowed member: " + member +                                          " w/" + this.getLengthAxis() + ": " + visibleLength,                                          "layout");                length = null;                      }        }                if (this.logIsDebugEnabled(this._$layout)) this._reportResize(member, breadth, length);        //>Animation        // Don't resize a member that's in the process of animate-resizing        if (!member.isAnimating(this._resizeAnimations)) {//<Animation         if (this.vertical) {            member.resizeTo(breadth, length);        } else {            member.resizeTo(length, breadth);        }        //>Animation        }//<Animation                // redraw the member if it changed size, so we can get the right size for stacking        // purposes (or draw the member if it's never been drawn)        if (member.isDrawn()) {

⌨️ 快捷键说明

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