VML应用实例大全
VML应用实例大全
发布时间:2016-12-29 来源:查字典编辑
摘要:蓝丽网-Vml图像画板.2003v:*{behavior:url(#default#VML);}/*声明V为VML变量*/a{text-De...

<HTML xmlns:v>

<HEAD>

<META http-equiv="Content-Type" content="text/html; Charset=gb2312">

<META name="GENERATOR" content="网络程序员伴侣(Lshdic)2004">

<META name="GENERATORDOWNLOADADDRESS" content="http://www.lshdic.com/downlshdic.asp">

<META NAME="KEYWORDS" CONTENT="Vml图像画板">

<title>蓝丽网 - Vml图像画板.2003</title>

<STYLE>

v:*{behavior:url(#default#VML);} /*声明V为VML变量*/

a{text-Decoration:none;color:white}

a:hover{text-Decoration:underline;color:yellow;}

td{font-size:12px;color:white}

.bon1{border-bottom:1 solid eeeeee;border-right:1 solid eeeeee;border-left:1 solid gray;border-top:1 solid gray;background-color:#619CE7;color:yellow;width:54}

.bon2{border-bottom:1 solid gray;border-right:1 solid gray;border-left:1 solid eeeeee;border-top:1 solid eeeeee;background-color:#619CE7;color:white;width:54}

</STYLE>

</HEAD>

<BODY oncontextmenu='return false' vlink=#3732CD link='#3732CD' onselectstart='if(event.srcElement.tagName!="TEXTAREA"&&event.srcElement.tagName!="INPUT")return false'>

<v:Line id='line1'> <>

<v:Stroke dashstyle='shortdash'/>

</v:line>

<v:Oval id='oval1'> <>

<v:Stroke dashstyle='shortdash'/>

</v:oval>

<v:rect id='rect1'> <>

<v:Stroke dashstyle='shortdash'/>

</v:rect>

<v:roundrect id='roundrect1'> <>

<v:Stroke dashstyle='shortdash'/>

</v:roundrect>

<span id='wenzi1'> <>

<textarea id='txt1'></textarea><br>

<center><input type='button' value='插入'>

</span>

<span id='tupian1'> <>

<input type='file' id='file1'><br>

<center><input type='button' value='插入'>

</span>

<span id='gaoji1'> <>

<textarea id='txt2'></textarea><br>

<center><input type='button' value='修改'>

</span>

<span id='yuandaima'> <>

<textarea id='txt3'></textarea><br>

<center><input type='button' value='复制'> <input type='button' value='更新修改'> <input type='button' value='取消'>

</span>

<span id='menu1'> <>

<input type=button class=bon2 value=置前 onclick='zz+=1;thisobj.style.zIndex=zz;menu1.style.display="none"'><br>

<input type=button class=bon2 value=置后 onclick='zz2-=1;thisobj.style.zIndex=zz2;menu1.style.display="none"'><br>

<input type=button class=bon2 value=复制 onclick='div1.innerHTML+=thisobj.outerHTML;alert("复制完成,请使用选移功能拖动");menu1.style.display="none"'><br>

<input type=button class=bon2 value=删除 onclick='thisobj.outerHTML="";menu1.style.display="none"'><br>

</span>

<iframe id=web src="about:blank"></iframe> <>

<span id='help'> <>

<textarea readonly='true'>

VML图像画板.2003(操作帮助及功能简介)

目前最强的网页VML(网页矢量图形标记语言)编辑工具之一,VML学习者的最佳学习工具

能够完成基本的三维网页的设计,做图及图形处理功能一般(原作者今后有时间会去强化)

基本的画笔及图形处理工具在右方,点选后在画板内使用鼠标左键应用

可将画板内VML代码图形保存为文件,亦可通过“修改原代码”实现“打开文件”等功能

文字:该功能暂未提供可视化的修改编辑功能,但代码为HTML相对比较简单

图片:支持FILE:///及HTTP://两种协议类型,矢量化后失真现象很少

记忆点:该功能只有在点击后大于点击时X,Y的坐标,才能看到效果,今后也许原作者会找到好的解决方法

填充:该功能只有“钢笔”所划的线无法使用

边框:该功能的“起点尖头”“终点尖头”只对“钢笔”“记忆点”所画的图形有效

保存为文件:在弹出保存对话框时,在对话框中“语言”下拉菜单中选择“Unicode”保存后能够正常显示

关于打开文件的功能:由于客户端资源及文件编码类型问题,该功能先已“修改原代码”代替,可直接将已保存的VML输入后点击“更新修改”即可虚拟完成已有文件的打开

VML图像画板.2003(版权信息)

原作者:风云舞

主 页:http://www.lshdic.com

最新版:可登陆主页查看

发布于:2003年8月25日

授 权:授权给任何个人使用、应用,自由DHTML代码,可任意修改学习、转载、强化,作者制作本作品出发点是为了提高用户的VML编程水准、开拓一个先例,因而未加密及方便参考仅采用一页代码,为此,未经原作者同意请不要将VML图像画板任何版本用于其他商业用途,侵我版权毁我及作品名声,公开于网站、软件发布及其他应用请保留原作者的这些声明(但可以追加其他信息,如修改者各项授权信息等)

</textarea><br>

<center><input type='button' value='关闭帮助'>

</span>

<TABLE cellspacing=0 cellpadding=3 width=770 align=center bgcolor='#619CE7' id=allform1>

<tr align=center onmouseover='if(event.srcElement.tagName=="TD"&&event.srcElement.width==70)event.srcElement.bgColor="aaaaaa"' onmouseout='if(event.srcElement.tagName=="TD")event.srcElement.bgColor=""'><td width=70 id=toptd1>

修改原代码</td><td width=70>保存为文件</td><td width=70>最大化视图</td><td width=70>操作帮助</td><td width=60></td><td width=60></td><td align=right>原作:风云舞,蓝丽程序员网络:<a href='http://www.lshdic.com' target='_blank'>http://www.lshdic.com</a>

</td></tr><tr>

<td width=100% colspan=10 height=500>

<table cellspacing=0 cellpadding=0 height=100%%><tr><td width=660>

<div id=div1></div>

</td><td>

<div>

<center><b>画笔选择</b><br>

<button class=bon2 id=huabi>选移<button class=bon2 id=huabi>调大小<button class=bon2 id=huabi>扔出</button><button class=bon1 id=huabi>钢笔</button><button class=bon2 id=huabi>记忆点<button class=bon2 id=huabi>圆型<button class=bon2 id=huabi>长方型<button class=bon2 id=huabi>圆矩型<button class=bon2 id=huabi>文字<button class=bon2 id=huabi>图片<button class=bon2 id=huabi>填充<button class=bon2 id=huabi>立体<button class=bon2 id=huabi>边框<button class=bon2 id=huabi>高级</button><br2>

<b>画笔基本参数</b><br>

笔边粗度 <select id=bibiancudu><option selected>1<script>for(i=2;i<101;i++)document.write("<option>"+i)</script></select><br>

画笔颜色 <input value='#000000' id=huabiyanse onmousedown='colortab.style.left=event.x-50;colortab.style.top=event.y+this.offsetHeight;rndcolor(this.id)'><br>

画笔背景 <input value='#FFFFFF' id=huabibeijing onmousedown='colortab.style.left=event.x-50;colortab.style.top=event.y+this.offsetHeight;rndcolor(this.id)'><br>

X Y 坐标 <input disabled='true' type='text' value='0,0' id='zuobiao'><br>

<span id=tianchong1>

<b><br>填充基本参数</b><br>

普通背景 <input value='' id=tianchongbeijing onmousedown='colortab.style.left=event.x-50;colortab.style.top=event.y+this.offsetHeight;rndcolor(this.id)'><br>使用渐变背景<input type='checkbox' id='usejianbian'><br>

渐变色一 <input value='#FF0000' id=jianbianse1 onmousedown='colortab.style.left=event.x-50;colortab.style.top=event.y+this.offsetHeight;rndcolor(this.id)'>

<br>渐变色二 <input value='#FFFFFF' id=jianbianse2 onmousedown='colortab.style.left=event.x-50;colortab.style.top=event.y+this.offsetHeight;rndcolor(this.id)'><br>

上下渐变 <input type=radio name='jianbianyangshi' checked><br>

斜向渐变 <input type=radio name='jianbianyangshi'>

</span>

<span id=liti1>

<b><br>立体基本参数</b><br>

后向伸展 <select id=houxiangshenzhan><option selected>20<script>for(i=0;i<101;i++)document.write("<option>"+i)</script></select><br>

<br>前向伸展 <select id=qianxiangshenzhan><option selected>0<script>for(i=1;i<101;i++)document.write("<option>"+i)</script></select><br>

偏移左边 <select id=pianyizuobian><option selected>0<script>for(i=1;i<101;i++)document.write("<option>"+i)</script></select><br>

偏移上边 <select id=pianyishangbian><option selected>0<script>for(i=1;i<101;i++)document.write("<option>"+i)</script></select><br>

立体颜色 <input value='' id=litiyanse onmousedown='colortab.style.left=event.x-50;colortab.style.top=event.y+this.offsetHeight;rndcolor(this.id)'><br>

</span>

<span id=biankuang1>

<b><br>边框基本参数</b><br>

边框粗度 <select id=biankuangcudu><option selected>1<script>for(i=0;i<101;i++)document.write("<option>"+i)</script></select><br>

<br>边框样式 <select id=biankuangyangshi><option selected>none<option>dash<option>dashdot<option>dot<option>longdash<option>longdashdot<option>shortdash<option>shortdashdot<option>shortdashdotdot<option>longdashdotdot<option>shortdot</select><br>

起点尖头 <select id=qidianjiantou><option selected>none<option>block<option>classic<option>diamond<option>open<option>oval</select><br>

终点尖头 <select id=zhongdianjiantou><option selected>none<option>block<option>classic<option>diamond<option>open<option>oval</select><br>

边框颜色 <input value='' id=biankuangyanse onmousedown='colortab.style.left=event.x-50;colortab.style.top=event.y+this.offsetHeight;rndcolor(this.id)'><br>

</span>

</div>

</td></tr></table>

</td></tr>

</table>

<table cellspacing=0 cellpadding=0 id='colortab'><tr><td id='colorid'></td></tr></table>

<script language='jscript'>

var bi=4 //定义当前使用的画笔工具,3为铅笔

var color1='#000000',color2='#000000',size1=0 //定义缺剩的画笔颜色及画笔填充颜色和笔边粗度

var xx=0,yy=0,zz=1000 //定义缺剩的X及Y坐标

var isok=false //区分画笔起点是否在DIV内,超出范围则无效

var moveobj=null,ckleft=0,cktop=0,ckwid=0,ckhei=0,ckto="" //被移动物件、调整大小物件的引用

var poly1=null,oldvalue="",oldx=0,oldy=0 //为了完成记忆点,创建一个可折式线段

var gaojiobj=null //为了完成“高级”功能,绑定被修改对象

var thisobj=null //为了完成各种基本编辑功能,如“置前”“复制”“删除”等

var zz2=1000 //为完成“置后”功能,zz2为负数

function div1.onmousedown(){

div1.setCapture();color1=huabiyanse.value;color2=huabibeijing.value;isok=true;size1=bibiancudu.options[bibiancudu.selectedIndex].text

xx=event.x;yy=event.y;zz+=1

for(i=0;i<huabi.length;i++){if(huabi[i].className=="bon1"){bi=i+1;break}}

line1.strokecolor=color1;line1.strokeweight=size1;oval1.strokeweight=size1;oval1.strokecolor=color1

oval1.fillcolor=color2;rect1.strokeweight=size1;rect1.strokecolor=color1

rect1.fillcolor=color2;roundrect1.strokeweight=size1;roundrect1.strokecolor=color1

roundrect1.fillcolor=color2;

if(event.button==1){

switch(bi){

case 1: //选移

if(event.srcElement.parentElement.id=="div1"){moveobj=event.srcElement;ckleft=xx-parseInt(moveobj.style.left);cktop=yy-parseInt(moveobj.style.top)}

break;

case 2: //调大小

if(event.srcElement.parentElement.id=="div1"){moveobj=event.srcElement;

ckleft=parseInt(moveobj.style.left);cktop=parseInt(moveobj.style.top);ckwid=moveobj.offsetWidth;ckhei=moveobj.offsetHeight}

break;

case 3: //扔出

break;

case 4: //钢笔

line1.style.left=event.x;line1.style.top=event.y;line1.to="0,0";line1.style.display=""

break;

case 5: //记忆点

if(poly1==null){

oldx=xx;oldy=yy

poly1=div1.appendChild(document.createElement("<v:polyline points='0 0 0 0'+zz+";left:"+xx+";top:"+yy+";' strokecolor='"+color1+"' strokeweight='"+size1+"' fillcolor='"+color2+"'/>"))

}

if(oldx-tempx<1&&oldy-tempy<1)oldvalue=poly1.points.value.replace(/,/g,' ')

break;

case 6: //圆形

oval1.style.left=event.x;oval1.style.top=event.y;oval1.style.width=0;oval1.style.height=0;oval1.style.display=""

break;

case 7: //长方形

rect1.style.left=event.x;rect1.style.top=event.y;rect1.style.width=0;rect1.style.height=0;rect1.style.display=""

break;

case 8: //圆矩形

roundrect1.style.left=event.x;roundrect1.style.top=event.y;roundrect1.style.width=0;roundrect1.style.height=0;roundrect1.style.display=""

break;

case 9: //文字

wenzi1.style.left=event.x;wenzi1.style.top=event.y;wenzi1.style.display=""

break;

case 10: //图片

tupian1.style.left=event.x;tupian1.style.top=event.y;tupian1.style.display=""

break;

}

}}

function div1.onmousemove(){

tempx=event.x;tempy=event.y;temp1=0;temp2=0

zuobiao.value=tempx-allform1.offsetLeft-8+","+parseInt(tempy-toptd1.offsetHeight-7)

if(bi==5&&poly1!=null){ //记忆点

if(oldx-tempx<0&&oldy-tempy<0)poly1.points.value=oldvalue+" "+(tempx-oldx)+" "+(tempy-oldy)

}

if(event.button==1){

switch(bi){

case 1: //选移

if(moveobj!=null){moveobj.style.left=tempx-ckleft;moveobj.style.top=tempy-cktop}

break;

case 2: //调大小

if(moveobj!=null){

if(moveobj.tagName!="line"){

if(tempx>ckleft){moveobj.style.width=tempx-ckleft}else{moveobj.style.left=tempx;moveobj.style.width=ckleft-tempx}

if(tempy>cktop){moveobj.style.height=tempy-cktop}else{moveobj.style.top=tempy;moveobj.style.height=cktop-tempy}

}else{moveobj.to=parseInt(tempx-ckleft)+","+parseInt(tempy-cktop);if(ckto=="")ckto=parseInt(tempx-ckleft)+","+parseInt(tempy-cktop);}

}

break;

case 4: //钢笔

line1.to=(tempx-xx)+","+(tempy-yy)

break;

case 6: //圆形

if(tempx-xx<0){oval1.style.left=event.x;oval1.style.width=(xx-tempx)}else{oval1.style.width=(tempx-xx)}

if(tempy-yy<0){oval1.style.top=event.y;oval1.style.height=(yy-tempy)}else{oval1.style.height=(tempy-yy)}

break;

case 7: //长方形

if(tempx-xx<0){rect1.style.left=event.x;rect1.style.width=(xx-tempx)}else{rect1.style.width=(tempx-xx)}

if(tempy-yy<0){rect1.style.top=event.y;rect1.style.height=(yy-tempy)}else{rect1.style.height=(tempy-yy)}

break;

case 8: //圆矩形

if(tempx-xx<0){roundrect1.style.left=event.x;roundrect1.style.width=(xx-tempx)}else{roundrect1.style.width=(tempx-xx)}

if(tempy-yy<0){roundrect1.style.top=event.y;roundrect1.style.height=(yy-tempy)}else{roundrect1.style.height=(tempy-yy)}

break;

}}}

function div1.onmouseup(){

document.releaseCapture();if(isok==false){forerr();return false};isok=false;menu1.style.display='none'

tempx=event.x;tempy=event.y;divwid=div1.offsetWidth;divhei=div1.offsetHeight

if(tempx>allform1.offsetLeft+divwid+5||tempx<allform1.offsetLeft+5){forerr();return alert("X坐标越界")}

if(tempy>allform1.offsetTop+toptd1.offsetHeight+divhei+5||tempy<allform1.offsetTop+toptd1.offsetHeight+5){forerr();return alert("Y坐标越界")}

if(event.button==2&&bi==5&&poly1!=null){

poly1.points.value=oldvalue;oldvalue="";poly1=null;

}else if(event.srcElement.parentElement.id=="div1"&&event.button==2){menu1.style.left=tempx;menu1.style.top=tempy;menu1.style.display='';thisobj=event.srcElement}

if(event.button==1){

switch(bi){

case 1: //选移

if(moveobj!=null&&parseInt(moveobj.style.left)<allform1.offsetLeft+5){forerr();return alert("被移动物体X1超出界限")}

if(moveobj!=null&&parseInt(moveobj.style.left)+moveobj.offsetWidth-2>allform1.offsetLeft+divwid+5){forerr();return alert("被移动物体X2超出界限")}

if(moveobj!=null&&parseInt(moveobj.style.top)<allform1.offsetTop+toptd1.offsetHeight+5){forerr();return alert("被移动物体Y1超出界限")}

if(moveobj!=null&&parseInt(moveobj.style.top)+moveobj.offsetHeight-2>allform1.offsetTop+toptd1.offsetHeight+divhei+3){forerr();return alert("被移动物体Y2超出界限")}

moveobj=null

break;

case 2: //调大小

moveobj=null;ckto=""

break;

case 3: //仍出

if(event.srcElement.parentElement.id=="div1")event.srcElement.outerHTML=""

break;

case 4: //钢笔

div1.appendChild(document.createElement("<v:line+zz+";left:"+xx+";top:"+yy+";' to='"+(event.x-xx)+","+(event.y-yy)+"' strokecolor='"+color1+"' strokeweight='"+size1+"'/>"))

line1.style.display="none"

break;

case 6: //圆形

div1.appendChild(document.createElement("<v:oval+zz+";left:"+oval1.style.left+";top:"+oval1.style.top+";width:"+oval1.style.width+";height:"+oval1.style.height+";' strokecolor='"+color1+"' strokeweight='"+size1+"' fillcolor='"+color2+"'/>"))

oval1.style.display="none"

break;

case 7: //长方形

div1.appendChild(document.createElement("<v:rect+zz+";left:"+rect1.style.left+";top:"+rect1.style.top+";width:"+rect1.style.width+";height:"+rect1.style.height+";' strokecolor='"+color1+"' strokeweight='"+size1+"' fillcolor='"+color2+"'/>"))

rect1.style.display="none"

break;

case 8: //圆矩形

div1.appendChild(document.createElement("<v:roundrect+zz+";left:"+roundrect1.style.left+";top:"+roundrect1.style.top+";width:"+roundrect1.style.width+";height:"+roundrect1.style.height+";' strokecolor='"+color1+"' strokeweight='"+size1+"' fillcolor='"+color2+"'/>"))

roundrect1.style.display="none"

break;

case 11: //渐变

if(event.srcElement.parentElement.id=="div1"){

if(!usejianbian.checked){event.srcElement.fillcolor=tianchongbeijing.value}else{

temp1=jianbianyangshi[0].checked?'gradient':'gradientradial'

temp2=event.srcElement.innerHTML.replace(/<v:fill .*</v:fill>/gi,'')

event.srcElement.innerHTML=temp2+"<v:fill color='"+jianbianse2.value+"' color2='"+jianbianse1.value+"' type='"+temp1+"'/>"

}}

break;

case 12: //立体

if(event.srcElement.parentElement.id=="div1"){

temp2=event.srcElement.innerHTML.replace(/<v:extrusion .*</v:extrusion>/gi,'')

event.srcElement.innerHTML=temp2+"<v:Extrusion on='t' color='"+litiyanse.value+"' backdepth='"+houxiangshenzhan.options[houxiangshenzhan.selectedIndex].text+"' foredepth='"+qianxiangshenzhan.options[qianxiangshenzhan.selectedIndex].text+"' rotationangle='"+pianyishangbian.options[pianyishangbian.selectedIndex].text+","+pianyizuobian.options[pianyizuobian.selectedIndex].text+"'/>"

}

break;

case 13: //边框

if(event.srcElement.parentElement.id=="div1"){

temp2=event.srcElement.innerHTML.replace(/<v:stroke .*</v:stroke>/gi,'')

event.srcElement.innerHTML=temp2+"<v:Stroke dashstyle='"+biankuangyangshi.options[biankuangyangshi.selectedIndex].text+"' startarrow='"+qidianjiantou.options[qidianjiantou.selectedIndex].text+"' endarrow='"+zhongdianjiantou.options[zhongdianjiantou.selectedIndex].text+"'/>"

event.srcElement.strokecolor=biankuangyanse.value

biankuangcudu.options[biankuangcudu.selectedIndex].text=='0'?event.srcElement.stroked=false:event.srcElement.strokeweight=biankuangcudu.options[biankuangcudu.selectedIndex].text

}

break;

case 14: //高级

if(event.srcElement.parentElement.id=="div1"){

gaojiobj=event.srcElement

txt2.value=event.srcElement.outerHTML.replace(/>/g,">n").replace(/ = /g,"=").replace(/: /g,":").replace(/; /g,";");gaoji1.style.left=event.x;gaoji1.style.top=event.y;gaoji1.style.display=''

}

}}}

function rndcolor(theobjis){

colortab.style.display="";colorid.innerHTML="";str1="<table cellspacing=0 cellpadding=0>";

for(r=0;r<10;r++){str1+="<tr>"

for(i=0;i<10;i++){

tempcolor1=Math.round(Math.random()*255).toString(16)+Math.round(Math.random()*255).toString(16)+Math.round(Math.random()*255).toString(16);while(tempcolor1.length<6){tempcolor1+=Math.round(Math.random()*9)}

str1+="<td+tempcolor1+";'.value='#"+tempcolor1+"';"+theobjis+".style.color='#"+tempcolor1+"';colortab.style.display='none'></td>"

}str1+="</tr>"}

colorid.innerHTML=str1+"</table>"

}

function document.onmouseup(){

if(event.srcElement.tagName=="BUTTON"){

event.srcElement.blur();div1.focus();if(event.srcElement.className=="bon1"||event.button!=1)return true;

for(i=0;i<huabi.length;i++)huabi[i].className="bon2"

event.srcElement.className="bon1";

if(huabi[10].className=="bon1"){tianchong1.style.display='';tianchongbeijing.value=tianchongbeijing.value==''?huabibeijing.value:tianchongbeijing.value}else{tianchong1.style.display='none';}

if(huabi[11].className=="bon1"){liti1.style.display='';litiyanse.value=litiyanse.value==''?huabibeijing.value:litiyanse.value}else{liti1.style.display='none';}

if(huabi[12].className=="bon1"){biankuang1.style.display='';biankuangyanse.value=biankuangyanse.value==''?huabiyanse.value:biankuangyanse.value}else{biankuang1.style.display='none';}

if(poly1!=null){ //清除记忆点

poly1.points.value=oldvalue;oldvalue="";poly1=null;

};wenzi1.style.display='none';tupian1.style.display='none';gaoji1.style.display='none';menu1.style.display='none'

}}

function forerr(){

if(moveobj!=null&&bi==1){moveobj.style.left=xx-ckleft;moveobj.style.top=yy-cktop;ckleft=0;cktop=0;moveobj=null}

if(moveobj!=null&&bi==2){

if(moveobj.tagName!="line"){moveobj.style.left=ckleft;moveobj.style.top=cktop;moveobj.style.width=ckwid;moveobj.style.height=ckhei;}else{moveobj.to=ckto;}

ckleft=0;cktop=0;ckwid=0;ckhei=0;ckto="";moveobj=null

}

line1.style.display='none';oval1.style.display='none';rect1.style.display='none';roundrect1.style.display='none'

}

function charuwenzi(){ //插入文字

if(txt1.value=="")return alert('请先输入文字,在点击插入')

var newtxt=document.createElement("<span+zz+";left:"+xx+";top:"+yy+";color:"+color1+";'></span>");newtxt.innerText=txt1.value

div1.appendChild(newtxt);wenzi1.style.display='none'

}

function charutupian(){ //插入图片

if(file1.value=="")return alert('请先输入图片路径(HTTP://或FILE:///)格式,在点击插入')

if(file1.value.indexOf("'")>-1)return alert("图片地址不可以含有违禁字符 ' 单引号")

var newtxt=document.createElement("<v:Image+zz+";left:"+xx+";top:"+yy+";width:100;height:100' src='"+file1.value+"'/>");

div1.appendChild(newtxt);tupian1.style.display='none'

}

</script>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新 Div+Css教程学习
热门 Div+Css教程学习
网页设计子分类