最大尺寸限制的容器,根据内容显示滑条的计算问题

这一年因为工作需要,封装了不少js控件,有的简单,有的异常复杂,中间少不了大大小小各种问题和困难。

其中一个问题就是标题问题,今天终于整明白了,现在贴出来,以备参考。

首先,问题棘手的地方在于,计算是否显示滑条时,横向滑条占用了纵向高度,纵向滑条占用了横向高度,

意味着计算纵向滑条,要纳入横向滑条的高度,计算横向滑条要纳入纵向滑条高度。

这就麻烦了,貌似成了无限嵌套循环。。。。。

我就是在这点上纠结了很久,不得不采用各种方法,试图规避循环计算。

然而,在尝试了n次后,发现除了拆分容器为复合容器,否则无法解决这个问题后,终于又回到起点,不得不正视这个'循环'问题。

经过反复思考和推演,结果发现,自己从一开始就走入了一个误区,认为无限循环这个想法是错误的!!!!

循环是需要的,但只要循环一次,即计算两次就行了。。。。

var hs = c.lineHeight * this.list.length,
    hh = c.isDropDownList ? 0 : c.headHeight,
    yr = (hs + hh) < (c.maxHeight - 2) ? 0 : 17,
    xr = (this.lineWidth + yr) < (c.maxWidth - 2) ? 0 : 17,
    yr = (hs + hh + xr) < (c.maxHeight - 2) ? 0 : 17,
    xr = (this.lineWidth + yr) < (c.maxWidth - 2) ? 0 : 17,
    w  = (this.lineWidth + yr) < (c.maxWidth - 2) ? (this.lineWidth + yr) : (c.maxWidth - yr - 2),
    h  = (hs + hh + xr) < (c.maxHeight - 2) ? (hs + xr) : (c.maxHeight - xr - 2);
this.contentDom.css({ width: w, height: h });
this.frameDom.css({ width: this.contentDom.outerWidth(), height: this.contentDom.outerHeight() + hh });

  现在把关键代码贴出来,以资记忆,不枉我死掉的n多脑细胞。。。。。

 

posted on 2016-12-06 10:34  丰云  阅读(192)  评论(0编辑  收藏  举报

导航