您所在的位置:小祥子 » 编程 » JavaScript » 正文

颜色随机的小方块

时间:2015-07-24 编辑:微宇宙 来源:CnBlogs

用碎片加载小方块实现简单的随机色块,直接上代码,如果你不嫌麻烦,可以看demo:http://codepen.io/koringz/pen/QbZEwx

/**/JS注释已删

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <title>koringz</title>
    <link rel="stylesheet" href="CSS/demo.css">
</head>
<body>
    <div class="container">
        <div class="main">
            <div class="colorful"></div>
        </div>
    </div>
</body>
</html>
* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: transparent;
}
body {
  margin: 0;
  padding: 0;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 14px;
  line-height: 1.42857143;
  color: #333;
  background-color: rgba(211,232,132,0.8);
}
.container {
  overflow: visible;
}
.main {
  position: relative;
  width: 90%;
  height:200px;
  margin:auto;
}
.colorful {
  overflow: visible;
  width: 100%;
  height: 100%;
}

.colorful > a {
  float: left;
  display: block;
  width: 50px;
  height: 50px;
  zoom:2;
}

.colorful > a:hover {
  -webkit-animation:infinite 2s ease-in-out start-roll;
  -moz-animation:infinite 2s ease-in-out start-roll;
          animation:infinite 2s ease-in-out start-roll;
}
@-webkit-keyframes start-roll{
    0% {
        -webkit-transform: rotate(0deg); /*chrome*/
        -moz-transform: rotate(0deg); /*火狐*/
        -ms-transform: rotate(0deg); /*IE*/
        transform: rotate(0deg);
        -webkit-transition: opacity .3s linear;
        transition: opacity .3s linear;
        opacity: .5;
        filter: alpha(opacity=50);
        zoom:1;
    }
    50% {
        -webkit-transform: rotate(180deg); /*chrome*/
        -moz-transform: rotate(180deg); /*火狐*/
        -ms-transform: rotate(180deg); /*IE*/
        transform: rotate(180deg);
        -webkit-transition: opacity 1s linear;
        transition: opacity 1s linear;
        opacity: 1;
        filter: alpha(opacity=100);
          zoom:2;
    }
    100% {
        -webkit-transform: rotate(360deg); /*chrome*/
        -moz-transform: rotate(360deg); /*火狐*/
        -ms-transform: rotate(360deg); /*IE*/
        transform: rotate(360deg);
        -webkit-transition: opacity .3s linear;
        transition: opacity .3s linear;
        opacity: .5;
        filter: alpha(opacity=50);
        zoom:1;
    }
}
@-moz-keyframes start-roll{
    0% {
        -webkit-transform: rotate(0deg); /*chrome*/
        -moz-transform: rotate(0deg); /*火狐*/
        -ms-transform: rotate(0deg); /*IE*/
        transform: rotate(0deg);
        -webkit-transition: opacity .3s linear;
        transition: opacity .3s linear;
        opacity: .5;
        filter: alpha(opacity=50);
    }
    50% {
        -webkit-transform: rotate(180deg); /*chrome*/
        -moz-transform: rotate(180deg); /*火狐*/
        -ms-transform: rotate(180deg); /*IE*/
        transform: rotate(180deg);
        -webkit-transition: opacity 1s linear;
        transition: opacity 1s linear;
        opacity: .5;
        filter: alpha(opacity=50);
    }
    100% {
        -webkit-transform: rotate(360deg); /*chrome*/
        -moz-transform: rotate(360deg); /*火狐*/
        -ms-transform: rotate(360deg); /*IE*/
        transform: rotate(360deg);
        -webkit-transition: opacity .3s linear;
        transition: opacity .3s linear;
        opacity: .5;
        filter: alpha(opacity=50);
    }
}
@keyframes start-roll{
    0% {
        -webkit-transform: rotate(0deg); /*chrome*/
        -moz-transform: rotate(0deg); /*火狐*/
        -ms-transform: rotate(0deg); /*IE*/
        transform: rotate(0deg);
        -webkit-transition: opacity .3s linear;
        transition: opacity .3s linear;
        opacity: .5;
        filter: alpha(opacity=50);
    }
    50% {
        -webkit-transform: rotate(180deg); /*chrome*/
        -moz-transform: rotate(180deg); /*火狐*/
        -ms-transform: rotate(180deg); /*IE*/
        transform: rotate(180deg);
        -webkit-transition: opacity 1s linear;
        transition: opacity 1s linear;
        opacity: .5;
        filter: alpha(opacity=50);
    }
    100% {
        -webkit-transform: rotate(360deg); /*chrome*/
        -moz-transform: rotate(360deg); /*火狐*/
        -ms-transform: rotate(360deg); /*IE*/
        transform: rotate(360deg);
        -webkit-transition: opacity .3s linear;
        transition: opacity .3s linear;
        opacity: .5;
        filter: alpha(opacity=50);
    }
}
(function (window) {
    var document = window.document;
    function on(elem, evtnm, eventhd) {
        var onevtnm = 'on' + evtnm;
        elem[onevtnm] = eventhd;
    }
    function grc() {
        var val = [], i = 0;
        while (++i <= 3) {
            val.push(Math.floor(Math.random() * 255));
        }
        return 'rgb(' + val.join() + ')';
    }
    function fbc() {
        var el = document.querySelectorAll('.colorful')[0],
            total = Math.floor(el.offsetWidth / 50) * Math.floor(el.offsetHeight / 50),
            df = document.createDocumentFragment(),
            a;
        while (total-- > 0) {
            a = document.createElement('a');
            a.style.backgroundColor = grc();
            df.appendChild(a);
        }
        el.appendChild(df);
    }
    on(window, 'load', function () {
        fbc();
    });
})(window)

声明:原本想在@keyframe{}内部添加zoom属性放大,结果效果不显示放大,放外面可以放大,好搜搜了一下没有找到原因不能的原因。当然其他方法也不是不行。

关键词:随机