The H5 Canvas API is an important tool in HTML5 for drawing graphics and achieving interactive effects. Its pixel-based properties make it perform well when dealing with complex graphics and real-time rendering. 1. Initialization requires correctly setting the width and height of the canvas element and obtaining the drawing context ctx; 2. The drawing basics include using fillRect, strokeRect, path drawing and other methods, and pay attention to the use of beginPath and closePath; 3. To realize interaction, coordinate conversion and collision detection must be performed manually, and click areas are judged by monitoring mouse events; 4. Animation should be driven by requestAnimationFrame, and performance should be optimized such as reducing the redraw range, layered drawing, etc. to improve fluency and efficiency. Mastering these key points can help develop interactive web applications and mini-games.
The Canvas API is a very powerful tool provided by HTML5 to draw graphics, create animations, and even achieve interactive effects on web pages. It is not DOM-based like SVG, but rather a pixel-based drawing surface, so it performs better when dealing with complex graphics and real-time rendering. If you want to do some interactive and visually rich web applications or mini-games, Canvas is an unavoidable technology.

Let’s take a look at some key points and usage techniques of the H5 Canvas API from several practical perspectives.
1. Basic structure and initialization: Don't miss this step
The first step in using Canvas is to add a <canvas></canvas>
element to the HTML page:

<canvas id="myCanvas" width="800" style="max-width:90%"></canvas>
Then get the context (context) through JavaScript, which is the core object that really operates the drawing:
const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d');
There is a small detail here that many people are likely to ignore: The default size of Canvas is 300x150 . If the width and height attribute is not set, the canvas may be displayed much smaller than you expected.

Also, it should be noted that getContext('2d')
is the most commonly used context type, and WebGL is optional, but that is another topic.
2. Drawing basics: shape, color and path
Canvas is the "immediate mode" drawing method, which means that once you finish drawing a graph, it is just pixels, and you can no longer operate this graphic object alone in the future. So the drawing order is very important.
Common drawing methods include:
-
fillRect(x, y, width, height)
: fill rectangle -
strokeRect(x, y, width, height)
: stroke rectangle -
clearRect(x, y, width, height)
: clearRect(x, y, width, height): clear the area - Path related:
beginPath()
,moveTo()
,lineTo()
,arc()
, etc.
For example, draw a red circle:
ctx.beginPath(); ctx.arc(100, 100, 50, 0, Math.PI * 2); ctx.fillStyle = 'red'; ctx.fill(); ctx.closePath();
Notice:
- It is best to call
beginPath()
every time you start a new path, otherwise strange connection lines may appear -
closePath()
is not necessary, but helps to end the path clearly
3. The key to realizing interaction: coordinate conversion and event binding
The graphics on Canvas are essentially pixels and cannot directly bind click events like DOM elements. To achieve interaction, for example, clicking a graphic to trigger an action, you need to manually determine whether the mouse position falls into the graphic.
The basic ideas are as follows:
- Listen to canvas' mouse events (such as
click
ormousemove
) - Get the mouse coordinates relative to canvas
- Collision detection is performed based on the position information of the graph
For example, get the mouse position:
canvas.addEventListener('click', function(e) { const rect = canvas.getBoundingClientRect(); const x = e.clientX - rect.left; const y = e.clientY - rect.top; // Here you can add judgment logic, such as whether a circle or rectangle is clicked});
For circular click detection, the distance can be calculated using the Pythagorean theorem:
function isPointInCircle(px, py, cx, cy, radius) { const dx = px - cx; const dy = py - cy; return dx * dx dy * dy <= radius * radius; }
This type of judgment can be expanded according to different figures, such as rectangles, polygons, etc.
4. Animation and performance optimization: requestAnimationFrame is the key
Canvas is most commonly used for animation, such as game loops, particle systems, etc. The basic way to implement animation is to clear the canvas, redraw all elements, and continuously loop through the process.
It is recommended to use requestAnimationFrame()
to drive animations instead of setInterval()
or setTimeout()
because the former can better adapt to browser refresh rate, improve performance and fluency.
Simple example:
function animate() { ctx.clearRect(0, 0, canvas.width, canvas.height); // Update and draw the graph requestAnimationFrame(animate); } animate();
A few points to pay attention to in terms of performance:
- Minimize frequent
clearRect
and full-screen repainting - Consider layered drawing (multiple canvas) or off-screen rendering when there are too many graphics
- For static backgrounds, it can be cached as image data
Canvas API is not particularly difficult to learn, but it requires a certain amount of practice and understanding of the basics of graphics to use it well. Once you master these common techniques, you can make button responses, dynamic charts, mini-game interfaces and even simple 2D games.
Basically all this is it, it is not complicated but has a lot of details, so it is easier to get started by trying it.
The above is the detailed content of Deep Dive into H5 Canvas API for Interactive Graphics. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The way to add drag and drop functionality to a web page is to use HTML5's DragandDrop API, which is natively supported without additional libraries. The specific steps are as follows: 1. Set the element draggable="true" to enable drag; 2. Listen to dragstart, dragover, drop and dragend events; 3. Set data in dragstart, block default behavior in dragover, and handle logic in drop. In addition, element movement can be achieved through appendChild and file upload can be achieved through e.dataTransfer.files. Note: preventDefault must be called

When using HTML5SSE, the methods to deal with reconnection and errors include: 1. Understand the default reconnection mechanism. EventSource retrys 3 seconds after the connection is interrupted by default. You can customize the interval through the retry field; 2. Listen to the error event to deal with connection failure or parsing errors, distinguish error types and execute corresponding logic, such as network problems relying on automatic reconnection, server errors manually delay reconnection, and authentication failure refresh token; 3. Actively control the reconnection logic, such as manually closing and rebuilding the connection, setting the maximum number of retry times, combining navigator.onLine to judge network status to optimize the retry strategy. These measures can improve application stability and user experience.

To call GeolocationAPI, you need to use the navigator.geolocation.getCurrentPosition() method, and pay attention to permissions, environment and configuration. First check whether the browser supports API, and then call getCurrentPosition to obtain location information; the user needs to authorize access to the location; the deployment environment should be HTTPS; the accuracy or timeout can be improved through configuration items; the mobile behavior may be limited by device settings; the error type can be identified through error.code and given corresponding prompts in the failed callback to improve user experience and functional stability.

The core reason why browsers restrict the automatic playback of HTML5 videos is to improve the user experience and prevent unauthorized sound playback and resource consumption. The main strategies include: 1. When there is no user interaction, audio automatic playback is prohibited by default; 2. Allow mute automatic playback; 3. Audio videos must be played after the user clicks. The methods to achieve compatibility include: setting muted properties, mute first and then play in JS, and waiting for user interaction before playing. Browsers such as Chrome and Safari perform slightly differently on this strategy, but the overall trend is consistent. Developers can optimize the experience by first mute playback and provide an unmute button, monitoring user clicks, and handling playback exceptions. These restrictions are particularly strict on mobile devices, with the aim of avoiding unexpected traffic consumption and multiple videos

The reason why ARIA and HTML5 semantic tags are needed is that although HTML5 semantic elements have accessibility meanings, ARIA can supplement semantics and enhance auxiliary technology recognition capabilities. For example, when legacy browsers lack support, components without native tags (such as modal boxes), and state updates need to be dynamically updated, ARIA provides finer granular control. HTML5 elements such as nav, main, aside correspond to ARIArole by default, and do not need to be added manually unless the default behavior needs to be overridden. The situations where ARIA should be added include: 1. Supplement the missing status information, such as using aria-expanded to represent the button expansion/collapse status; 2. Add semantic roles to non-semantic tags, such as using div role to implement tabs and match them

The security risks of HTML5 applications need to be paid attention to in front-end development, mainly including XSS attacks, interface security and third-party library risks. 1. Prevent XSS: Escape user input, use textContent, CSP header, input verification, avoid eval() and direct execution of JSON; 2. Protect interface: Use CSRFToken, SameSiteCookie policies, request frequency limits, and sensitive information to encrypt transmission; 3. Secure use of third-party libraries: periodic audit dependencies, use stable versions, reduce external resources, enable SRI verification, ensure that security lines have been built from the early stage of development.

HTML5, CSS and JavaScript should be efficiently combined with semantic tags, reasonable loading order and decoupling design. 1. Use HTML5 semantic tags, such as improving structural clarity and maintainability, which is conducive to SEO and barrier-free access; 2. CSS should be placed in, use external files and split by module to avoid inline styles and delayed loading problems; 3. JavaScript is recommended to be introduced in front, and use defer or async to load asynchronously to avoid blocking rendering; 4. Reduce strong dependence between the three, drive behavior through data-* attributes and class name control status, and improve collaboration efficiency through unified naming specifications. These methods can effectively optimize page performance and collaborate with teams.

Doctype is a statement that tells the browser which HTML standard to use to parse the page. Modern web pages only need to be written at the beginning of the HTML file. Its function is to ensure that the browser renders the page in standard mode rather than weird mode, and must be located on the first line, with no spaces or comments in front of it; there is only one correct way to write it, and it is not recommended to use old versions or other variants; other such as charset, viewport, etc. should be placed in part.
