按住我拖動
一晃又過去乙個多星期了,途**了個差,進度上略有耽誤,不過還好,上次有個話題沒說完,這次繼續,就是視窗拖動以及改變視窗尺寸。
視窗拖動&改變視窗尺寸
html**如下:
按住我拖動
$().ready(function());
$(".titledemo").bind("mousedown",function(e));
});});
$(document).bind("mouseup",function());
});var moveline = ;
var ml="";
for(ml in moveline)
});function bindresize(ml)
break;
case "r":
if(w-cx+e.clientx>100)
break;
case "b":
if(h-cy+e.clienty>50)
break;
case "l":
if(w+cx-e.clientx>100)
break;
case "rt":
if(h+cy-e.clienty>50)
if(w-cx+e.clientx>100)
break;
case "rb":
if(w-cx+e.clientx>100)
if(h-cy+e.clienty>50)
break;
case "lt":
if(w+cx-e.clientx>100)
if(h+cy-e.clienty>50)
break;
case "lb":
if(w+cx-e.clientx>100)
if(h-cy+e.clienty>50)
break;
}});
});}function getoffset(e)
var pagecoord = getpagecoord(target);
var eventcoord =;
var offset = ;
return offset;
}function getpagecoord(element);
while(element)
return coord;
}
首先我給可拖動的視窗加了個data屬性,用來存放width、height、top、left四個屬性值,在每次移動或者改變尺寸,都對這個值進行更新並存放,目的就是當視窗最大化後,點還原可以還原到最大化前的尺寸和位置。
然後我對標題欄繫結了滑鼠按下去的事件,然後在事件裡繫結了document的滑鼠滑動事件,而不是直接對標題欄繫結滑動事件,目的就是防止出現滑鼠移動過快,移除標題欄那塊區域,導致拖動效果一卡一卡的現象。
之後就是獲取滑鼠移動的位置,更新可拖動視窗的top和left值。
接著就是改變視窗尺寸,我事先先對8個div繫結好事件,然後也是用類似的方法,獲取滑鼠位置,更新視窗的width、height、top、left的值。值得一提的是,因為火狐不認識offsetx和offsety,所以**最下面有2個方法,就是用來獲取火狐下offset的xy值的,呼叫方法就是:getoffset(e).offsetx
功能大致上就是這些了,因為是demo,所以細節需要大家去考慮,比如拖動到頁面頂部,則不能再往上拖動,防止拖到瀏覽器外面,當然底部也一樣。
盡量避免上面這種情況
關於左右兩側,我是參考了win7裡的乙個小功能,就是滑鼠拖動到視窗邊緣時,自動把視窗變成半屏,這樣的目的就是為了之後cms系統有更高效的操作,比如我要同時操作新聞欄目和新聞文章,就可以左右兩邊分別開啟這兩個頁面,然後同步操作,提高效率。
ps:其實功能上大致已經ok了,我打算十一把細節優化一下,國慶放假回來我就先放出整個cms的demo給大家看下,到時候還希望大家多多幫我提提意見,因為畢竟是乙個人做的,考慮的東西不是很全。
ps2:感謝gray zhang(灰哥)在某js群裡對我的問題給予解答
EonerCMS 做乙個仿桌面系統的CMS(二)
上一周我說到,我要開始做乙個仿桌面系統的cms。現在,一周過去了,來做個小小的總結吧,順便把上一周片尾留的小問題解答下。桌面 關於介面,思前想後,還是模仿115的了,說是模仿,其實幾乎是照搬。因為我看了下html和css,沒有什麼太大的技術含量,製作起來也不會遇到什麼困難,乾脆捨棄這一步,進入後面的...
EonerCMS 做乙個仿桌面系統的CMS(七)
智慧型修改視窗的位置 在測試的時候,我發現調整瀏覽器尺寸後,原先靠近瀏覽器邊緣的視窗就直接被隱藏掉了,如下圖 出現這問題的原因也很簡單,因為視窗的top left的值是寫死的,當瀏覽器的寬高小於視窗top left時,必然會被隱藏掉。解決辦法就是在調整瀏覽器尺寸的同時,把視窗的top left也一起...
EonerCMS 做乙個仿桌面系統的CMS(五)
這次主要講一下js模板和滑鼠右鍵功能,東西比較簡單,我就沒有做demo,簡單說下原理吧。js模板 為什麼要使用js模板?因為在這個系統裡,我經常要開啟乙個或多個視窗,但實際上這些視窗的html 都是一樣的,只是其中的引數稍微有點變化。既然如此,何不寫成模板,把引數定義成指定格式的標籤,然後用正則批量...