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


    这一年因为工作需要,封装了不少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({  w, height: h });
    this.frameDom.css({  this.contentDom.outerWidth(), height: this.contentDom.outerHeight() + hh });
    

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

  • 相关阅读:
    deepin 安装版本管理工具
    deepin 安装maven
    deepin 安装 idea
    启动VMware环境下的Linux操作系统,添加新分区
    Centos6.*安装vsftpd
    easyui-datebox 年月视图显示
    oracle-数据库泵EXPDP导出用户下所有
    Oracle虚拟机配置
    JSON理解
    Python语法基础_04.元组、函数-上
  • 原文地址:https://www.cnblogs.com/foren/p/6136582.html
Copyright © 2020-2023  润新知