2024-08-13

在HTML5中,有序列表和无序列表可以通过<ol><ul>标签来创建,自定义列表则通过<dl>标签创建,列表项通过<li>标签添加。

有序列表(Ordered List):




<ol>
  <li>苹果</li>
  <li>香蕉</li>
  <li>樱桃</li>
</ol>

无序列表(Unordered List):




<ul>
  <li>苹果</li>
  <li>香蕉</li>
  <li>樱桃</li>
</ul>

自定义列表(Definition List):




<dl>
  <dt>HTML5</dt>
  <dd>HTML的第五个版本</dd>
  <dt>CSS3</dt>
  <dd>CSS的第三个版本</dd>
</dl>

在这些代码示例中,我们创建了一个有序列表、一个无序列表和一个自定义列表,并且在每个列表中添加了一些列表项。这些列表项都是可以嵌套的,可以在<li>标签内添加任何合法的HTML元素。

2024-08-13

HTML5真正的创新在于其提供了一种标准的方式来描述网页内容,同时也引入了一些新的API和元素,这些使得开发者能够更加容易地创建富媒体网页应用程序。以下是一些HTML5的新特性和API的例子:

  1. 语义化标签:HTML5引入了一些语义化的标签,如<header>, <nav>, <section>, <article>, <aside>, 和 <footer>,这些标签可以让开发者以一种更结构化的方式来描述网页的不同部分。



<!DOCTYPE html>
<html>
<head>
    <title>我的网页</title>
</head>
<body>
    <header>
        <h1>我的网站</h1>
    </header>
    <nav>
        <ul>
            <li><a href="#">主页</a></li>
            <li><a href="#">关于</a></li>
        </ul>
    </nav>
    <section>
        <article>
            <header>
                <h2>文章标题</h2>
            </header>
            <p>这是一个段落。</p>
        </article>
    </section>
    <aside>
        <p>这是侧边栏内容。</p>
    </aside>
    <footer>
        <p>版权所有 © 2023</p>
    </footer>
</body>
</html>
  1. 画布(Canvas) API:HTML5的Canvas API允许开发者通过JavaScript来创建图形、动画和游戏。



<canvas id="myCanvas" width="200" height="100"></canvas>
<script>
    var canvas = document.getElementById('myCanvas');
    var ctx = canvas.getContext('2d');
    ctx.fillStyle = '#FF0000';
    ctx.fillRect(0, 0, 150, 75);
</script>
  1. 本地存储:HTML5引入了localStoragesessionStorage接口,允许网页应用程序在客户端存储键值对数据。



// 存储数据
localStorage.setItem('key', 'value');
// 获取数据
var data = localStorage.getItem('key');
// 删除数据
localStorage.removeItem('key');
// 清除所有数据
localStorage.clear();
  1. 索引数据库(IndexedDB):IndexedDB是一个非关系型数据库,用于存储大量数据,提供了一种机制来存储大量数据,并在客户端进行高效的查询和其他操作。



var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
// 打开或创建数据库
var request = indexedDB.open("MyDatabase", 1);
// 创建存储空间
request.onupgradeneeded = function(e) {
    var db = e.target.result;
    var objectStore = db.createObjectStore("MyObjectStore", { keyPath: "id" });
}
// 使用事务和对象存储空间
request.onsuccess = function(e) {
    var db = e.target.result;
    var tx = db.transaction("MyObjectStore", "readwrite");
    var store = tx.objectStore("MyObjectStore");
    // 添加数据
    store.add({ id: 1, name: "John" });
    // 读取数据
    var req = store.get(1);
    req.onsuccess = function(e) {
        console.dir(e.target.result);
    };
}
  1. 文件API:HTML5引入了File API,允许
2024-08-13



<!DOCTYPE html>
<html>
<head>
    <title>Server-Sent Events Example</title>
    <script type="text/javascript">
        if(typeof(EventSource) !== "undefined") {
            var source = new EventSource("sse_push.php");
            source.onmessage = function(event) {
                document.getElementById("result").innerHTML += event.data + "<br>";
            };
            source.onerror = function(event) {
                console.error("EventSource failed.");
            };
        } else {
            document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
        }
    </script>
</head>
<body>
    <div id="result"></div>
</body>
</html>

在这个例子中,我们首先检查浏览器是否支持EventSource。如果支持,我们创建一个新的EventSource实例,指向名为"sse\_push.php"的服务端脚本。每当服务端向客户端发送消息时,我们就在页面上显示这些消息。如果浏览器不支持EventSource,我们会在页面上显示一个错误消息。这个简单的例子展示了如何使用SSE技术实现服务器向客户端推送数据。

2024-08-13

HTML5 引入了一些语义化的标签,这些标签提供了一种更结构化、更清晰的方式来编写网页。以下是一些常用的 HTML5 语义化标签及其用法:

  1. <header> - 定义页面或区段的头部;
  2. <nav> - 定义导航链接;
  3. <main> - 定义页面的主要内容;
  4. <article> - 定义独立的、自包含的内容;
  5. <section> - 定义文档中的一个区段;
  6. <aside> - 定义与页面主内容少关的内容;
  7. <footer> - 定义页面或区段的底部。

示例代码:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <header>
        <nav>
            <ul>
                <li><a href="#">主页</a></li>
                <li><a href="#">产品</a></li>
                <li><a href="#">关于</a></li>
            </ul>
        </nav>
        <h1>网站标题</h1>
    </header>
    
    <main>
        <article>
            <header>
                <h2>文章标题</h2>
                <p>发布时间、作者等信息</p>
            </header>
            <section>
                <h3>章节标题</h3>
                <p>文章内容...</p>
            </section>
        </article>
    </main>
    
    <aside>
        <section>
            <h3>侧边栏标题</h3>
            <p>侧边栏内容...</p>
        </section>
    </aside>
    
    <footer>
        <p>版权信息</p>
    </footer>
</body>
</html>

在这个示例中,每个标签都被用于其语义化的目的,使得代码更易于阅读和维护。

2024-08-13



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>File Upload</title>
    <script>
        function uploadFile() {
            const input = document.getElementById('fileInput');
            const file = input.files[0];
            const formData = new FormData();
 
            formData.append('file', file);
 
            fetch('/upload', {
                method: 'POST',
                body: formData
            })
            .then(response => response.json())
            .then(data => alert('File uploaded!'))
            .catch(error => alert('Error: ' + error));
        }
    </script>
</head>
<body>
    <input type="file" id="fileInput">
    <button onclick="uploadFile()">Upload</button>
</body>
</html>

这段代码展示了如何使用原生JavaScript和HTML5的fetch API来上传文件。用户通过<input type="file">选择文件,点击按钮后触发uploadFile函数,该函数将文件打包成FormData并通过fetch发送到服务器的/upload路径。服务器需要有相应的处理上传文件的逻辑。

2024-08-13

HTML5 本身不直接支持 WMV 视频格式,但通过使用 HTML5 提供的 <video> 标签以及适当的 JavaScript 库,可以实现 WMV 视频的播放。

要在 HTML5 中播放 WMV 视频,可以使用 video.js 库,这是一个用于在网页上播放视频的开源库,它支持多种视频格式,包括 WMV。

以下是使用 video.js 播放 WMV 视频的基本步骤和示例代码:

  1. 在 HTML 文件中引入 video.js 和它的默认样式文件:



<link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
<script src="https://unpkg.com/video.js/dist/video.min.js"></script>
  1. 在 HTML 文件中添加 <video> 标签并设置 id 属性:



<video id="my-video" class="video-js" controls preload="auto" width="640" height="264">
  <source src="path/to/your/video.wmv" type="video/x-ms-wmv">
  <p class="vjs-no-js">
    To view this video please enable JavaScript, and consider upgrading to a web browser that
    <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
  </p>
</video>
  1. 在 JavaScript 部分初始化 video.js 播放器:



videojs.options.flash.swf = "path/to/video-js.swf"; // 如果需要,可以指定 video-js.swf 文件的路径
 
var player = videojs('my-video');
 
// 可以添加事件监听器或其他配置
player.on('error', function() {
  console.log('Error loading WMV video');
});

请注意,由于 WMV 不是原生支持的格式,可能需要 Flash 作为后备选项。如果你希望完全不使用 Flash,可以考虑转换你的视频文件到 HTML5 支持的格式,如 MP4 或 WebM。

2024-08-13

Web Worker API 是 HTML5 提供的一个多线程解决方案,可以将大量计算工作移到后台线程上,避免阻塞主线程,使得主线程能够更加平滑地执行用户界面的更新等操作。

以下是一个简单的示例,演示如何使用 Web Worker 来执行一个简单的计算任务:

主线程代码 (index.html):




<!DOCTYPE html>
<html>
<head>
    <title>Web Worker Example</title>
    <script>
        function startWorker() {
            if(typeof(Worker) !== "undefined") {
                // 创建一个新的 Web Worker
                var worker = new Worker("worker.js");
                
                // 监听从 worker 接收到的消息
                worker.onmessage = function(event) {
                    console.log("Received message from worker: ", event.data);
                };
                
                // 发送消息给 worker 进行计算
                worker.postMessage(10);
            } else {
                console.log("Sorry, your browser does not support Web Workers.");
            }
        }
    </script>
</head>
<body>
    <button onclick="startWorker()">Start Worker</button>
</body>
</html>

Web Worker 代码 (worker.js):




// 在 worker 线程中执行的代码
onmessage = function(event) {
    // 接收主线程发送的消息
    var number = event.data;
    
    // 执行一个简单的计算任务
    var factorial = calculateFactorial(number);
    
    // 发送计算结果回主线程
    postMessage(factorial);
};
 
function calculateFactorial(number) {
    var result = 1;
    for (var i = 2; i <= number; i++) {
        result *= i;
    }
    return result;
}

在这个例子中,当用户点击按钮时,会创建一个新的 Web Worker 线程,并在该线程中执行一个计算阶乘的函数。计算完成后,worker 会通过 postMessage 方法将结果返回给主线程,主线程通过 onmessage 事件监听器接收消息并在控制台输出结果。

2024-08-13

HBuilder 是一个开发工具,用它来编写登录页面通常是指使用它的前端代码编辑功能。以下是一个简单的登录页面示例代码:




<!DOCTYPE html>
<html>
<head>
    <title>Login Page</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background: #f7f7f7;
        }
        .login-container {
            width: 300px;
            margin: 100px auto;
            padding: 20px;
            background: #fff;
            border: 1px solid #ddd;
            border-radius: 5px;
            box-shadow: 2px 2px 10px rgba(0,0,0,0.1);
        }
        input[type="text"], input[type="password"] {
            width: 100%;
            padding: 10px;
            margin: 10px 0;
            border: 1px solid #ddd;
            border-radius: 5px;
        }
        input[type="submit"] {
            width: 100%;
            padding: 10px;
            background: #333;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
        input[type="submit"]:hover {
            background: #555;
        }
    </style>
</head>
<body>
 
<div class="login-container">
    <form action="login_submit.php" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <div>
            <input type="submit" value="Login">
        </div>
    </form>
</div>
 
</body>
</html>

这个登录页面包含了一个表单,用户可以在输入用户名和密码后提交。表单的 action 属性设置为 login_submit.php,这是处理登录信息的服务器端脚本。在实际应用中,你需要根据自己的后端接口来修改这个 URL。

请注意,这个页面只是静态的 HTML 代码,并没有包含任何后端逻辑。实际的登录验证需要通过服务器端脚本来完成。如果你需要一个服务器端示例,你可以使用 PHP 编写一个简单的登录处理脚本,如下:




<?php
// login_submit.php
 
$username = $_POST['username'];
$password = $_POST['password'];
 
// 在这里添加你的登录验证逻辑,例如与数据库比对
 
if ($username == "admin" && $password == "password123") {
    echo "登录成功";
} else {
    echo "登录失败";
}
?>

这个 PHP 脚本获取通过表单提交的用户名和密码,并简单地检查它们是否与硬编码的值匹配。在实际应用中,你需要从数据库中检索用户凭据,并使用安全的方法来处理密码(例如,使用 PHP 的 password_hashpassword_verify 函数)。

2024-08-13

HTML5是HTML的最新标准,它在HTML4和XHTML基础上进行了改进,引入了新的元素和功能,以便更好地支持网页内容的创建。以下是一些常用的HTML5元素:

  1. !DOCTYPE: 声明文档类型。



<!DOCTYPE html>
  1. <html>: 定义整个网页。



<html>
...
</html>
  1. <head>: 包含文档的元数据。



<head>
  <title>页面标题</title>
</head>
  1. <body>: 包含可见的页面内容。



<body>
  <p>这是一个段落。</p>
</body>
  1. <header>: 定义页面或区段的头部。



<header>
  <h1>网站标题</h1>
</header>
  1. <nav>: 定义导航链接。



<nav>
  <ul>
    <li><a href="index.html">主页</a></li>
    <li><a href="contact.html">联系我们</a></li>
  </ul>
</nav>
  1. <section>: 定义文档中的一个区段。



<section>
  <h2>区段标题</h2>
  <p>区段内容。</p>
</section>
  1. <article>: 定义独立的、完整的内容。



<article>
  <h2>文章标题</h2>
  <p>这是一篇文章。</p>
</article>
  1. <aside>: 定义侧边内容,如广告、侧栏。



<aside>
  <p>侧边内容。</p>
</aside>
  1. <footer>: 定义区段或整个文档的底部。



<footer>
  <p>版权信息</p>
</footer>
  1. <canvas>: 绘图元素,用于绘制图形。



<canvas id="myCanvas" width="200" height="100">
  您的浏览器不支持Canvas。
</canvas>
  1. <audio>: 音频内容。



<audio controls>
  <source src="music.mp3" type="audio/mpeg">
  您的浏览器不支持audio元素。
</audio>
  1. <video>: 视频内容。



<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  您的浏览器不支持video元素。
</video>
  1. <datalist>: 定义选项列表,与输入字段配合使用。



<input list="browsers" type="text" name="myBrowser">
<datalist id="browsers">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>
  1. <details>: 用于描述文档或文档某个部分的细节。



<details>
  <summary>点击查看详情</summary>
  <p>这是细节内容。</p>
</details>
  1. <progress>: 定义任何类型的任务的进度。



<progress value="22" max="100">
  已完成22%
</progress>
  1. <time>: 定义日期或时间。



<p>我们下周
2024-08-13



<!DOCTYPE html>
<html>
<head>
  <title>自定义元素示例</title>
  <script>
    class MyElement extends HTMLElement {
      constructor() {
        super(); // 必须在构造函数中调用super()
        // 创建shadow DOM
        const shadow = this.attachShadow({mode: 'open'});
        // 创建元素内容
        const p = document.createElement('p');
        p.textContent = '这是一个自定义元素!';
        // 将创建的内容插入shadow DOM
        shadow.appendChild(p);
      }
    }
 
    // 定义'my-element'自定义元素
    customElements.define('my-element', MyElement);
  </script>
</head>
<body>
  <!-- 使用自定义元素 -->
  <my-element></my-element>
</body>
</html>

这段代码定义了一个名为my-element的自定义元素,它在shadow DOM中包含一个<p>元素。当页面加载时,customElements.define函数会注册这个新的自定义元素,之后就可以在HTML文档中像使用普通HTML元素一样使用<my-element></my-element>