| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | /*拉伸窗体处理函数区域此处的命名空间和U.DD.js相同 因为功能是属于一个模块下的*///#region 拉伸窗体Namespace.register("U.D");//虚拟框U.D.Masklayer = function () {    return $$("div", { "style": { "cssText": "width:100%;height:100%;position:absolute;top:0;left:0;"} }, document.body);}/** 拖动框** @param  {element} 需要创建虚拟框的元素* @param  {object} 元素的位置----------参数为GetElementInfo 返回值*/U.D.foundVirtualBox = function (UDOD, UE) {    UDOD = $(UDOD);    UE = UE || UDOD.GetElementInfo(); //获取元素的位置    return $$("div", { "style": { "cssText": "pointer-events:none;border:2px solid Gray;position:absolute;top:" + (UE["OT"] - 2) + "px;left:" + (UE["OL"] - 2) + "px;width:" + (UE["OW"]) + "px;height:" + (UE["OH"]) + "px;z-index:" + (US.ZV + 10)} }, UDOD.Parent());}/** 拉伸函数处理** @param  {element} 需要拉伸的元素* @param  {function} 拉伸回调函数----------参数为GetElementInfo 返回值*/U.D.AddOM = function (UDOD, UCB) {    if (!$(".UD_W_WT", UDOD)[0]) { //拉伸对象不存在        var i,        _UTE = U.D.RCDG(UDOD, null, UCB), //创建拉伸处理        _UTP = "UD_W_WT",        _UDE = [["H", "up"], ["MR", "right"], ["B", "down"], ["ML", "left"], ["HL", "topright"], ["BR", "bottomright"], ["BL", "bottomleft"], ["HR", "topleft"]], //拉伸所有的监视 和 className 的设置        _UDTD = $$("div", { "className": "UD_W_WT" }); //新建立一个容器        for (i = 0; i < _UDE.length; i++) { //添加上下左右处理元素            $$("div", { "className": _UTP + "_" + _UDE[i][0], "onmousedown": U.M.apply(_UTE, [[_UTE.set, [_UDE[i][1]]]]) }, _UDTD);        }        UDOD.appendChild(_UDTD); //添加拉伸元素    }}/** 拉伸执行** @param  {element} 需要拉伸的元素* @param  {string} 需要调用的回调* @param  {function} 拉伸回调函数----------参数为GetElementInfo 返回值*/U.D.RCDG = function (UDOD, UTF, UCB) {    return new U.D.RCDG.init(UDOD, UTF, UCB);}/** 拉伸执行** @param  {element} 需要拉伸的元素* @param  {string} 需要调用的回调* @param  {function} 拉伸回调函数*/U.D.RCDG.init = function (UDOD, UTF, UCB) { //拖动的拉伸    /*    注释:    -----UCB 回调函数    -----UDOD 拉伸的原函数    */    U.Ut.AddObj(this, { UCB: UCB, UDOD: UDOD });    (UTF) && (this.set(UTF)); //设置回调}U.D.RCDG.init.prototype = {    /*    * 拉伸执行    *    * @param  {element} 需要拉伸的元素    * @param  {string}     * @param  {function} 拉伸回调函数    */    set: function (UTF) {        var i, _UDMD,        _UDOD = this.UDOD,        _UE = U.M.GetElementAllInfo(_UDOD), //当前位置        _UDE = [["move", UTF], ["up", "mup"]];        if (UTF && event.button != 2 && (_UE["OH"] != US.Height || _UE["OW"] != US.Width)) { //非右键            //内部使用变量设置            U.Ut.AddObj(this, {                UMD: (_UDMD = U.D.Masklayer()), //拉伸虚拟框                UTF: UTF, //拖动时回调函数                UTOD: U.D.foundVirtualBox(_UDOD), //虚拟框                E: _UE, //当前的位置大小                H: _UE.H, //原高                W: _UE.W, //原长                T: _UE.OT, //原top                L: _UE.OL//原left            });            this.UTOD.setCapture(); //创建使用的变量            //虚拟框和拖动看置顶            U.D.SetDTop(this.UTOD);            U.D.SetDTop(_UDMD); //虚拟框            //拖动元素监视            for (i = 0; i < _UDE.length; i++) {                document["onmouse" + _UDE[i][0]] = U.M.apply(this, [[this[_UDE[i][1].toLocaleLowerCase()]]]);            }            //返回拖动对象            return this; //设置拉伸        }    },    //向上拉伸    up: function () {        var _UE = U.M.GetMousep(), //获取鼠标的位置        _UT = Math.min(Math.max(_UE["Y"], 0), this.T + this.H - 4), //获取拉伸头部的top位置        _UH = this.H + (this.T - _UT); //计算高度        $(this.UTOD).addAttrArray({ "style": { "cssText": "top:" + (_UT - 2) + "px;height:" + (_UH) + "px"} }); //设置样式    },    //下面拉伸    down: function () {        var _UE = U.M.GetMousep(); //鼠标所在的位置        _UE["Y"] = Math.max(Math.min(_UE["Y"], US.Height), this.T); //获取拉伸的位置        this.UTOD.style.height = (_UE["Y"] - this.T) + "px"; //拉伸后的大小处理    },    //左边拉伸    left: function () {        var _UE = U.M.GetMousep(), //鼠标所在的位置        _UL = Math.min(Math.max(_UE["X"], 0), this.L + this.W - 4), //左边位置处理        _UW = this.W + this.L - _UL; //长度变化        $(this.UTOD).addAttrArray({ "style": { "cssText": "left:" + (_UL - 2) + "px;width:" + (_UW) + "px"} });    },    //右边    right: function () {        var _UE = U.M.GetMousep();  //鼠标所在的位置        _UE["X"] = Math.max(Math.min(_UE["X"], US.Width), this.L); //右边位置处理        this.UTOD.style.width = (_UE["X"] - this.L) + "px"; //内容大小处理    },    //左上    topleft: function () {        this.up(); //向上拉伸        this.left(); //左边拉伸    },    //右上    topright: function () {        this.up(); //向上拉伸        this.right(); //右边拉伸    },    //左下    bottomleft: function () {        this.down(); //向下拉伸        this.left(); //向左拉伸    },    //右下    bottomright: function () {        this.down(); //向下拉伸        this.right(); //右边拉伸    },    //结束拉伸    mup: function () {        var i, _UPE = this.E.PD,        _UBE = this.E.BD,        _UDTD = $(this.UTOD), //拉伸元素        _UCE = U.M.GetElementAllInfo(this.UTOD), //拉伸元素的大小        _UDE = [_UCE["W"], _UCE["H"]];        //设置得到的位置和大小        for (i = 0; i < _UPE.length; i++) {            _UDE[(i + 1) % 2] -= (_UPE[i] + _UBE[i]);        }        //设置拉伸元素        $(this.UDOD).addAttrArray({ "style": { "cssText": "left:" + (_UCE["OL"] + 2) + "px;top:" + (_UCE["OT"] + 2) + "px;width:" + _UDE[0] + "px;height:" + _UDE[1] + "px"} }); //设        //清空        $(_UDTD).remove();        _UDTD[0].releaseCapture();        document.onmousemove = document.onmouseup = null;        $(this.UMD).remove();        //回调设置        U.D.withf(this.UCB, _UDE);   //清空 //执行回调                  }}/** 回调执行** @param  {object} 回调函数或者参数* @param  {object} 回调的参数*/U.D.withf = function (UAE, UDE) {    if (UAE) {        var i, j, k, _UCE, _UDOD,        _UKE = {};        for (i in UAE) {            if (UAE.hasOwnProperty(i)) {                //处理元素共同变化处理 这个会更加最大拖拉的元素 自适应                if (i == "with") {                    for (j = 0; j < UAE[i].length; j++) {                        _UCE = UAE[i][j];                        _UDOD = _UCE["Element"]; //获取需要变化的元素集                        for (k in _UCE) {                            if (_UCE.hasOwnProperty(k) && k != "Element") { //变化的样式处理                                _UKE[k] = _UCE[k] + UDE[k == "width" ? 0 : 1];                            }                        }                        $(_UDOD).addAttrArray({ style: _UKE });                    }                }                //直接回调自己处理                else { U.M.apply(null, UAE[i])(UDE); } //执行回调            }        }    }}//#endregion
 |