EonerCMS 做乙個仿桌面系統的CMS(四)

2021-09-08 02:09:52 字數 2277 閱讀 9575

按住我拖動

一晃又過去乙個多星期了,途**了個差,進度上略有耽誤,不過還好,上次有個話題沒說完,這次繼續,就是視窗拖動以及改變視窗尺寸。

視窗拖動&改變視窗尺寸

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 都是一樣的,只是其中的引數稍微有點變化。既然如此,何不寫成模板,把引數定義成指定格式的標籤,然後用正則批量...