发表于: 2017-06-01 08:44:10

4 1096


今日已将任务一:九宫格完成,看似很简单的问题,却废了我很大的功夫,经常卡在一个点上,想明白之后就发觉这是多么得简单啊。

最终完成效果图如下:

以下是代码部分:

 HTML:

    <main>

        <div class="box">

            <ul>

                <li class="grid"></li>

                <li class="grid"></li>

                <li class="grid"></li>

            </ul>

            <ul>

                <li class="grid"></li>

                <li class="grid"></li>

                <li class="grid"></li>

            </ul>

            <ul>

                <li class="grid"></li>

                <li class="grid"></li>

                <li class="grid"></li>

            </ul>

        </div>

        <button class="start-btn">请开始你的表演</button>

        <button class="end-btn">够了可以结束了</button>

    </main>

css: 

    

@import url(https://cdn.bootcss.com/normalize/7.0.0/normalize.min.css);

@import url(./font.css);

main {

    position: relative;

    max-width: 380px;

    max-height: 640px;

    margin: 0 auto;

    margin-top: 40px;

    padding: 10px;

    border-radius: 4px;

    background-color: #fefefe;

    box-shadow: 0 2px 3px 1px rgba(38, 50, 56, 0.16);

}

.box {

    margin-bottom: 20px;

}

.box > ul {

    display: flex;

    justify-content: space-between;

    padding-left: 0;

    margin: 0;

    margin-bottom: 10px;

}

.box > ul > li {

    float: left;

    min-height: 120px;

    width: 120px;

    list-style: none;

    border-radius: 4px;

    background-color: #90A4AE;

    -webkit-transition: transform 0.2s ease-out;

    -moz-transition: transform 0.2s ease-out;

    transition: transform 0.2s ease-out;

}

.box > ul > li:hover {

    -webkit-transform: scale(1.2);

    -moz-transform: scale(1.2);

    -ms-transform: scale(1.2);

    -o-transform: scale(1.2);

    transform: scale(1.2);

}

button {

    -webkit-transition: all 0.2s ease-in;

    -moz-transition: all 0.2s ease-in;

    transition: all 0.2s ease-in;

    outline-style: none;

}

button:hover {

    background-color: #E91E63;

    color: #CFD8DC;

}

button:active {

    color: #fff;

    -webkit-transform: scale(1.05);

    -moz-transform: scale(1.05);

    -ms-transform: scale(1.05);

    -o-transform: scale(1.05);

    transform: scale(1.05);

}

.start-btn,

.end-btn {

    width: 100%;

    height: 50px;

    background-color: #2196F3;

    color: #f1f1f1;

    border: 0;

    border-radius: 4px;

    margin-top: 10px;

}

.end-btn {

    background-color: #F44336;

}

JavaScript:

    

const gobal = {

    clock: 0

};

(function() {

    let gridEls = document.getElementsByClassName('grid'),

        startBtn = document.querySelector('.start-btn'),

        endBtn = document.querySelector('.end-btn'),

        changeColor = null;

    startBtn.onmousedown = function() {

        clearInterval(gobal.clock);

        strobe(gridEls, 3, 1000);

    };

    endBtn.onmousedown = function() {

        clearInterval(gobal.clock);

        for (let i = 0, len = gridEls.length; i < len; i++) {

            let el = gridEls[i];

            el.style.backgroundColor = '#90A4AE';

        }

    };

}());

function createColor(num) {

    let value = Array(),

        color = Array(num);

    for (let i = 0; i < num; i++) {

        value[i] = Math.floor(Math.random() * 255);

        value[i + 1] = Math.floor(Math.random() * 255);

        value[i + 2] = Math.floor(Math.random() * 255);

        color[i] = 'rgb(' + value[i] + ',' + value[i + 1] + ',' + value[i + 2] + ')';

    }

    return color;

}

function createNumber(num1, num2) {

    let number = Array(num1);

    for (let i = 0; i < num1; i++) {

        number[i] = i;

    }

    for (let i = 0; i < num1; i++) {

        let iRand = parseInt(num1 * Math.random()),

            temp = number[i];

        number[i] = number[iRand];

        number[iRand] = temp;

    }

    return number.slice(0, num2);

}

function strobe(els, num, time) {

    gobal.clock = setInterval(function() {

        for (let i = 0, len = els.length; i < len; i++) {

            let el = els[i];

            el.style.backgroundColor = '#90A4AE';

        }

        let colorArr = createColor(num),

            numberArr = createNumber(9, num);

        for (let i = 0, len = numberArr.length; i < len; i++) {

            let index = numberArr[i],

                el = els[index];

                el.style.backgroundColor = colorArr[i];

        }

    }, time);

}

至此,以上是所有代码,明日将完成任务二


返回列表 返回列表
评论

    分享到