成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript打怪升級(jí)--把業(yè)務(wù)邏輯當(dāng)練習(xí)題做

heartFollower / 2918人閱讀

摘要:前言開發(fā)項(xiàng)目和出沒社區(qū)有一段時(shí)間了,會(huì)遇上一些比較有印象業(yè)務(wù)需求。因?yàn)檫@些業(yè)務(wù)邏輯可以當(dāng)做練習(xí)題一樣,可以給大家練手。測(cè)試學(xué)院獲獎(jiǎng)統(tǒng)計(jì)學(xué)生申請(qǐng)優(yōu)秀畢業(yè)生,并且符合條件的成績(jī)優(yōu)秀,拿過獎(jiǎng)學(xué)金,獲得過三好學(xué)生。

1.前言

開發(fā)項(xiàng)目和出沒社區(qū)有一段時(shí)間了,會(huì)遇上一些比較有印象業(yè)務(wù)需求。這些業(yè)務(wù)需求,可能是自己開發(fā)項(xiàng)目遇上的,可能是在社區(qū)看到的業(yè)務(wù)需求,或者其他情況接觸到的需求,但是這些業(yè)務(wù)需求的實(shí)現(xiàn)邏輯都值得一寫。因?yàn)檫@些業(yè)務(wù)邏輯可以當(dāng)做練習(xí)題一樣,可以給大家練手。也希望大家從這些需求實(shí)現(xiàn)的邏輯里面可以能到j(luò)avascript的相關(guān)知識(shí),當(dāng)然如果大家覺得代碼需要怎樣優(yōu)化,或者有什么建議,更好的實(shí)現(xiàn)方案,覺得我哪里寫錯(cuò)了,或者有覺得可以分享的需求,可以在評(píng)論提下!

2.月份坐標(biāo)軸

這個(gè)需求是,看下圖就懂了

實(shí)現(xiàn)方式其實(shí)很簡(jiǎn)單,我在代碼打上注釋,大家就懂了!

var _date=[],dateData=["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];
//準(zhǔn)備一個(gè)月份反轉(zhuǎn)的數(shù)組
var dateDataRet=Object.assign([],dateData).reverse();
//獲取當(dāng)前年份
var yearText=new Date().getFullYear();
//獲取當(dāng)前月份  調(diào)試的時(shí)候,大家可以通過調(diào)整now調(diào)試  3月-now=2,12月now=11...
var now=new Date().getMonth();
for(let i=0;i<6;i++){
    if(now-i<0){
        //如果now-i<0,從dateDataRet里面拿數(shù)據(jù),下標(biāo)=|now-i|-1。
        _date.push(yearText-1+"年"+dateDataRet[Math.abs(now-i)-1]);
    }
    else{
        //從dateData里面拿數(shù)據(jù),下標(biāo)=now-i
        _date.push(yearText+"年"+dateData[now-i]);
    }

}
_date.reverse();

可能大家看著會(huì)懵,直接看下面的循環(huán)圖就懂了

3.數(shù)值區(qū)間

如下圖,就是幾個(gè)數(shù)值區(qū)間,而且會(huì)有一個(gè)最小值和最大值

var _min=5,_max=50;
function checkArr(arr,min,max){
    //排序
    arr.sort(function(n1,n2){return n1.min-n2.min})
    //遍歷
    for(var i=0;i=arr[i].max){
            console.log("區(qū)間的最小值不能大于等于區(qū)間最大值");
            return;
        }
        //區(qū)間的最小值不能小于默認(rèn)最小值
        if(arr[i].minmax){
            console.log("區(qū)間的最大值不能大于默認(rèn)最大值");
            return;
        }
        //元素對(duì)比,從第二個(gè)元素開始
        if(i>0){
            //minInclude,maxInclude,為false就是不包含,為true就是包含
            //{min:10,max:20,minInclude:false,maxInclude:false}
            //等同于(10,20)
            //{min:20,max:30,minInclude:true,maxInclude:false}
            //等同于[20,30);
            
            //如果前一個(gè)的最大值和當(dāng)前的最小值都是包含情況,那么當(dāng)前區(qū)間的最小值一定要比前一個(gè)區(qū)間的最大值大1
            if(arr[i].minInclude&&arr[i-1].maxInclude&&arr[i].min-arr[i-1].max!==1){
                console.log("取值范圍錯(cuò)誤-當(dāng)前區(qū)間的最小值和前一個(gè)區(qū)間的最大值都是包含情況,當(dāng)前區(qū)間的最小值一定要比前一個(gè)區(qū)間的最大值大1");
                   return;
                
            }
            //如果前一個(gè)的最大值和當(dāng)前的最小值。一個(gè)是包含,一個(gè)是不包含,那么當(dāng)前區(qū)間的的最小值一定要等于上一個(gè)區(qū)間的最大值
            else if(arr[i].minInclude!==arr[i-1].maxInclude&&arr[i].min!==arr[i-1].max){
                console.log("取值范圍錯(cuò)誤-當(dāng)前區(qū)間的最小值和前一個(gè)區(qū)間的最大值其中一個(gè)是包含,一個(gè)是不包含情況,當(dāng)前區(qū)間的最小值一定要等于前一個(gè)區(qū)間的最大值");
                return;
            }
            //如果前一個(gè)的最大值和當(dāng)前的最小值都是不包含,肯定不滿足
            else if((!arr[i].minInclude)&&(!arr[i-1].maxInclude)){
                console.log("取值范圍錯(cuò)誤-前一個(gè)的最大值和當(dāng)前的最小值都是不包含情況,不滿足收尾相連");
                return;
            }
        }
    }
}

測(cè)試用例

var arr1=[{min:10,max:20,minInclude:false,maxInclude:true},{min:21,max:30,minInclude:true,maxInclude:true}],
arr2=[{min:10,max:20,minInclude:false,maxInclude:true},{min:20,max:30,minInclude:true,maxInclude:false}],
arr3=[{min:10,max:20,minInclude:false,maxInclude:true},{min:20,max:30,minInclude:false,maxInclude:false}],
arr4=[{min:10,max:20,minInclude:false,maxInclude:false},{min:20,max:30,minInclude:true,maxInclude:false}],
arr5=[{min:10,max:20,minInclude:false,maxInclude:false},{min:21,max:30,minInclude:true,maxInclude:false}],
arr6=[{min:10,max:20,minInclude:false,maxInclude:false},{min:15,max:30,minInclude:false,maxInclude:false}],
arr7=[{min:10,max:20,minInclude:false,maxInclude:false},{min:20,max:30,minInclude:false,maxInclude:false}],
arr8=[{min:1,max:20,minInclude:false,maxInclude:false},{min:20,max:30,minInclude:false,maxInclude:false}],
arr9=[{min:20,max:20,minInclude:false,maxInclude:false},{min:20,max:30,minInclude:false,maxInclude:false}], 
arr10=[{min:20,max:30,minInclude:false,maxInclude:false},{min:20,max:70,minInclude:false,maxInclude:false}];  

運(yùn)行結(jié)果

4.數(shù)組對(duì)比

這個(gè)基于我回答過的一個(gè)問題,現(xiàn)在化用,改寫一下

JavaScript如何對(duì)比兩個(gè)數(shù)組?數(shù)組B根據(jù)數(shù)組A來做出增刪? (不用jquery,原生js)
具體問題是這樣的:

arryA

var arrayA = ["a","b","c"];

arryB

var arrayB = [{
    key:"a",
    num1:"1",
    num2:"2",
    num3:"3",
    tot:"6"
},{
    key:"b",
    num1:"11",
    num2:"22",
    num3:"33",
    tot:"66"
},{
    key: "c",
    num1: "111",
    num2: "222",
    num3: "333",
    tot:666
}];

1、如果arryA中有a,arryB中沒有,那么在arryB中增加一個(gè)key值為a的boj,且其他屬性值可均為"0";如下: {key:"a",num1:"0",num2:"0",num3:"0",tot":0"}

2、如果arryA中有a,arryB中也有key值為a的obj,那么arryB則不改變,并且該obj里的其他屬性和屬性值均不變;

3、如果在arryA中刪除了a,那么arryB中key值為a的obj整個(gè)刪掉。

//準(zhǔn)備臨時(shí)數(shù)組
function compareArr(arr1,arr2){
    var result=[],arr;
    //遍歷
    for(var i=0;i

測(cè)試

var arrayA = ["b","c"];
var arrayB = [{
    key:"a",
    num1:"1",
    num2:"2",
    num3:"3",
    tot:"6"
},{
    key:"b",
    num1:"11",
    num2:"22",
    num3:"33",
    tot:"66"
},{
    key: "c",
    num1: "111",
    num2: "222",
    num3: "333",
    tot:666
}];
compareArr(arrayA,arrayB);

5.學(xué)院獲獎(jiǎng)

統(tǒng)計(jì)學(xué)生申請(qǐng)優(yōu)秀畢業(yè)生,并且符合條件的(成績(jī)優(yōu)秀,拿過獎(jiǎng)學(xué)金,獲得過三好學(xué)生)。前提是要申請(qǐng)

大概的流程圖就是像下面這樣!

我在代碼上寫上注釋,相信不難理解了

//學(xué)生列表
//isApply:是否有申請(qǐng)優(yōu)秀畢業(yè)生
let studentList = [
    {
        name: "aa",
        isApply: false,
        id: 1
    },
    {
        name: "bb",
        isApply: true,
        id: 2
    },
    {
        name: "cc",
        isApply: true,
        id: 3
    }
];

//申請(qǐng)優(yōu)秀畢業(yè)生的學(xué)生 isApply:true

let _student = studentList.filter(function (item) {
    return item.isApply;
});
//isExcellent:優(yōu)秀學(xué)生的id列表
//isScholarship:獲得過獎(jiǎng)學(xué)金的學(xué)生的id列表
//isThreeGood:獲得過三好學(xué)生的學(xué)生的id列表
//accord:集合
let isExcellent = [1, 2, 3, 4, 5], isScholarship = [4, 2, 5, 6, 2, 1, 2], isThreeGood = [2, 1, 4, 52, 36], accord = [];
//數(shù)組去重函數(shù)
function removeRepeatArr(arr) {
    return arr.filter(function (item, index, self) {
        return self.indexOf(item) === index;
    });
}

//統(tǒng)計(jì)數(shù)組中,一個(gè)遇上元素的出現(xiàn)次數(shù)
function getEleCount(obj, ele) {
    let num = 0;
    for (let i = 0, len = obj.length; i < len; i++) {
        if (ele === obj[i]) {
            num++;
        }
    }
    return num;
}

//添加學(xué)生記錄,把獲得成績(jī)優(yōu)秀的學(xué)生的id,獲得過獎(jiǎng)學(xué)金的學(xué)生的id,獲得過三好學(xué)生的id添加進(jìn)去。
//但是添加之前,要對(duì)獲得成績(jī)優(yōu)秀的學(xué)生的id,獲得過獎(jiǎng)學(xué)金的學(xué)生的id,獲得過三好學(xué)生的id。這個(gè)三個(gè)數(shù)組進(jìn)行去重再添加進(jìn)accord,因?yàn)橐粋€(gè)學(xué)生可能不止一次成績(jī)優(yōu)秀,不止一次獲得過獎(jiǎng)學(xué)金,不止一次獲得過三好學(xué)生
//這樣就方便下面的判斷,只要學(xué)生的id在accord里面出現(xiàn)兩次及以上就符合條件
accord.push.apply(accord, removeRepeatArr(isExcellent));
accord.push.apply(accord, removeRepeatArr(isScholarship));
accord.push.apply(accord, removeRepeatArr(isThreeGood));
console.log(accord);
//符合條件的學(xué)生列表
let accordStudent = [];
for (let i = 0; i < _student.length; i++) {
    //只要學(xué)生的id在accord里面出現(xiàn)兩次及以上
    if (getEleCount(accord, _student[i].id) >= 2) {
        //記錄哪些學(xué)生符合條件
        accordStudent.push(_student[i]);
    }
}
console.log(accordStudent);
6.數(shù)組連續(xù)的最大長(zhǎng)度

這個(gè)也是出于我回答過的問題:如下

//假如有一個(gè)數(shù)組,下面這個(gè)數(shù)組最大的連續(xù)長(zhǎng)度就是4——————8,9,10,11
var arr=[1,2,4,5,6,8,9,10,11];

//代碼實(shí)現(xiàn)
function countLen(arr){
    //如果參數(shù)不是數(shù)組或者長(zhǎng)度為0,直接返回0
    if(arr.constructor!==Array||arr.length===0){return 0;}
    //首先進(jìn)入當(dāng)前連續(xù)長(zhǎng)度nowLen設(shè)初始化為1,最大連續(xù)長(zhǎng)度maxLen初始化為0
    var nowLen=1,maxLen=0;
    
    for(var i=1,len=arr.length;i

7.答題連對(duì)數(shù)

這個(gè)和上面的代碼基本一樣,只是判斷條件毫厘之差,直接貼,大家看就好

function countTrue(arr){debugger;
    //如果參數(shù)不是數(shù)組或者長(zhǎng)度為0,直接返回0
    if(arr.constructor!==Array||arr.length===0){return 0;}
    //首先初始化連續(xù)答對(duì)長(zhǎng)度nowLen為0,最大連續(xù)答對(duì)長(zhǎng)度maxLen為0
    var nowLen=0,maxLen=0;
    for(var i=0,len=arr.length;i

8.命名方式轉(zhuǎn)換

比如駝峰命名方式轉(zhuǎn)"-"命名方式。

var str = "shouHou";
//$1-第一個(gè)括號(hào)匹配的內(nèi)容
//這個(gè)實(shí)例,$1="H"
str = str.replace(/([A-Z])/g,"-$1").toLowerCase();

比如"-"命名方式轉(zhuǎn)駝峰命名方式

var str="shou-hou";
//$0-匹配的結(jié)果   $1-第一個(gè)括號(hào)匹配的內(nèi)容
//這個(gè)實(shí)例$0="-h"    $1="h"
str=str.replace(/-(w)/g,function($0,$1){
    return $1.toUpperCase();
}); 

9.格式化字符

這個(gè)最常見的就是在金額方面的顯示需求上,比如后臺(tái)返回10000。前端要顯示成10,000或者其他格式等!

//str
//size-每隔幾個(gè)字符進(jìn)行分割 默認(rèn)3
//delimiter-分割符 默認(rèn)","
function formatText(str,size,delimiter){
    var _str=str.toString();
    var _size=size||3,_delimiter=delimiter||",";
    /* 
     如果_size是3
     "d{1,3}(?=(d{3})+$)" 
     */
    var regText="d{1,"+_size+"}(?=(d{"+_size+"})+$)";
    /*   
    /d{1,3}(?=(d{3})+$)/g     這個(gè)正則的意思:匹配連續(xù)的三個(gè)數(shù)字,但是這些三個(gè)數(shù)字不能是字符串的開頭1-3個(gè)字符  
     */
    var reg=new RegExp(regText,"g");
    /* 
    (-?) 匹配前面的-號(hào)   (d+)匹配中間的數(shù)字   ((.d+)?)匹配小數(shù)點(diǎn)后面的數(shù)字
    //$0-匹配結(jié)果,$1-第一個(gè)括號(hào)返回的內(nèi)容----(-?)    $2,$3如此類推  
    */
    return _str.replace(/^(-?)(d+)((.d+)?)$/, function ($0, $1, $2, $3) {
          return $1 + $2.replace(reg, "$&,") + $3;
    })
}

10.對(duì)象合并,并且記錄異常數(shù)據(jù)

這個(gè)需求,可能大家有點(diǎn)懵。下面實(shí)例分析
比如有兩個(gè)都地方記錄了我的信息

let info1={
        name:"守候",
        sex:"男",
        age:24,
        job:"web前端"
    },info2={
        name:"守候!",
        country:"china",
        interest:"basketball",
        phone:"12345678910",
        job:"web前端"
    }

現(xiàn)在要合并我的信息,并且記錄可能有異常的信息。比如上面的name屬性,在兩個(gè)對(duì)象都有,而且兩個(gè)對(duì)象的值不一樣,那么就不知道到底是info1中的name屬性是正確的,還是info2中的name屬性是正確的。所以,就得把name這個(gè)屬性記錄起來,方便以后核對(duì)name這個(gè)屬性。

如下圖

下面,一步一步來,先不管3721,直接合并屬性

let objAll={};
function assignObj(objArr) {
    let _obj={};
    for(let i=0;i

然后先準(zhǔn)備一個(gè)字段,記錄哪些異常信息

objAll.warnInfo=[];

最后檢查對(duì)象,判斷哪些信息有異常

  function checkObj(_objAll,objList) {
        //獲取所有屬性
        let _keys=Object.keys(_objAll);
        for(let i=0;i
11.篩選標(biāo)簽

如下圖,在下面渲染這個(gè)標(biāo)簽

大家可能第一可能覺得壓根沒難度
就是一個(gè)對(duì)象數(shù)組:比如

var searchTag=[
    {label:"產(chǎn)品編碼",value:"100072236-8"},
    {label:"產(chǎn)品名稱",value:"甘油"}
]

但是這樣的數(shù)據(jù),顯然是要經(jīng)過處理生成的

因?yàn)椴豢赡苓@樣發(fā)送請(qǐng)求

http://example.com?產(chǎn)品編碼=100072236-8   

發(fā)送過去的參數(shù)應(yīng)該是這樣的

http://example.com?proId=100072236-8

var searchParam={proId:"100072236-8",proName:"甘油"}   

怎么進(jìn)行數(shù)據(jù)的處理呢,其實(shí)很簡(jiǎn)單,代碼不打注釋,我想都看得懂

var searchTag=[];
var searchText={proId:"產(chǎn)品編碼",proName:"產(chǎn)品名稱"};
var searchParam={proId:"100072236-8",proName:"甘油"};
Object.keys(searchParam).forEach(function (item) {
    searchTag.push({
        label:searchText[item],
        key:item,
        value:searchParam[item]
    })
})
console.log(searchTag)    

有了這些數(shù)據(jù),渲染到頁面這個(gè)就簡(jiǎn)單了!

12.導(dǎo)入excel內(nèi)容

就是excel上這樣的內(nèi)容

轉(zhuǎn)成下面的數(shù)據(jù)

目錄如下

下面開始寫代碼,我們利用node.js來寫

let path = require("path");
//使用ejsexcel讀取excel文件  npm install ejsexcel --save
let ejsExcel=require("ejsexcel");
let fs=require("fs");
//讀取excel
let exBuf=fs.readFileSync(__dirname+"/resource/userList.xlsx");
let _data=[];
//獲取成功后
ejsExcel.getExcelArr(exBuf).then(exlJson=>{
    //獲取excel數(shù)據(jù)
    let workBook=exlJson;
    //獲取excel第一張表 sheet1
    let workSheets=workBook[0];
    //導(dǎo)出js的路徑
    let newfilepath=path.join(__dirname,"/resource/test.js");
    //遍歷第一張表的的每一行數(shù)據(jù)
    workSheets.forEach((item,index)=>{
        //從第二行開始插入,避免連表頭也插入_data里面
        if(index>0){
            //往_data插入單元格個(gè)值,item[0]相當(dāng)于excel中的姓名,item[1]就是excel中的聯(lián)系電話
            _data.push({
                name:item[0],
                phone:item[1]
            })
        }
    });
    //寫入js文件
    fs.writeFileSync(newfilepath, "let _data="+JSON.stringify(_data)+";export {_data}");
}).catch(error=>{
    //打印獲取失敗信息
    console.log("讀取錯(cuò)誤!");
    console.log(error);
});

然后命令行執(zhí)行該js

$ node importFile.js

然后就發(fā)現(xiàn)多了一個(gè)test.js文件

excel的數(shù)據(jù)就這樣導(dǎo)入成js的一個(gè)數(shù)組了,只要引入這個(gè)數(shù)組,就可以正常的使用了!

13.隨機(jī)循環(huán)

當(dāng)時(shí)接到的業(yè)務(wù)是實(shí)際顯示客戶的信息,感覺有點(diǎn)像音樂播放器的隨機(jī)循環(huán)。

要求有兩個(gè):
1.一個(gè)提示列表里面,提示的信息每隔500ms隨機(jī)展示。
2.同一輪循環(huán)里面,一個(gè)提示信息只能展示一次。
3.列表的提示信息全部展示完了,進(jìn)行下一輪展示。
這個(gè)邏輯沒什么,直接在代碼打上注釋,我想大家就明白了!

var tipList=["提示1","提示2","提示3","提示4","提示5","提示6","提示7","提示8","提示9"];
var tipListShow=[];
tipListShow=Object.assign([],tipList);
var i=0,timer=null;
function play() {
    //隨機(jī)顯示一個(gè),顯示了之后,把這個(gè)項(xiàng)從tipListShow中刪除掉,防止在同一輪重復(fù)出現(xiàn)!
    console.log(tipListShow.splice(Math.floor(Math.random() * tipListShow.length),1)[0]);
    //當(dāng)循環(huán)完了之后,tipListShow的長(zhǎng)度就會(huì)是0,然后就重新賦值,準(zhǔn)備進(jìn)行下一輪的隨機(jī)循環(huán)
    if(tipListShow.length===0){
        tipListShow=Object.assign([],tipList);
        i=0;
    }
    //如果需要暫?;蛘咄V沟?,清除這個(gè)定時(shí)器即可,下次執(zhí)行就重新這樣創(chuàng)建定時(shí)器,執(zhí)行play();!
    timer=setTimeout(function () {
        play();
    },500);
}
play();

14.小結(jié)

好了,關(guān)于我收集到的一些業(yè)務(wù)需求邏輯,以及實(shí)現(xiàn)的方式,就說到這里了!接觸到的業(yè)務(wù)需求邏輯很多,但是值得寫的,可以當(dāng)做練習(xí)題的,就記錄到這里了。我上面代碼實(shí)現(xiàn)可能會(huì)有點(diǎn)粗糙,大家有更好的實(shí)現(xiàn)方案,歡迎建議一下。如果大家有什么可以當(dāng)做練習(xí)題的需求,可以提下。讓大家有多些練習(xí)題可以嘗試下,學(xué)習(xí)下!

-------------------------華麗的分割線--------------------
想了解更多,關(guān)注關(guān)注我的微信公眾號(hào):守候書閣

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92273.html

相關(guān)文章

  • 一只node爬蟲的升級(jí)打怪之路

    摘要:我是一個(gè)知乎輕微重度用戶,之前寫了一只爬蟲幫我爬取并分析它的數(shù)據(jù),我感覺這個(gè)過程還是挺有意思,因?yàn)檫@是一個(gè)不斷給自己創(chuàng)造問題又去解決問題的過程。所以這只爬蟲還有登陸知乎搜索題目的功能。 我一直覺得,爬蟲是許多web開發(fā)人員難以回避的點(diǎn)。我們也應(yīng)該或多或少的去接觸這方面,因?yàn)榭梢詮呐老x中學(xué)習(xí)到web開發(fā)中應(yīng)當(dāng)掌握的一些基本知識(shí)。而且,它還很有趣。 我是一個(gè)知乎輕微重度用戶,之前寫了一只爬...

    shiweifu 評(píng)論0 收藏0
  • 鄭方方打怪升級(jí)日記 — 初識(shí)HTML5與CSS3

    摘要:任務(wù)名稱響應(yīng)式砸蛋頁面任務(wù)背景前輩方方啊最近項(xiàng)目也沒什么事情你看這個(gè)砸蛋頁面不是很好看要不你做一個(gè)響應(yīng)式砸蛋頁面吧系統(tǒng)鄭方方接下前輩的任務(wù)鄭方方自動(dòng)解析任務(wù)步驟任務(wù)響應(yīng)式砸蛋頁面與入門閱讀秘籍響應(yīng)式布局制作層搭配搭配控制器完成任務(wù)人物背 任務(wù)名稱:響應(yīng)式砸蛋頁面 任務(wù)背景 前輩:方方啊,最近項(xiàng)目也沒什么事情,你看這個(gè)砸蛋頁面不是很好看,要不你做一個(gè)響應(yīng)式砸蛋頁面吧? 系統(tǒng):鄭方方接下前...

    spademan 評(píng)論0 收藏0
  • 鄭方方打怪升級(jí)日記 — 初識(shí)HTML5與CSS3

    摘要:任務(wù)名稱響應(yīng)式砸蛋頁面任務(wù)背景前輩方方啊最近項(xiàng)目也沒什么事情你看這個(gè)砸蛋頁面不是很好看要不你做一個(gè)響應(yīng)式砸蛋頁面吧系統(tǒng)鄭方方接下前輩的任務(wù)鄭方方自動(dòng)解析任務(wù)步驟任務(wù)響應(yīng)式砸蛋頁面與入門閱讀秘籍響應(yīng)式布局制作層搭配搭配控制器完成任務(wù)人物背 任務(wù)名稱:響應(yīng)式砸蛋頁面 任務(wù)背景 前輩:方方啊,最近項(xiàng)目也沒什么事情,你看這個(gè)砸蛋頁面不是很好看,要不你做一個(gè)響應(yīng)式砸蛋頁面吧? 系統(tǒng):鄭方方接下前...

    justCoding 評(píng)論0 收藏0
  • 鄭方方打怪升級(jí)日記 — 初識(shí)HTML5與CSS3

    摘要:任務(wù)名稱響應(yīng)式砸蛋頁面任務(wù)背景前輩方方啊最近項(xiàng)目也沒什么事情你看這個(gè)砸蛋頁面不是很好看要不你做一個(gè)響應(yīng)式砸蛋頁面吧系統(tǒng)鄭方方接下前輩的任務(wù)鄭方方自動(dòng)解析任務(wù)步驟任務(wù)響應(yīng)式砸蛋頁面與入門閱讀秘籍響應(yīng)式布局制作層搭配搭配控制器完成任務(wù)人物背 任務(wù)名稱:響應(yīng)式砸蛋頁面 任務(wù)背景 前輩:方方啊,最近項(xiàng)目也沒什么事情,你看這個(gè)砸蛋頁面不是很好看,要不你做一個(gè)響應(yīng)式砸蛋頁面吧? 系統(tǒng):鄭方方接下前...

    jemygraw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

heartFollower

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<