Project Timeline
The deadline is .
View Requirements
Important: All submissions must include documentation.
- Project proposal
- Source code
- User manual
Our product code is Project Alpha.
Dive deeper into HTML5 with advanced elements, canvas API, web components, and modern form controls
Start LearningHTML5 introduced additional semantic elements that provide more meaningful structure to web content.
Element | Description |
---|---|
<details> & <summary> | Creates an interactive widget to show/hide additional information |
<mark> | Highlights text for reference or notation purposes |
<time> | Represents a specific period in time or datetime |
<dialog> | Represents a dialog box or interactive component |
<wbr> | Word break opportunity - suggests where a line break might occur |
<data> | Links content with a machine-readable translation |
<article> <h2>Project Timeline</h2> <p>The deadline is <time datetime="2023-12-31">December 31st</time>.</p> <details> <summary>View Requirements</summary> <p><mark>Important:</mark> All submissions must include documentation.</p> <ul> <li>Project proposal</li> <li>Source code</li> <li>User manual</li> </ul> </details> <p>Our product code is <data value="PRD-2023-001">Project Alpha</data>.</p> </article>
The deadline is .
Important: All submissions must include documentation.
Our product code is Project Alpha.
The HTML5 Canvas element provides a powerful drawing surface for creating graphics, animations, and visualizations using JavaScript.
Method | Description |
---|---|
getContext('2d') | Gets the 2D rendering context for the canvas |
fillRect(x, y, w, h) | Draws a filled rectangle |
strokeRect(x, y, w, h) | Draws a rectangular outline |
beginPath() | Starts a new path |
moveTo(x, y) | Moves the pen to the specified coordinates |
lineTo(x, y) | Adds a straight line to the current path |
arc(x, y, r, s, e) | Adds an arc to the path |
fill() | Fills the current path |
stroke() | Strokes the current path |
const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); // Draw rectangle ctx.fillStyle = '#3498db'; ctx.fillRect(50, 50, 100, 80); // Draw circle ctx.beginPath(); ctx.arc(250, 90, 40, 0, Math.PI * 2); ctx.fillStyle = '#e74c3c'; ctx.fill(); // Draw triangle ctx.beginPath(); ctx.moveTo(150, 200); ctx.lineTo(200, 150); ctx.lineTo(250, 200); ctx.closePath(); ctx.fillStyle = '#2ecc71'; ctx.fill(); // Draw text ctx.font = '24px Arial'; ctx.fillStyle = '#2c3e50'; ctx.fillText('HTML5 Canvas', 120, 280);
HTML5 introduced several specialized form elements that enhance user experience and provide more semantic form controls.
Element | Description |
---|---|
<datalist> | Provides an "autocomplete" feature for <input> elements |
<output> | Represents the result of a calculation or user action |
<meter> | Represents a scalar measurement within a known range |
<progress> | Displays an indicator showing the completion progress of a task |
<form oninput="result.value = range.value"> <div class="form-group"> <label for="browser">Choose browser:</label> <input list="browsers" id="browser"> <datalist id="browsers"> <option value="Chrome"> <option value="Firefox"> <option value="Safari"> <option value="Edge"> <option value="Opera"> </datalist> </div> <div class="form-group"> <label for="range">Volume:</label> <input type="range" id="range" min="0" max="100"> <output name="result" for="range">50</output> </div> <div class="form-group"> <label>Storage:</label> <meter min="0" max="100" value="65">65%</meter> 65% </div> <div class="form-group"> <label>Upload Progress:</label> <progress id="progress" value="30" max="100"> 30% </progress> </div> </form>
Web Components are a set of web platform APIs that allow you to create custom, reusable, encapsulated HTML tags.
Technology | Description |
---|---|
Custom Elements | Define new HTML elements with custom behavior |
Shadow DOM | Encapsulates DOM and CSS for components |
HTML Templates | Declare reusable markup with <template> |
HTML Imports | (Deprecated) Import HTML documents with components |
<!-- Define the template --> <template id="user-card-template"> <style> .card { border: 1px solid #ddd; border-radius: 8px; padding: 16px; max-width: 300px; font-family: Arial, sans-serif; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .name { font-size: 1.2rem; font-weight: bold; margin-bottom: 8px; } .email { color: #666; font-size: 0.9rem; } </style> <div class="card"> <div class="name"></div> <div class="email"></div> </div> </template> <script> class UserCard extends HTMLElement { constructor() { super(); const template = document.getElementById('user-card-template'); const content = template.content.cloneNode(true); // Create shadow root this.attachShadow({ mode: 'open' }).appendChild(content); // Set content this.shadowRoot.querySelector('.name').textContent = this.getAttribute('name'); this.shadowRoot.querySelector('.email').textContent = this.getAttribute('email'); } } // Define the custom element customElements.define('user-card', UserCard); </script> <!-- Use the component --> <user-card name="John Doe" email="[email protected]"></user-card>
HTML5 includes features and best practices that significantly improve web accessibility.
Feature | Description |
---|---|
Semantic Elements | Elements like <nav>, <main>, <article> provide meaning to assistive technologies |
ARIA Attributes | Roles, states, and properties to enhance accessibility |
Form Accessibility | New input types, required attribute, and validation |
Caption & Track | <track> element for video/audio captions and subtitles |
Focus Management | Improved keyboard navigation and focus control |
Attribute | Purpose |
---|---|
role | Defines the purpose of an element (e.g., role="navigation") |
aria-label | Provides a text label for an element |
aria-labelledby | References another element that labels the current element |
aria-describedby | References another element that describes the current element |
aria-hidden | Hides an element from accessibility APIs |
Important: While ARIA can enhance accessibility, it should be used to supplement semantic HTML, not replace it. Always prefer native HTML elements when possible.
Create a dashboard using advanced HTML5 elements including canvas, web components, and advanced form controls.