亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

開發基于Web的CSS設計器.代碼參考

2024-07-21 02:21:42
字體:
來源:轉載
供稿:網友
這里對前面文章講的css設計器系統關鍵代碼作一些小結,如果沒有看過前面文章的請先參看"開發基于web的css設計器"


解析css樣式文件

這段代碼主要作用是把css文件分解為多個樣式類,并按名稱/文本屬性生成classitem對象,并保存在一個arraylist(csslist)中(c#代碼)

//讀取文件
fileinfo thesource= new fileinfo (@m_filepath);
streamreader reader = thesource.opentext();
//將文件流轉化為文本
m_csstext = reader.readtoend();
reader.close();
//定義css文本分割符
char[] delimiters = new char[] { '{','}'};
int icheck = 1;
string classname = null;
//將文本轉化為arraylist
foreach ( string substring in m_csstext.split(delimiters))
{
if (icheck%2==0)
//當icheck為偶數時,字符串為樣式屬性內容
//將解析的樣式名和屬性作為classitem對象存入csslist
csslist.add( new classitem ( classname, substring.trim() ) );
else
//當icheck為奇數時,字符串為樣式名,暫存
classname = substring.trim();
icheck++;
}




交互界面構建

交互界面由javascript通過xmldocument讀取xml文件動態生成。

首先要讀取xml文件,然后遍歷整個xml文件,先遍歷樣式分類,再對每個分類遍歷其下的所有樣式屬性。比較關鍵的代碼是對xml的遍歷,下面是對樣式分類的遍歷代碼。


//loadxml是xml文件讀取函數
var dom = loadxml("css.xml");
//通過xpath和selectnodes方法返回一個xmldomnodelist對象
var onode = dom.selectnodes("//category/name");
//獲取該對象長度,即xml文檔中該路徑節點的數量
var intcategory = onodes.length;
for (i=0; i<intcategory; i++)
{
//獲取集合中的節點
onode = onodes.nextnode;
if (onode != null)
{
//樣式分類界面構建代碼-略
……
}
}




樣式輸入控件構建函數,該函數作用是根據xpath路徑查詢xml定義,生成交互控件


function buildinput ( path )
{
var str="";
var anode=null;
var attvalue=null;
//通過selectsinglenode返回符合條件的第一個節點
var actnode = dom.selectsinglenode(path+"actiontype");
var namenode = dom.selectsinglenode(path+"cssname");
//如果屬性為選擇輸入,則讀取selectitems,并構建select控件
if (actnode.text=="select")
{
str += "<select id='"+namenode.text+"' name='"+namenode.text+"' class='eselect'>/n";

//查詢該項的所有選擇列表項
var itemsnodes = dom.selectnodes (path+"selectitems/item");
str += "<option value='-1'>未設置</option>/n";
for (ii=0;ii<itemsnodes.length;ii++)
{
anode = dom.selectsinglenode (path+"selectitems/item["+ii+"]");

//如果該項含有name屬性則在列表中顯示name屬性值
attvalue = anode.getattribute("name")
var txtnode = dom.selectsinglenode (path+"selectitems/item["+ii+"]");

if (attvalue==null)
str += "<option value='"+txtnode.text+"'>"+txtnode.text+"</option>/n";
else
str += "<option value='"+txtnode.text+"'>"+attvalue+"</option>/n";
}

str += "</select>";
}
else

//如果屬性為其他模式,則構建input輸入,設置class屬性為actiontype
{
str = "<input name='"+namenode.text+"' id='"+namenode.text+"' class='"+actnode.text+"'>/n";
}

return(str);
}





設計器初始化

js腳本讀取解析樣式元素的style屬性值,然后為設計器中構建的控件賦值


//設計器初始化
function init()
{
//獲得由服務器端賦值的樣式屬性值
var txt=document.all("demoshow").style.csstext;
if (txt.length>0)
{
var strclassname;

//解析字符串
var aryclass = txt.split(/[:;]/);
for( i in aryclass)
{
var str = aryclass[i].replace(/(^/s*)|(/s*$)/g, "");
if(!(i%2==1))
{
//當i為奇數時,解析的字符串應該為樣式屬性名稱
strclassname=str;
}
else
{
//當i為偶數時,獲得屬性值
//屬性名稱即控件id
//判斷該屬性對應的控件是輸入框還是選擇列表
if(document.all(strclassname).type=="select-one")
{

//如果是選擇列表通過setindexofvalue函數設定選擇項
setindexofvalue(strclassname,str);

}
else
{
document.all(strclassname).value=str;
}
}
i++;
}
}
}





界面交互

在xml中一共定義了select/input_colorselect/input_sizeselect/input_borderselect(后3種為顏色/大小/邊框輸入模式)共4種輸入模式,除select為直接選擇外,其他在對應控件初始化的時候作為class屬性賦值到控件中,類似class代碼如下


/* 顏色輸入模式input框的樣式類 */
.input_colorselect{
width:100px;
font-family:tahoma;
behavior:url(htc/effcolorselect.htc);
}




通過behavior屬性,把該輸入控件和相應的組件相關聯,該組件effcolorselect.htc代碼如下


<public:attach event="onfocus" onevent="getshow()"/>
<public:method name="getchange"/>
<script language="jscript">
function getshow()
{
element.blur();

//記錄當前交互控件的id
effelement=element.id;
//在頁面中加載輸入控件
showcontrol ("selectcolor");
}

function getchange()
{
//當值發生變化時,對可視化樣式元素賦值
setattribute(element.id,element.value);
}
</script>






其他

設計器中的值輸入模式框只是頁面中的幾個層,通過上面的htc組件觸發顯示出來,輸入后再把值傳入到樣式屬性控件中,同時也會設置可視化樣式元素。

另外還需要注意的是,xml文檔是可以自行擴展或縮減的,但是在實際應用中,不能完全依據css標準來定義,因為可視化元素的style屬性會自動格式化。例如如果你在xml中定義border-bottom-width屬性,在將值取出時會自動格式化為border-bottom,這樣會造成設計器中控件不能匹配。我在msdn沒有查到相關文檔,所以只有經過實際測試來驗證。


ok,比較關鍵的代碼已經差不多了……希望能對大家有所幫助。


參考

另外再列出部分技術參考,如果大家對其中的技術細節如htc和xmldom等有所疑問,可以再詳細研究一下,也歡迎大家來和我交流 [email protected] 。

msdn關于js操作xmldom的文檔
這是英文文檔,網上沒有看到比較詳細的中文文檔,好在不復雜,大家將就一下吧 :)
(最近msdn不知道什么毛病,經常訪問有問題,如果無法訪問,請先登錄msdn,再輸入地址瀏覽)

藍色理想的htc教程
網上也沒看見比較全面的講述,這個簡單易學,基本概念清楚了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级大片在线免费观看| 欧美日韩999| 欧美黄色片免费观看| 少妇av一区二区三区| 91欧美视频网站| 亚洲肉体裸体xxxx137| 欧美激情视频播放| 亚洲天堂av女优| 在线观看日韩专区| 在线亚洲午夜片av大片| 91久久精品久久国产性色也91| 中文字幕亚洲欧美日韩2019| 国产精品成久久久久三级| 色七七影院综合| 亚洲欧美日韩视频一区| 国产精品第三页| 亚洲字幕一区二区| 精品亚洲一区二区三区在线观看| 成人美女免费网站视频| 久久人人爽人人爽人人片av高清| 97欧美精品一区二区三区| 亚洲一区二区三区成人在线视频精品| 国产一区二区三区在线观看视频| 亚洲色图五月天| 国产激情久久久| 国产精品欧美日韩一区二区| 亚洲欧美日韩一区在线| 久久天天躁狠狠躁老女人| 成人免费观看49www在线观看| 中文字幕日韩av电影| 97精品伊人久久久大香线蕉| 亚洲第一视频网站| 亚洲一区制服诱惑| 久久久久久18| 亚洲区一区二区| 亚洲第一区在线| 国产激情久久久| 一区二区欧美日韩视频| 51午夜精品视频| 日韩视频第一页| 久久视频精品在线| 国产精品主播视频| 亚洲国产精品小视频| 久久免费在线观看| 日韩免费看的电影电视剧大全| 欧美激情精品久久久| 成人欧美一区二区三区黑人| 亚洲人午夜精品免费| 欧美性极品xxxx做受| 高清欧美性猛交xxxx黑人猛交| 精品欧美aⅴ在线网站| 91免费高清视频| 日韩电影在线观看永久视频免费网站| 在线视频亚洲欧美| 欧美老女人性视频| 欧美精品videos| 国产精品成人国产乱一区| 亚洲男人天堂九九视频| 国产一区二区av| 性欧美xxxx交| 91深夜福利视频| 久久久国产一区二区| 一区二区中文字幕| 国产精品99久久久久久人| 992tv在线成人免费观看| 久久成人精品一区二区三区| 欧美综合在线观看| 欧美亚洲视频一区二区| 久久精品国产亚洲7777| 日韩中文字幕视频在线观看| 91久久久久久久久久久| 欧美在线国产精品| 亚洲精品动漫100p| 亚洲国产美女久久久久| 久久视频这里只有精品| 欧美激情视频在线| 亚洲一区av在线播放| 操人视频在线观看欧美| 国产97在线|日韩| 亚洲精品在线视频| 2019中文字幕全在线观看| 亚洲网站在线播放| 亚洲性夜色噜噜噜7777| 欧美性高跟鞋xxxxhd| 国产精品久久久久久久久久新婚| 国产精品揄拍一区二区| 中文字幕在线视频日韩| 日韩在线视频线视频免费网站| 夜夜狂射影院欧美极品| 黑丝美女久久久| 亚洲精美色品网站| 成人做爰www免费看视频网站| 亚洲精品一二区| 欧美精品一区在线播放| 日韩精品一区二区三区第95| 蜜月aⅴ免费一区二区三区| 欧美日韩美女在线| 欧美成人免费观看| 亚洲国产精品va| 欧美性猛交xxxx黑人猛交| 久久国产精品影片| 日韩精品高清在线观看| 亚洲国产精品小视频| 欧美在线观看网站| 精品国偷自产在线视频99| 91亚洲精品一区| 国产在线拍揄自揄视频不卡99| 精品在线观看国产| 欧美国产日产韩国视频| 亚洲精品日产aⅴ| 国内外成人免费激情在线视频网站| 国产精品爽爽爽爽爽爽在线观看| 国产裸体写真av一区二区| 久久久在线免费观看| 亚洲成人av片| 亚洲欧美日韩精品久久奇米色影视| 人人做人人澡人人爽欧美| 中文字幕亚洲一区| 久久精品国产亚洲精品2020| 国产91精品青草社区| 国产精品久久婷婷六月丁香| 亚洲香蕉成视频在线观看| 97超级碰在线看视频免费在线看| 91精品久久久久久久久不口人| 欧美xxxx做受欧美| 伊是香蕉大人久久| 91在线高清视频| 日韩精品在线视频观看| 亚洲综合在线小说| 日韩av免费在线| 欧美在线国产精品| 在线播放国产精品| 乱亲女秽乱长久久久| 欧美激情一区二区三区久久久| 亚洲成人激情小说| 在线视频一区二区| 亚洲欧洲成视频免费观看| 92看片淫黄大片欧美看国产片| 最新91在线视频| 国产色婷婷国产综合在线理论片a| 亚洲人成绝费网站色www| 精品久久久久久国产91| 亚洲欧洲成视频免费观看| 欧美成人免费观看| 欧美日韩中文字幕综合视频| 精品国产91久久久| 欧美极品美女视频网站在线观看免费| 国产精品久久久久久久久免费| 久久精品免费电影| 欧美精品手机在线| 中文字幕日本欧美| 97视频在线观看成人| 亚洲男人的天堂在线播放| 国产a∨精品一区二区三区不卡| 欧美精品中文字幕一区| 国模极品一区二区三区| 亚洲春色另类小说| 欧洲精品久久久| 伊人一区二区三区久久精品| 国内精品久久久久久| 亚洲欧美日韩视频一区| 日本一区二区在线免费播放| 中文字幕日韩在线观看| 久久久国产成人精品|