语义化标签
HTML5 引入了一些新的语义化标签,这些标签有助于更清晰地描述页面结构和内容。它们提供了更具有可读性和可维护性的 HTML 代码,同时也使搜索引擎和辅助技术更好地理解网页。
<header>
:表示页面或节的顶部,通常包含网站的标题、导航栏或其他引导性内容。<nav>
:表示导航区域,通常包含网站的主要导航链接。<section>
:表示文档中的一个独立节或主题,通常包含一组相关的内容。<article>
:表示独立的、完整的、可以独立分配或重用的内容,如博客文章、新闻报道等。<footer>
:表示页面或节的底部,通常包含版权信息、联系方式或其他辅助性内容。
<header> <h1>My Website</h1> <nav> <ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li> <li><a href="/contact">Contact</a></li> </ul> </nav> </header> <section> <h2>About Us</h2> <p>Welcome to our website! We are a team of passionate individuals...</p> </section> <article> <h3>10 Tips for a Healthy Lifestyle</h3> <p>Here are some valuable tips to maintain a healthy lifestyle...</p> </article> <footer> <p>© 2022 My Website. All rights reserved.</p> </footer>
复制
语义化标签的选择器
语义化标签可以使用 JavaScript 和 CSS 来选择和操作,就像其他 HTML 元素一样。可以使用各种选择器和操作方法来选择和修改语义化标签。
在 JavaScript 中,可以使用querySelector
和querySelectorAll
方法来选择语义化标签。这些方法通过传递选择器作为参数,返回匹配的元素。
// 选择单个语义化标签 const header = document.querySelector("header"); // 选择多个语义化标签 const sections = document.querySelectorAll("section"); // 对选择的语义化标签进行操作 header.classList.add("highlight"); sections.forEach((section) => { section.style.backgroundColor = "lightgray"; });
复制
在 CSS 中,可以使用选择器来选择和样式化语义化标签。可以使用标签选择器、类选择器、ID 选择器等来选择语义化标签,并应用所需的样式。
/* 选择特定的语义化标签 */ header { background-color: blue; } section { padding: 10px; } /* 选择具有特定类名的语义化标签 */ section.highlight { background-color: yellow; } /* 选择具有特定ID的语义化标签 */ #footer { color: red; }
复制
Web 存储
HTML5 引入了 Web 存储 API,包括本地存储(localStorage)和会话存储(sessionStorage)。这些 API 允许在客户端存储数据,以便离线使用或持久保存用户的数据。
// 存储数据到本地存储 localStorage.setItem("username", "John"); localStorage.setItem("age", "25"); // 获取本地存储中的数据 const username = localStorage.getItem("username"); const age = localStorage.getItem("age"); console.log(username); // 输出 "John" console.log(age); // 输出 "25" // 删除本地存储中的数据 localStorage.removeItem("age"); // 清空本地存储 localStorage.clear(); // 存储数据到会话存储 sessionStorage.setItem("theme", "dark"); sessionStorage.setItem("language", "en"); // 获取会话存储中的数据 const theme = sessionStorage.getItem("theme"); const language = sessionStorage.getItem("language"); console.log(theme); // 输出 "dark" console.log(language); // 输出 "en" // 删除会话存储中的数据 sessionStorage.removeItem("language"); // 清空会话存储 sessionStorage.clear();
复制
Web 存储和身份验证
基于 JWT(JSON Web Token)的登录认证是一种常见的身份验证机制。JWT 是一种开放标准(RFC 7519),用于在网络应用间安全传递声明。它由三部分组成:头部(header)、载荷(payload)和签名(signature)。
// 存储JWT到本地存储 function saveJWT(jwt) { localStorage.setItem("jwt", jwt); } // 验证JWT function verifyJWT() { const jwt = localStorage.getItem("jwt"); if (jwt) { // 执行JWT验证的操作 return true; } else { return false; } } // 登录操作 function login() { const username = document.getElementById("username").value; const password = document.getElementById("password").value; // 发送用户名和密码到服务器进行验证 // 如果验证成功,则获取并保存JWT到本地存储 const jwt = "example_jwt"; saveJWT(jwt); alert("登录成功!"); // 执行登录成功后的操作 } // 注销操作 function logout() { localStorage.removeItem("jwt"); alert("已注销!"); }
复制
在上述代码中,saveJWT()
函数用于将 JWT 保存到本地存储中,verifyJWT()
函数用于验证 JWT 的有效性。
在实际应用中,服务器端通常会生成 JWT 并将其返回给客户端,在每次请求中,客户端将 JWT 作为头部或请求参数发送给服务器进行验证。服务器会解码 JWT 并验证其有效性,从而授权或拒绝请求。这种基于 JWT 的登录认证机制具有简单、可扩展和无状态的特点,可以在分布式系统中广泛使用。
多媒体支持
HTML5 提供了内置的多媒体支持,其中包括<audio>
和<video>
标签,使得在网页中嵌入音频和视频变得更加简单。这些标签提供了丰富的属性和方法,以控制和定制嵌入的音频和视频。
<audio src="music.mp3" controls> Your browser does not support the audio element. </audio> <video src="video.mp4" controls> Your browser does not support the video element. </video>
复制
在上述示例中,<audio>
和<video>
标签用于嵌入音频和视频文件。通过src
属性指定媒体文件的路径,controls
属性添加了默认的播放控制器。如果浏览器不支持这些标签或指定的媒体格式,则显示后备内容。
表单增强
HTML5 引入了一些表单增强功能,使得表单的开发和验证更加方便和灵活。下面是一些 HTML5 表单增强的功能和示例:
- 新的输入类型:HTML5 引入了许多新的输入类型,用于指定不同类型的用户输入。例如,
<input type="email">
用于接收电子邮件地址,<input type="date">
用于选择日期,<input type="range">
用于选择范围等。
<label for="email">Email:</label> <input type="email" id="email" name="email" /> <label for="dob">Date of Birth:</label> <input type="date" id="dob" name="dob" /> <label for="age">Age:</label> <input type="number" id="age" name="age" min="18" max="99" /> <label for="rating">Rating:</label> <input type="range" id="rating" name="rating" min="1" max="5" />
复制
- 表单验证:HTML5 提供了内置的表单验证功能,可以通过使用新的属性和属性值来验证用户输入的数据。例如,
required
属性可以用于确保输入字段不为空,pattern
属性可以用于指定输入字段的正则表达式模式。
<label for="username">Username:</label> <input type="text" id="username" name="username" required /> <label for="password">Password:</label> <input type="password" id="password" name="password" minlength="8" required /> <label for="phone">Phone Number:</label> <input type="tel" id="phone" name="phone" pattern="[0-9]{10}" required />
复制
Canvas
HTML5 的<canvas>
元素允许使用 JavaScript 绘制图形、动画和游戏。通过 Canvas API,开发人员可以在网页上创建交互式的绘图效果。
<canvas id="myCanvas"></canvas>
复制
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.fillStyle = "red"; ctx.fillRect(10, 10, 50, 50);
复制
地理位置 API
HTML5 提供了地理位置 API,使得网页可以获取用户的地理位置信息。通过 Geolocation API,开发人员可以根据用户的位置提供个性化的服务或功能。
if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( (position) => { const latitude = position.coords.latitude; const longitude = position.coords.longitude; console.log(`Latitude: ${latitude}, Longitude: ${longitude}`); }, (error) => { console.error(error.message); } ); }
复制
WebSockets
HTML5 引入了 WebSockets,提供了一种在客户端和服务器之间进行实时双向通信的方式。通过 WebSocket API,开发人员可以创建持久的连接,并实时传输数据。
const socket = new WebSocket("wss://example.com/socket"); socket.onopen = () => { console.log("WebSocket connection established."); }; socket.onmessage = (event) => { console.log("Received message:", event.data); }; socket.onclose = (event) => { console.log("WebSocket connection closed:", event.code); }; socket.send;
复制