国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > CSS > 正文

開發(fā)基于Web的CSS設(shè)計(jì)器

2024-07-21 02:16:21
字體:
供稿:網(wǎng)友
國(guó)內(nèi)最大的酷站演示中心!
這半年參與了一個(gè)基于asp.net的中型應(yīng)用系統(tǒng)開發(fā),其間經(jīng)歷種種,收獲不少。前段時(shí)間做了一個(gè)基于web的css設(shè)計(jì)器,雖然技術(shù)不算復(fù)雜,不過綜合了c#/xml/htc等技術(shù),對(duì)于大家應(yīng)該有一定參考價(jià)值;而且該設(shè)計(jì)器相對(duì)于系統(tǒng)比較獨(dú)立,因此在這里和大家共享,供大家參考,并請(qǐng)多提意見!

設(shè)計(jì)器的主要功能就是在web界面上設(shè)計(jì)操作css樣式表,目的是方便用戶自定義系統(tǒng)界面。

相信做過的人大多用過dreamweaver或者做asp.net開發(fā)也應(yīng)該用過vs.net,那么應(yīng)該熟悉里面的樣式(style)設(shè)計(jì)器,這里就是在web上實(shí)現(xiàn)這個(gè)設(shè)計(jì)器。


1.系統(tǒng)流程

下面我們先來了解一下整個(gè)系統(tǒng)流程








































流程再簡(jiǎn)單說明一下

·先傳入?yún)?shù)包括文件名/樣式名/操作方法/可視化樣式元素;其中可視化樣式元素是要在設(shè)計(jì)器中即時(shí)顯現(xiàn),供效果預(yù)覽的,同時(shí)也是承載樣式定義內(nèi)容的要素(樣式就加載在元素的style屬性上)。

·然后設(shè)計(jì)器根據(jù)傳入?yún)?shù)操作,根據(jù)操作方法-新建文件/新建樣式/修改樣式,前兩者在初始化時(shí)不用讀取樣式文件,最后者需要讀取樣式進(jìn)行初始化;利用一個(gè)設(shè)計(jì)的c#類來對(duì)樣式文件和樣式類進(jìn)行操作。

·在客戶端利用javascript操作xmldocument對(duì)象讀取xml定義的樣式文件,進(jìn)行設(shè)計(jì)器構(gòu)建。

·利用javascript通過樣式元素的csstext屬性讀取樣式值,對(duì)設(shè)計(jì)器初始化。

·用戶操作設(shè)計(jì)器,利用htc組件操作設(shè)計(jì)樣式。

·保存,利用c#類操作。


2.css設(shè)計(jì)器之樣式表操作類

下面,我們來詳細(xì)察看流程的每個(gè)環(huán)節(jié)。

為了操作樣式表,設(shè)計(jì)了一個(gè)簡(jiǎn)單的樣式表操作類。功能主要是解析操作指定樣式表文件,實(shí)現(xiàn)對(duì)樣式類的添加、修改、刪除、保存。

機(jī)制:讀取web服務(wù)器上某樣式表文件,將文本轉(zhuǎn)化為一個(gè)arraylist,數(shù)組元素為自定義的classitem對(duì)象,包含name和text屬性(name即樣式名稱,text即樣式的內(nèi)容);然后通過對(duì)arraylist操作,控制樣式,最后保存。

由于在服務(wù)器段我們不作具體樣式定義,因此該類只操作到樣式類級(jí)別,不涉及樣式屬性和值。

下面提供該類的uml圖 classitem 是一個(gè)結(jié)構(gòu)體,僅包含兩個(gè)屬性;




3.css設(shè)計(jì)器之xml樣式屬性定義

css樣式中包含很多屬性設(shè)置,設(shè)計(jì)器中當(dāng)然要包含相應(yīng)的屬性;那么這些屬性信息從哪里來呢?

采用xml定義是一種很自然就會(huì)想到的方式。

經(jīng)常使用dw和vs.net,所以在交互設(shè)計(jì)上采用了類似的模式;先將樣式屬性按應(yīng)用分類,再設(shè)置詳細(xì)屬性。

css屬性是比較復(fù)雜的,如果要完全按照dw或vs.net的模式,實(shí)現(xiàn)會(huì)比較復(fù)雜。為了簡(jiǎn)化,我把值的輸入簡(jiǎn)化為兩種形式,選擇和文本輸入。對(duì)于選擇,直接在xml文件中定義;對(duì)于文本輸入,抽象幾種輸入類型,在設(shè)計(jì)器生成時(shí)根據(jù)類型設(shè)定不同的htc組件操作。這樣就將一些復(fù)雜的屬性輸入封裝到htc組件中,整個(gè)構(gòu)架就簡(jiǎn)潔起來。


xml文件描述

首先是屬性分類

<cssdesign>
<category>
<name>文字</name>
<style>
<name>字體</name>
......
</style>
<style>
<name>樣式</name>
......
</style>
......
</category>
<category>
<name>背景</name>
<style>
<name>顏色</name>
......
</style>
......
</category>
</cssdesign>

系統(tǒng)分為文字、背景、文本、位置、布局、方框、邊框和其他,每種類型有一個(gè)name子元素和若干style子元素。


每個(gè)style子元素表示一個(gè)style屬性,結(jié)構(gòu)如下

<style>
<name>字體</name>
<cssname>font-family</cssname>
<actiontype>select</actiontype>
<selectitems>
<item>verdana,arial</item>
<item name="宋體">simsun</item>
<item name="黑體">simhei</item>
</selectitems>
</style>

<style>
<name>大小</name>
<cssname>font-size</cssname>
<actiontype>select</actiontype>
<selectitems>
<item>12px</item>
<item>14px</item>
<item>9px</item>
</selectitems>
</style>

<style>
<name>顏色</name>
<cssname>background</cssname>
<actiontype>input_colorselect</actiontype>
</style>


name 為該屬性的描述名稱,在設(shè)計(jì)器中為文本描述;

cssname 為屬性名,在設(shè)計(jì)器中即輸入字段的id,初始化時(shí)也據(jù)此賦值;

actiontype 為屬性設(shè)置方法,在設(shè)計(jì)器中為輸入字段的樣式類名,該樣式中含有behavior屬性,制定htc組件;

selectitems 為選擇項(xiàng),如果actiontype為select,將會(huì)在此列出選擇項(xiàng);其子元素item如果含有name屬性,將顯示在設(shè)計(jì)器中,否則直接顯示該元素的文本內(nèi)容


框架圖

此為縮略圖,請(qǐng)點(diǎn)擊打開





4.css設(shè)計(jì)器之界面交互

整個(gè)操作交互過程,除了最后保存文件外,其他都是由javascript完成。

首先designerbuild函數(shù)通過xmldocumnet讀取xml樣式屬性定義文件,構(gòu)建整個(gè)設(shè)計(jì)器界面。然后init函數(shù)讀取服務(wù)器端賦給設(shè)計(jì)元素的style.csstext屬性,并把屬性作為輸入控件id在設(shè)計(jì)器中查找并賦值,完成初始化。

在操作過程中,根據(jù)輸入控件的樣式類class,觸發(fā)綁定的htc組件,做相應(yīng)的客戶端操作。

最后再讀取設(shè)計(jì)元素的style屬性,保存。


設(shè)計(jì)器界面






不同的設(shè)計(jì)元素





不同輸入控件的不同class屬性(根據(jù)xml中actiontype生成)觸發(fā)不同htc組件,實(shí)現(xiàn)不同輸入模式。








由于商業(yè)原因,這里不便提供源代碼;我將在后面提供部分關(guān)鍵代碼供參考。

由于時(shí)間有限,無法一次完成,請(qǐng)見諒。


謝謝大家捧場(chǎng)看了這么久 :)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 通山县| 遂宁市| 家居| 慈溪市| 闵行区| 类乌齐县| 岳西县| 夏津县| 平湖市| 蓝山县| 樟树市| 卓资县| 依安县| 呈贡县| 安溪县| 麻城市| 邯郸县| 莱阳市| 乌拉特中旗| 弥勒县| 太谷县| 习水县| 紫云| 凉城县| 葵青区| 东乡| 资中县| 宣恩县| 钟祥市| 石狮市| 无极县| 金川县| 内江市| 屯留县| 丁青县| 琼结县| 武隆县| 三河市| 香河县| 山丹县| 本溪|