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

2021-09-22 07:27:36 字數 2150 閱讀 5363

上一周我說到,我要開始做乙個仿桌面系統的cms。現在,一周過去了,來做個小小的總結吧,順便把上一周片尾留的小問題解答下。桌面

關於介面,思前想後,還是模仿115的了,說是模仿,其實幾乎是照搬。因為我看了下html和css,沒有什麼太大的技術含量,製作起來也不會遇到什麼困難,乾脆捨棄這一步,進入後面的話題。

上週我留下了乙個問題,就是桌面那乙個個快捷方式,為什麼不能直接寫在頁面裡,而要通過js來載入。其實,並非一定要通過js載入生成,但是即便寫在頁面裡,也還是通過js來定位,對,就是定位。試想一下,瀏覽器的視窗有大有小,如果直接寫在頁面裡固定死,那視窗縮小了,豈不是要把有的圖示給遮住了。所以針對這個問題,操作辦法是:

1、每個圖示的position樣式定義為absolute,也就是絕對定位

2、通過js來對每個圖示定位

3、當改變視窗尺寸的時候,更新每個圖示的定位

下面就講解下,由於這個不是教程,沒有準備過各個情況下的demo,我就直接用firebug截圖演示了,請原諒。

首先是第乙個,定義每個圖示的position樣式為absolute,看圖吧

這是已經ok的效果圖,如果我們把position:absolute注釋掉,看看會怎麼樣。

我們看到,圖示就直接一排豎著排到底了,超出的部分就看不到了。所以,position:absolute就是來解決這一問題的。

接下來,我們繼續看。我們都知道absolute通常是要配合top、right、left、bottom這4個方向來實現絕對定位的,如果不設定,就會出現這種情況。為了做測試,我手動把li的行內樣式給去掉了。

我們看到就只有1個了圖示了,其實不是,是所有圖示都疊加在一起了,所以,定義好position:absolute必須還要定義好每個圖示的偏移畫素,而這個操作,我是通過js來處理的。

$(window).bind('load',function()

} });

//id,iconname,iconurl,url,width,height,top,left

var shortcut = [

[0,"欄目管理","img/kind.png","***.php",800,500,0,300],

[1,"新聞管理","img/news.png","***.php",800,200,100,300],

[2,"通訊錄","img/tel.png","***.php",800,500,0,300],

[3,"欄目管理","img/news.png","***.php",800,500,0,300],

[4,"欄目管理","img/news.png","***.php",800,500,0,300],

[5,"欄目管理","img/news.png","***.php",800,500,0,300],

[6,"欄目管理","img/news.png","***.php",800,500,0,300],

[7,"欄目管理","img/news.png","***.php",800,500,0,300]

];

上面第一段js注釋寫的應該很明了了吧,原理就是,通過js來迴圈新增li物件,也就是圖示,同時把圖示的偏移量設定好,當某個圖示的位置在顯示窗體之外時,自動換到第二列,也就是把top歸零,left加上一定的偏移數值。

最後一步,當窗體改變尺寸的時候,更新。這裡的更新有2種方法,一種是重新再載入一遍,這個就不用我多說了,就是把第二步再執行一遍,當然先要把原先的清空。另一種方法就是通過js修改每個圖示的偏移量。我採用的是第二種方法,可以參考下**。

$(window).bind('resize',function());

_top += 90;

if(_top+core.config.shortcuttop+57 > windowheight)

});});

所以,這周,繼續加油吧。

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

按住我拖動 一晃又過去乙個多星期了,途 了個差,進度上略有耽誤,不過還好,上次有個話題沒說完,這次繼續,就是視窗拖動以及改變視窗尺寸。視窗拖動 改變視窗尺寸 html 如下 按住我拖動 ready function titledemo bind mousedown function e docume...

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

智慧型修改視窗的位置 在測試的時候,我發現調整瀏覽器尺寸後,原先靠近瀏覽器邊緣的視窗就直接被隱藏掉了,如下圖 出現這問題的原因也很簡單,因為視窗的top left的值是寫死的,當瀏覽器的寬高小於視窗top left時,必然會被隱藏掉。解決辦法就是在調整瀏覽器尺寸的同時,把視窗的top left也一起...

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

這次主要講一下js模板和滑鼠右鍵功能,東西比較簡單,我就沒有做demo,簡單說下原理吧。js模板 為什麼要使用js模板?因為在這個系統裡,我經常要開啟乙個或多個視窗,但實際上這些視窗的html 都是一樣的,只是其中的引數稍微有點變化。既然如此,何不寫成模板,把引數定義成指定格式的標籤,然後用正則批量...