Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
大家分享一個(gè)html寫的俄羅斯方塊:
源代碼如下:
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.c {
margin: 1px;
width: 19px;
height: 19px;
background: red;
position: absolute;
}
.d {
margin: 1px;
width: 19px;
height: 19px;
background: gray;
position: absolute;
}
.f {
top: 0px;
left: 0px;
background: black;
position: absolute;
}
</style>
</head>
<body>
</body>
</html>
<script type="text/javascript">
var over=false,
shapes=("0,1,1,1,2,1,3,1;1,0,1,1,1,2,2,2;2,0,2,1,2,2,1,2;0,1,1,1,1,2,2,2;1,2,2,2,2,1,3,1;1,1,2,1,1,2,2,2;0,2,1,2,1,1,2,2").split(";");
//shapes 中的每一個(gè)元素的各個(gè)數(shù)字意2兩個(gè)一組,分別指該層移動(dòng)的X,Y軸
function create(tag, css) {
var elm=document.createElement(tag); //創(chuàng)建一個(gè)tag標(biāo)簽
elm.className=css; //添加一個(gè)css樣式
document.body.appendChild(elm); //把該標(biāo)簽添加到body標(biāo)簽中
return elm;
} //返回該標(biāo)簽
function Field(w, h) { //Field整個(gè)游戲界面的對(duì)象,沒跳動(dòng)一次,就是一次刷新
this.width=w ? w : 10;
this.height=h ? h : 20;
this.show=function() { //創(chuàng)建一個(gè)底層,游戲界面
var f=create("div", "f")
f.style.width=this.width * 20 + 'px';
f.style.height=this.height * 20 + 'px';
}
this.check=function(shape, x, y, d) { //判斷是否到了邊緣
var r1=0,
r2='GO'; //每一次所生成的4個(gè)層絕對(duì)不會(huì)存在超出左邊的同時(shí)又超出右邊,故r1只有一個(gè)
for(var i=0; i < 8; i +=2) {
//循環(huán)橫坐標(biāo),查看是夠超過邊距
if(parseInt(shape) + x < 0 && parseInt(shape) + x < r1) {
//若向左邊移動(dòng)會(huì)超出邊界
r1=parseInt(shape) + x;
} else if(parseInt(shape) + x >=this.width && parseInt(shape) + x > r1) {
//若向右移動(dòng)會(huì)超出邊界
r1=parseInt(shape) + x;
}
if(parseInt(shape[i + 1]) + y >=this.height || this[parseInt(shape) + x + (parseInt(shape[i + 1]) + y) * this.width]) {
r2="NO";
}
}
if(d=="move" && r2=="GO") { //當(dāng)此次操作是左右移動(dòng)的話,就返回移動(dòng)后的橫坐標(biāo),只要沒有超出邊界,r1就肯定不為0
return r1;
} else if(d=="upchange" && r2=="GO") { //當(dāng)此次操作是變換形狀時(shí)
return r1 > 0 ? r1 - this.width + 1 : r1; //其實(shí)每次移動(dòng)的都是該層的很坐標(biāo),以左邊為準(zhǔn)移動(dòng)的
} else {
return r2;
}
}
this.findFull=function() { //判斷該行是否已經(jīng)滿了
for(var h=0; h < this.height; h++) { //循環(huán)底層的縱坐標(biāo)
var s=0;
for(var w=0; w < this.width; w++) { //循環(huán)行坐標(biāo)
s +=this[w + h * this.width] ? 1 : 0 //確定每個(gè)坐標(biāo)點(diǎn)上時(shí)候有元素,以便于確定改行是否滿了
}
if(s==this.width) { //若改行滿了,則調(diào)用removeLine方法,一處該行的每一個(gè)元素
this.removeLine(h);
}
}
}
//清除已經(jīng)填滿的行
this.removeLine=function(line) {
for(var w=0; w < this.width; w++) { //因?yàn)槊總€(gè)元素都是根據(jù)對(duì)象的橫縱坐標(biāo)在存儲(chǔ),所以需要重新循環(huán)橫坐標(biāo),以便于取出每一個(gè)元素
document.body.removeChild(this[w + line * this.width]); //每個(gè)元素都是在body上存在著
}
//移除該行之后需要讓其上的每行都向下移動(dòng)一行
for(var l=line; l > 0; l--) {
for(var i=0; i < this.width; i++) {
this[i + l * this.width]=this[i + (l - 1) * this.width]; //把上一行的元素付給下一行的元素()
if(this[i + l * this.width]) {
this[i + l * this.width].style.top=l * 20 + 'px'; //移動(dòng)
}
}
}
}
this.fixShape=function(shape, x, y) { //生成落地的方塊
var d=new Tetris("d", shape, x, y);
d.show();
for(var i=0; i < 8; i +=2) { //記錄每個(gè)變灰色的div層,只有成功到底底層的時(shí)候才記錄
//parseInt(shape) + x 記錄的為該層的橫坐標(biāo)
//parseInt(shape[i + 1]) + y 記錄的為縱坐標(biāo)
//這樣是為了this[…]是唯一。
this[parseInt(shape) + x + (parseInt(shape[i + 1]) + y) * this.width]=d.divs[i / 2];
}
}
}
function Tetris(c, t, x, y) {
var c=c ? c : "c"; //若C存在,則為C,不存在,則賦值
this.field=null;
this.divs=[create("div", c), create("div", c), create("div", c), create("div", c)]; //調(diào)用create方法創(chuàng)建元素
var ttt=t;
this.reset=function() { //創(chuàng)建一個(gè)方塊
this.x=typeof x !='undefined' ? x : 3;
this.y=typeof y !='undefined' ? y : 0;
this.shape=t ? t : (shapes[Math.floor(Math.random() * (shapes.length - 0.00001))].split(","));
this.show();
//當(dāng)剛生的方塊就不能再向下移動(dòng)的時(shí)候,游戲結(jié)束
if(this.field && this.field.check(this.shape, this.x, this.y, "down")=="NO") {
over=true;
this.field.fixShape(this.shape, this.x, this.y);
alert('game over');
}
}
this.show=function() { //根據(jù)生成的方案,初始化方塊。
for(var i=0; i < this.divs.length; i++) {
this.divs.style.left=(this.shape[i * 2] * 1 + this.x) * 20 + 'px';
this.divs.style.top=(this.shape[i * 2 + 1] * 1 + this.y) * 20 + 'px';
}
}
this.vMove=function() { //該方法使方塊向下移動(dòng)
if(this.field.check(this.shape, this.x, this.y + 1, "down")=="GO") { //若還能向下移動(dòng)就執(zhí)行
this.y++;
this.show();
} else {
this.field.fixShape(this.shape, this.x, this.y); //不能向下移動(dòng)了,就生成固定的塊。
this.field.findFull();
this.reset();
};
}
this.hMove=function(moveNo) { //該方法使方塊左右移動(dòng)
var r=this.field.check(this.shape, parseInt(this.x) + moveNo, this.y, 'move');
if(r !='GO' && r==0) {
this.x +=moveNo;
this.show();
}
}
this.rotate=function() { //當(dāng)按動(dòng)上鍵時(shí),改變方塊的排列方向
var s=this.shape;
var newShape=[3 - s[1], s[0], 3 - s[3], s[2], 3 - s[5], s[4], 3 - s[7], s[6]]; //先把坐標(biāo)循環(huán)180度,然后縱橫坐標(biāo)互換。
var r=this.field.check(newShape, this.x, this.y, 'upchange'); //調(diào)用check方法,確定時(shí)候可以改變
if(r=="NO") { return; };
if(r==0) { //若為0 ,則說明改變后的塊并沒有超出范圍,繼續(xù)執(zhí)行
this.shape=newShape;
this.show();
} else if(this.field.check(newShape, this.x - r, this.y, 'move')==0) { //超出后,根據(jù)返回值,讓其向相應(yīng)的方向移動(dòng)。以保證并不會(huì)超出范圍
this.x -=r;
this.shape=newShape;
this.show();
}
}
this.reset();
}
var f=new Field();
f.show();
var t=new Tetris();
t.field=f;
t.reset();
window.setInterval("if(!over)t.vMove();", 500); //調(diào)用向下移動(dòng)的方法
document.onkeydown=function(e) { //當(dāng)按上下左右鍵時(shí),觸發(fā)
if(over) return;
var e=window.event ? window.event : e;
switch(e.keyCode) {
case 38: //up 當(dāng)按下上鍵時(shí)
t.rotate();
break;
case 40: //down
t.vMove();
break;
case 37: //left
t.hMove(-1);
break;
case 39: //right
t.hMove(1);
break;
}
}
</script>
路過的朋友給個(gè)關(guān)注哦,需要打包源碼的私信小編。
. block(區(qū)塊)
block面板主要是設(shè)置對(duì)象文本的文字間距、對(duì)齊方式、上標(biāo)、下標(biāo)、排列方式、首行縮進(jìn)等。
(1)word-spacing:設(shè)置單詞之間的間距。可以設(shè)置負(fù)值。
默認(rèn)值:normal
(2)letter-spacing:設(shè)置字符之間的間距。可以指定負(fù)值。因?yàn)橹形囊彩亲址? 這個(gè)參數(shù)可以設(shè)置文字間的間距。
默認(rèn)值:normal
(3)vertical-align:指定元素的垂直對(duì)齊方式。針對(duì)<td>表格設(shè)置垂直對(duì)齊方法,但是對(duì)<div>設(shè)置無效,可以將display屬性設(shè)置為table-cell值;
可以指定sub(下標(biāo))、super(上標(biāo))、top(與頂端對(duì)齊)、middle(居中)、bottom(與底端對(duì)齊)等。適用于行內(nèi)塊元素 img、input、td等
baseline 默認(rèn)。元素放置在父元素的基線上。
sub 垂直對(duì)齊文本的下標(biāo)。
super 垂直對(duì)齊文本的上標(biāo)
top 把元素的頂端與行中最高元素的頂端對(duì)齊
text-top 把元素的頂端與父元素字體的頂端對(duì)齊
middle 把此元素放置在父元素的中部。
bottom 把元素的頂端與行中最低的元素的頂端對(duì)齊。
text-bottom 把元素的底端與父元素字體的底端對(duì)齊。
% 使用 "line-height" 屬性的百分比值來排列此元素。允許使用負(fù)值。
inherit 規(guī)定應(yīng)該從父元素繼承 vertical-align 屬性的值。
默認(rèn)值: baseline
(4)text-align:設(shè)置文本的排列方式(適用于行內(nèi)元素和行內(nèi)塊元素, 如 a、span、input、img、label等元素)。left(左對(duì)齊)、right(右對(duì)齊)、center(居中)、justify(兩端對(duì)齊)。也可用于<hr/>下劃線對(duì)齊方式
默認(rèn)值: 如果 direction 屬性是 ltr, 則默認(rèn)值是 left;如果 direction 是 rtl,則為 right。(關(guān)于CSS direction 屬性看下面的內(nèi)容介紹)
text-align 和margin auto 區(qū)別
text-align 可以讓塊級(jí)元素里面的文字內(nèi)容居中對(duì)齊.
文字內(nèi)容==(圖片 input 行內(nèi)元素 行內(nèi)塊元素)
但是對(duì)于里面的塊級(jí)元素?zé)o效
讓一個(gè)塊級(jí)元素居中對(duì)齊 : margin:0 auto;
(5)text-indent:設(shè)置文本第一行的縮進(jìn)值。負(fù)值用于將文本第一行向外拉, 主要給<p>設(shè)置首行。
要在每段前空兩格,可設(shè)置為2em,因?yàn)閑m是當(dāng)前字體尺寸,2em就是兩個(gè)字的大小。
默認(rèn)值: not specified(沒有規(guī)定的)
p{font-size:12px;text-indent:2em;}
上述代碼就是可以實(shí)現(xiàn)段落首行縮進(jìn)24px(也就是兩個(gè)字體大小的距離)。
(6)white-space:設(shè)置如何處理元素內(nèi)的空白符。有三個(gè)選項(xiàng)可選:
normal 會(huì)將空白符全部壓縮;
pre 則會(huì)如同處理pre標(biāo)簽內(nèi)的文本一樣處理這些空白符,也就是說,所有的空白符,包括空格,標(biāo)簽,回車,等都會(huì)得以保留;
nowrap 指定文本只有遇到br標(biāo)簽時(shí)才換行。
默認(rèn)值: normal
(7)display: none 此元素不會(huì)被顯示。
block 此元素將顯示為塊級(jí)元素,此元素前后會(huì)帶有換行符。
inline 默認(rèn)值。此元素會(huì)被顯示為內(nèi)聯(lián)元素,元素前后沒有換行符。
inline-block 行內(nèi)塊元素。(CSS2.1 新增的值)
list-item 此元素會(huì)作為列表顯示。
run-in 此元素會(huì)根據(jù)上下文作為塊級(jí)元素或內(nèi)聯(lián)元素顯示。
compact CSS 中有值 compact,不過由于缺乏廣泛支持,已經(jīng)從 CSS2.1 中刪除。
marker CSS 中有值 marker,不過由于缺乏廣泛支持,已經(jīng)從 CSS2.1 中刪除。
table 此元素會(huì)作為塊級(jí)表格來顯示(類似 <table>),表格前后帶有換行符。
inline-table 此元素會(huì)作為內(nèi)聯(lián)表格來顯示(類似 <table>),表格前后沒有換行符。
table-row-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來顯示(類似 <tbody>)。
table-header-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來顯示(類似 <thead>)。
table-footer-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來顯示(類似 <tfoot>)。
table-row 此元素會(huì)作為一個(gè)表格行顯示(類似 <tr>)。
table-column-group 此元素會(huì)作為一個(gè)或多個(gè)列的分組來顯示(類似 <colgroup>)。
table-column 此元素會(huì)作為一個(gè)單元格列顯示(類似 <col>)
table-cell 此元素會(huì)作為一個(gè)表格單元格顯示(類似 <td> 和 <th>)
table-caption 此元素會(huì)作為一個(gè)表格標(biāo)題顯示(類似 <caption>)
inherit 規(guī)定應(yīng)該從父元素繼承 display 屬性的值。
默認(rèn)值: inline
常用的屬性:
display:none; //隱藏
display:block //顯示(將行內(nèi)元素轉(zhuǎn)換為塊元素)
dispaly:inline //將塊元素轉(zhuǎn)換行內(nèi)元素
dispaly:inline-block //將塊元素轉(zhuǎn)換為行內(nèi)塊元素
display:table-cell; //此元素會(huì)作為一個(gè)表格單元格顯示(類似 <td> 和 <th>) 用于多行文本、塊元素垂直居中
以上轉(zhuǎn)換涉及行內(nèi)塊元素(img、input)轉(zhuǎn)換;
經(jīng)過大量的測(cè)試證明:屬性display是不能用于轉(zhuǎn)換行內(nèi)塊元素(img、input)
同義詞: 內(nèi)聯(lián)元素(行內(nèi)元素)
4. box(方框或盒子) 主要針對(duì)圖片、表格、層、段落(p)、標(biāo)題(h1-h6)等
box面板主要設(shè)置對(duì)象的邊界、間距、高度、寬度、和漂浮方式等。
(1)width:定義元素的寬。
默認(rèn)值:auto
(2)height:定義元素的高。
默認(rèn)值:auto
以上width、height屬性如果是針對(duì)div標(biāo)簽設(shè)置css樣式,則與定位設(shè)置窗口width、height屬性一致(Dreamweaver會(huì)自動(dòng)填充數(shù)據(jù))
在父元素和子元素都設(shè)置了高度和寬度的情況下:
如果子元素的寬度超出了它的父元素的寬度, 則會(huì)父元素不會(huì)限制其顯示寬度;
如果子元素的高度超出了它的父元素的高度, 則會(huì)父元素不會(huì)限制其顯示高度;
(3)float:定義元素的漂浮方式。left 表示對(duì)象浮在左邊、right表示對(duì)象浮在右邊、none 表示對(duì)象不浮動(dòng)。
默認(rèn)值:none
一個(gè)span標(biāo)簽不需要轉(zhuǎn)成塊級(jí)元素, 就能夠設(shè)置寬度、高度了。所以能夠證明一件事兒, 就是所有標(biāo)簽已經(jīng)不區(qū)分行內(nèi)、塊了。
也就是說, 一旦一個(gè)元素浮動(dòng)了, 那么, 將能夠并排了, 并且能夠設(shè)置寬高了。無論它原來是個(gè)div還是個(gè)span。
span{
float: left;
width: 200px;
height: 200px;
background-color: orange;
}
(4)clear:不允許元素的漂浮,相對(duì)于前一個(gè)<div>設(shè)置浮動(dòng)時(shí),下一個(gè)有清除設(shè)置的元素就會(huì)移到它的下面。
left表示不允許左邊有浮動(dòng)對(duì)象 right表示不允許右邊有浮動(dòng)對(duì)象
none 表示允許兩邊都可以有浮動(dòng)對(duì)象 both 不允許有浮動(dòng)對(duì)象。
默認(rèn)值:none
浮動(dòng)的主要作用是將塊元素排在同一行(span也可以設(shè)置浮動(dòng));
浮動(dòng)元素它會(huì)向左或者向右進(jìn)行浮動(dòng), 所謂浮動(dòng)可以理解"飄";
浮動(dòng)元素向它遇到父元素的邊框就停止浮動(dòng);
浮動(dòng)元素的層級(jí)會(huì)比普通元素要高, 并且它不會(huì)再占用原有的高度;
浮動(dòng)元素只會(huì)影響后面的元素, 不會(huì)影響前面的元素:
浮動(dòng)元素的后面的元素(可能是一個(gè)也可能是多個(gè)元素受到影響)也會(huì)繼承浮動(dòng)元素的特性, 它也會(huì)浮動(dòng)了要解決這個(gè)問題有兩辦法;
第一個(gè):需要清除浮動(dòng)
第二個(gè):給父元素設(shè)置一個(gè)高度(子元素都設(shè)置了height高度條件下), 不建議使用
清除浮動(dòng)后它不會(huì)影響到它后面的元素, 父元素會(huì)將所有的浮動(dòng)元素包圍者
當(dāng)然浮動(dòng)元素對(duì)后面的元素的影響可以做首字母方法, 圖文混排(文字環(huán)繞圖片)等特效;
(5)padding:定義元素內(nèi)容與其邊框的空距(如果元素沒有邊框就是指頁邊的空白)。
可以分別設(shè)置分別設(shè)置上、右、下、左內(nèi)邊距。
padding-top
padding-right
padding-bottom
padding-left
p {padding:20px} 設(shè)置設(shè)置上、右、下、左內(nèi)邊距都為20px
p {margin: 20px 30px 30px 20px;} 設(shè)置padding-top padding-right padding-bottom padding-left分別為20px 30px 30px 20px
默認(rèn)值:0。
要懂得, 用小屬性層疊大屬性:
padding: 20px;
padding-left: 30px;
注意:大屬性要寫在前面, 小屬性寫在后面;
比如:
div{
width: 200px;
height: 200px;
padding-left: 10px;
padding-right: 20px;
padding:40px 50px 60px;
padding-bottom: 30px;
border: 1px solid #000;
}
padding-left:10px和padding-right:20px沒用, 因?yàn)楹竺娴膒adding大屬性, 層疊覆蓋了。
(6)margin:定義元素的邊框與其他元素之間的距離(如果沒有邊框就是指內(nèi)容之間的距離)。
可以分別設(shè)置上邊界、右邊界、下邊界、左邊界的值。
margin-top
margin-right
margin-bottom
margin-left
p {margin:20px}
p {margin:10px 0px 15px 5px;}
默認(rèn)值:0
marign:上邊界值 右邊界值 下邊界值 左邊界值
margin屬性值必須按照上面順序進(jìn)行排列,以空格分開。如果僅輸入一個(gè)值,則4個(gè)邊界值會(huì)同時(shí)設(shè)置為此值。
如果僅輸入兩個(gè)的值,則缺少的值會(huì)以對(duì)邊的設(shè)置值進(jìn)行替代。例如:
div{margin:5px 10px 15px 20px} /*上=5px,右=10px,下=15px,左=20px*/
div{margin:5px} /*上=5px,右=5px,下=5px,左=5px*/
div{margin:5px 10px} /*上=5px,右=10px,下=5px,左=10px*/
div{margin:5px 10px 15px} /*上=5px,右=10px,下=15px,左=10px*/
5. border(邊框) 針對(duì)段落(p標(biāo)簽)、圖片、表格、標(biāo)題(h1-h6)、form、input等(幾乎所有的元素都可以設(shè)置邊框)
border面板可以設(shè)置對(duì)象邊框的寬度、顏色及樣式。
(1)border-width:設(shè)置元素邊的寬度。可以分別設(shè)定top(上邊寬)、right(右邊寬)、bottom(下邊寬)、left(左邊寬)的值。
border-top-width border-right-width border-bottom-width border-left-width
thin 定義細(xì)的邊框。
medium 默認(rèn)。定義中等的邊框。
thick 定義粗的邊框。
length 允許您自定義邊框的寬度。
inherit 規(guī)定應(yīng)該從父元素繼承邊框?qū)挾取?/p>
默認(rèn)值: medium
(2)border-color:設(shè)置邊框的顏色。你可以分別對(duì)每條邊設(shè)置顏色。
注意:我們可以通過設(shè)置不同的顏色做出亮邊和暗邊的效果,這樣元素看起來是立體的。
border-top-color border-right-color border-bottom-color border-left-color
默認(rèn)值: not specified(未規(guī)定的)
(3)border-style:設(shè)置邊框樣式。
border-top-style border-right-style border-bottom-style border-left-style
可以設(shè)置為none(無邊框)、dotted(點(diǎn)線)、dashed(虛線)、solid(實(shí)線)、double(雙線)、
groove(凹槽,3D凹線)、ridge(凸槽,3D凸線)、inset(凹邊,3D嵌入線)、outset(凸邊,3D浮出線)等邊框樣式。
默認(rèn)值:none(無邊框)
推薦:表單輸入框:inset(凹邊) 按鈕:outset(凸邊)
兼容性問題
比如, border:10px ridge red; 在chrome和firefox、IE中有細(xì)微差別:
如果公司里面的設(shè)計(jì)師, 處女座的, 追求極高的頁面還原度, 那么不能使用css來制作邊框。
就要用到圖片, 就要切圖了。所以, 比較穩(wěn)定的就幾個(gè):solid、dashed、dotted, 其他的邊框樣式盡量不要用。
border可以沒有: border: none;
某一條邊沒有: border-left: none;
也可以調(diào)整左邊邊框的寬度為0px: border-left-width: 0px;
注意:border-bottom-style:可以修改a鏈接的"下劃線"的風(fēng)格
border-bottom-width:可以修改a鏈接的"下劃線"的寬度(粗細(xì))
border-bottom-color:可以修改a鏈接的"下劃線"的顏色
家好,本篇文章分享小方塊縮小放大動(dòng)畫特效,歡迎參考和指正。
效果圖:
小方塊縮小放大動(dòng)畫特效
HTML代碼:
<div class="tui-demo-3"></div>
CSS代碼:
<style type="text/css"> .tui-demo-3 { width: 100px; height: 100px; background: #1E9FFF; margin: 50px auto; animation: tui-demo-3 2.0s infinite; } @keyframes tui-demo-3 { 0% { transform: scale(0.3); } 50% { transform: scale(1); } 100% { transform: scale(0.3); } } </style>
知識(shí)點(diǎn):
animation:是CSS3的動(dòng)畫屬性,這里把a(bǔ)nimation綁定到tui-demo-3元素上,并指定該動(dòng)畫需要2.0秒完成,infinite則表示無限次播放該動(dòng)畫。
@keyframes:該規(guī)則表示動(dòng)畫可以逐步從一個(gè)CSS樣式改變?yōu)榱硪粋€(gè)CSS樣式。這里0%是動(dòng)畫開頭,100%是動(dòng)畫結(jié)束。
transform:該屬性應(yīng)用于2D元素或3D元素的轉(zhuǎn)換,允許元素發(fā)生旋轉(zhuǎn),縮放,移動(dòng),傾斜等效果。scale定義2D縮放,可以配置縮放大小。
最后注意下瀏覽器兼容問題,-webkit-,-ms-或-moz-,有問題可以留言,大家一起學(xué)習(xí)HTML+CSS基礎(chǔ)入門開發(fā)。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。