Realize super cool water light effect based on canvas

Realize super cool water light effect based on canvas

This article example shares with you the specific code for implementing a super cool water light effect based on canvas for your reference. The specific content is as follows

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="UTF-8">  
    <title>Super cool water light effect based on canvas</title>  
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        canvas{
            border: 1px solid red;
            width: 100%;
            height: 100%;
        }
    </style>
</head>  
<body onselectstart="return false">  
        <!-- Add the canvas tag and add a red border to make it easier to see on the page-->  
        <canvas id="myCanvas" >  
        Your browser does not support the canvas tag.   
        </canvas>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
    var canvas = document.getElementById("myCanvas");  
    var ctx = canvas.getContext("2d");    
    var cx1 = canvas.offsetLeft;
    var cy1 = canvas.offsetTop;
    var cx2 = canvas.offsetLeft + canvas.offsetWidth;
    var cy2 = canvas.offsetTop + canvas.offsetHeight;
    var bbox = canvas.getBoundingClientRect();  
    $(function(){
        var direction = 'right',x = y = right_count = down_count = left_count = up_count = 0;
        ctx.beginPath(); //Start a new drawing path ctx.moveTo(x, y); //Define the starting point coordinates of the line as (0,0)
        setInterval(function(){
            ctx.strokeStyle = '#'+Math.floor(Math.random()*16777215).toString(16);
            switch(direction){
                case 'right':
                    if(x >= 300 - right_count){
                        direction = 'down';    
                        right_count++;
                    }else{
                        x++;
                    }
                    break;
                case 'down':
                    if(y >= 150 - down_count){
                        direction = 'left';
                        down_count++;
                    }else{
                        y++;
                    }
                    break;
                case 'left':
                    if(x <= left_count){
                        direction = 'up';
                        left_count++;
                    }else{
                        x--;
                    }
                    break;
                case 'up':
                    if(y <= up_count + 1){
                        direction = 'right';
                        up_count++;
                    }else{
                        y--;
                    }
                    break;
            }
            ctx.lineTo(x, y);
            ctx.lineCap = 'round';
            ctx.lineWidth = 1; //Set the width of the line segment ctx.stroke(); //Draw a straight line along the path of the coordinate point sequence }, 1);
    }) 
</script>  
</body>  
</html>

Effect screenshots:

The running lights are always running, and they are mainly circling here.

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Canvas realizes searchlight effect

<<:  In-depth analysis of the Identifier Case Sensitivity problem in MySQL

>>:  Detailed explanation of two ways of Linux service management: service and systemctl

Recommend

Detailed explanation of the process of using docker to build minio and java sdk

Table of contents 1minio is simple 2 Docker build...

Introduction to keyword design methods in web design

Many times, we ignore the setting of the web page ...

Detailed explanation of the adaptive adaptation problem of Vue mobile terminal

1. Create a project with vue ui 2. Select basic c...

Full HTML of the upload form with image preview

The upload form with image preview function, the ...

Practice of deploying web applications written in Python with Docker

Table of contents 1. Install Docker 2. Write code...

Detailed explanation of how to quickly build a blog website using Docker

Table of contents 1. Preparation 2. Deployment Pr...

The unreasonable MaxIdleConns of MySQL will cause short connections

1 Background Recently, some performance issues ha...

Introduction to the use of http-equiv attribute in meta tag

meta is an auxiliary tag in the head area of ​​htm...

Reasons and solutions for slow MySQL query stuck in sending data

Because I wrote a Python program and intensively ...

In-depth understanding of Worker threads in Node.js

Table of contents Overview The history of CPU-bou...

Detailed explanation of the wonderful CSS attribute MASK

This article will introduce a very interesting at...

Using CSS3 to implement font color gradient

When using Animation.css, I found that the font o...

How to implement mysql database backup in golang

background Navicat is the best MySQL visualizatio...