一款由html5 canvas实现五彩小圆圈背景特效

之前介绍了好几款html5 canvas实现的特效。今天要为大家介绍一款由html5 canvas实现五彩小圆圈背景特效。五彩的小圆圈渐显渐失的特效。效果图如下:

 

在线预览   源码下载

 

html代码:

<canvas>
    </canvas>
    <div id="Circle">
        <span>Harris Carney<span>
    </div>

css代码:

 body
        {
            margin: 0;
            overflow: hidden;
            background: #E9E9E9;
        }
        
        #Circle
        {
            position: absolute;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            width: 150px;
            height: 150px;
            border-radius: 150px;
            background: url('1.jpg');
        }
        
        #Circle:before
        {
            content: '';
            position: absolute;
            top: -8px;
            left: -8px;
            width: 162px;
            height: 162px;
            border-radius: 162px;
            border: 2px solid #BCBCBC;
        }
        
        #Circle:after
        {
            content: '';
            position: absolute;
            top: -13px;
            left: -13px;
            width: 172px;
            height: 172px;
            border-radius: 172px;
            border: 2px solid #FF9900;
        }
        
        #Circle span
        {
            position: absolute;
            bottom: -60px;
            display: block;
            width: 150px;
            text-align: center;
            font-family: 'Oswald';
            color: #333;
            font-size: 25px;
        }

js代码:

var canvas = $('canvas')[0];
        var context = canvas.getContext('2d');

        function Dot() {
            this.alive = true;
            this.x = Math.round(Math.random() * canvas.width);
            this.y = Math.round(Math.random() * canvas.height);
            this.diameter = Math.random() * 7;
            this.colorIndex = Math.round(Math.random() * 3);
            this.colorArray = ['rgba(255,153,0,', 'rgba(66,66,66,', 'rgba(188,188,188,', 'rgba(50,153,187,'];
            this.alpha = 0.1;
            this.color = this.colorArray[this.colorIndex] + this.alpha + ')';

            this.velocity = { x: Math.round(Math.random() < 0.5 ? -1 : 1) * Math.random() * 0.7, y: Math.round(Math.random() < 0.5 ? -1 : 1) * Math.random() * 0.7 };
        }

        Dot.prototype = {
            Draw: function () {
                context.fillStyle = this.color;
                context.beginPath();
                context.arc(this.x, this.y, this.diameter, 0, Math.PI * 2, false);
                context.fill();
            },

            Update: function () {
                if (this.alpha < 0.8) {
                    console.log(this.color);
                    this.alpha += 0.01;
                    this.color = this.colorArray[this.colorIndex] + this.alpha + ')';
                    console.log('===' + this.color);
                }

                this.x += this.velocity.x;
                this.y += this.velocity.y;

                if (this.x > canvas.width + 5 || this.x < 0 - 5 || this.y > canvas.height + 5 || this.y < 0 - 5) {
                    this.alive = false;
                }
            }
        };

        var EntityArray = [];

        function Initialize() {
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;

            for (var x = 0; x < 100; x++) {
                EntityArray.push(new Dot());
            }

            Update();
        }

        function Update() {
            if (EntityArray.length < 100) {
                for (var x = EntityArray.length; x < 100; x++) {
                    EntityArray.push(new Dot());
                }
            }

            EntityArray.forEach(function (dot) {
                dot.Update();
            });

            EntityArray = EntityArray.filter(function (dot) {
                return dot.alive;
            });

            Draw();

            requestAnimationFrame(Update);
        }

        function Draw() {
            context.clearRect(0, 0, canvas.width, canvas.height);
            EntityArray.forEach(function (dot) {
                dot.Draw();
            });
        }

        $(window).resize(function () {
            EntityArray = [];
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
        });

        Initialize(); //@ sourceURL=pen.js

注:本文爱编程原创文章,转载请注明原文地址:http://www.w2bc.com/Article/6835

posted @ 2014-09-17 10:20  拎壶充  阅读(896)  评论(0编辑  收藏  举报