项目一:制作响应式网页布局

在HTML5中,响应式设计是非常重要的一个概念。通过使用媒体查询(Media Queries)和弹性布局(Flexbox),我们可以创建一个能够适应不同屏幕尺寸的网页布局。以下是一个简单的示例:

<!DOCTYPE html>
<html>
<head>
  <title>响应式网页布局</title>
  <style>
    .container {
      display: flex;
      flex-direction: column;
    }
    @media (min-width: 600px) {
      .container {
        flex-direction: row;
      }
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="column">左侧内容</div>
    <div class="column">右侧内容</div>
  </div>
</body>
</html>

项目二:创建HTML5 Canvas动画

HTML5 Canvas是进行图形绘制和动画制作的一个强大工具。以下是一个简单的例子,演示如何使用Canvas绘制一个移动的圆形:

<!DOCTYPE html>
<html>
<head>
  <title>Canvas动画</title>
  <style>
    canvas {
      border: 1px solid black;
    }
  </style>
</head>
<body>
  <canvas id="myCanvas" width="500" height="500"></canvas>
  <script>
    var canvas = document.getElementById('myCanvas');
    var ctx = canvas.getContext('2d');
    var x = canvas.width / 2;
    var y = canvas.height - 30;
    var dx = 2;
    var dy = -2;

    function draw() {
      ctx.clearRect(0, 0, canvas.width, canvas.height);
      ctx.beginPath();
      ctx.arc(x, y, 10, 0, Math.PI*2);
      ctx.fillStyle = "#0095DD";
      ctx.fill();
      ctx.closePath();
      x += dx;
      y += dy;

      if (x + dx > canvas.width || x + dx < 0) {
        dx = -dx;
      }

      if (y + dy > canvas.height - 30 || y + dy < 0) {
        dy = -dy;
      }

      requestAnimationFrame(draw);
    }

    draw();
  </script>
</body>
</html>

项目三:实现HTML5视频播放器

HTML5提供了<video>标签,可以轻松实现视频的播放、暂停和音量控制等功能。以下是一个简单的HTML5视频播放器示例:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5视频播放器</title>
</head>
<body>
  <video id="myVideo" width="320" height="240" controls>
    <source src="movie.mp4" type="video/mp4">
    您的浏览器不支持 video 标签。
  </video>
  <button onclick="playVideo()">播放</button>
  <button onclick="pauseVideo()">暂停</button>
  <script>
    var video = document.getElementById('myVideo');
    function playVideo() {
      video.play();
    }
    function pauseVideo() {
      video.pause();
    }
  </script>
</body>
</html>

项目四:制作HTML5音频播放器

与视频播放器类似,HTML5也提供了<audio>标签来播放音频文件。以下是一个简单的HTML5音频播放器示例:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5音频播放器</title>
</head>
<body>
  <audio id="myAudio" controls>
    <source src="music.mp3" type="audio/mpeg">
    您的浏览器不支持 audio 元素。
  </audio>
  <button onclick="playAudio()">播放</button>
  <button onclick="pauseAudio()">暂停</button>
  <script>
    var audio = document.getElementById('myAudio');
    function playAudio() {
      audio.play();
    }
    function pauseAudio() {
      audio.pause();
    }
  </script>
</body>
</html>

项目五:使用HTML5拖放功能

HTML5引入了拖放功能,使得网页元素之间的拖放操作变得简单。以下是一个简单的示例,演示如何使用拖放功能实现图片上传:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5拖放功能</title>
</head>
<body>
  <input type="file" id="fileInput">
  <script>
    var fileInput = document.getElementById('fileInput');
    fileInput.addEventListener('dragover', function(event) {
      event.preventDefault();
    });

    fileInput.addEventListener('drop', function(event) {
      event.preventDefault();
      var file = event.dataTransfer.files[0];
      var reader = new FileReader();
      reader.onload = function(e) {
        var img = document.createElement('img');
        img.src = e.target.result;
        document.body.appendChild(img);
      };
      reader.readAsDataURL(file);
    });
  </script>
</body>
</html>

项目六:使用HTML5地理定位功能

HTML5提供了地理定位功能,可以帮助开发者获取用户的位置信息。以下是一个简单的示例,演示如何使用地理定位功能获取用户的位置:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5地理定位</title>
</head>
<body>
  <button onclick="getLocation()">获取位置</button>
  <p id="location"></p>
  <script>
    function getLocation() {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
      } else {
        alert("Geolocation is not supported by this browser.");
      }
    }

    function showPosition(position) {
      var x = document.getElementById("location");
      x.innerHTML = "Latitude: " + position.coords.latitude + 
      "<br>Longitude: " + position.coords.longitude;
    }
  </script>
</body>
</html>

项目七:使用HTML5本地存储

HTML5提供了多种本地存储方案,如cookies、localStorage和sessionStorage等。以下是一个简单的示例,演示如何使用localStorage存储和读取数据:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5本地存储</title>
</head>
<body>
  <button onclick="saveData()">保存数据</button>
  <button onclick="loadData()">加载数据</button>
  <p id="data"></p>
  <script>
    function saveData() {
      localStorage.setItem('name', 'John');
      localStorage.setItem('age', '30');
    }

    function loadData() {
      var name = localStorage.getItem('name');
      var age = localStorage.getItem('age');
      var x = document.getElementById("data");
      x.innerHTML = "Name: " + name + "<br>Age: " + age;
    }
  </script>
</body>
</html>

项目八:实现HTML5 Web Workers

Web Workers允许我们在后台线程中执行代码,从而不会阻塞UI的渲染。以下是一个简单的示例,演示如何使用Web Workers计算一个数字的阶乘:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5 Web Workers</title>
</head>
<body>
  <button onclick="startWorker()">启动计算</button>
  <p id="result"></p>
  <script>
    var worker = new Worker('worker.js');

    worker.onmessage = function(event) {
      var x = document.getElementById("result");
      x.innerHTML = "结果:" + event.data;
    };

    function startWorker() {
      worker.postMessage(5);
    }
  </script>
</body>
</html>

项目九:使用HTML5 WebSocket通信

WebSocket是一种在单个TCP连接上进行全双工通信的协议。以下是一个简单的示例,演示如何使用WebSocket实现一个简单的聊天应用:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5 WebSocket聊天</title>
</head>
<body>
  <input type="text" id="message" placeholder="输入消息">
  <button onclick="sendMessage()">发送</button>
  <div id="chat"></div>
  <script>
    var ws = new WebSocket('ws://localhost:8080');

    ws.onmessage = function(event) {
      var chat = document.getElementById("chat");
      chat.innerHTML += event.data + "<br>";
    };

    function sendMessage() {
      var message = document.getElementById("message").value;
      ws.send(message);
    }
  </script>
</body>
</html>

项目十:实现HTML5文件上传

HTML5提供了新的文件API,可以方便地实现文件的上传功能。以下是一个简单的示例,演示如何使用HTML5实现文件上传:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5文件上传</title>
</head>
<body>
  <input type="file" id="fileInput">
  <button onclick="uploadFile()">上传文件</button>
  <script>
    function uploadFile() {
      var fileInput = document.getElementById('fileInput');
      var file = fileInput.files[0];
      var formData = new FormData();
      formData.append('file', file);

      var xhr = new XMLHttpRequest();
      xhr.open('POST', 'upload.php', true);
      xhr.onload = function() {
        if (xhr.status == 200) {
          alert('文件上传成功!');
        } else {
          alert('文件上传失败!');
        }
      };

      xhr.send(formData);
    }
  </script>
</body>
</html>

项目十一:使用HTML5 Web fonts加载自定义字体

HTML5提供了Web fonts功能,允许开发者加载和使用自定义字体。以下是一个简单的示例,演示如何使用Web fonts加载自定义字体:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5 Web fonts</title>
  <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
</head>
<body>
  <h1 style="font-family: 'Open Sans', sans-serif;">Hello, World!</h1>
</body>
</html>

项目十二:实现HTML5 Canvas文字效果

HTML5 Canvas提供了丰富的文字处理功能,可以用于实现各种文字效果。以下是一个简单的示例,演示如何使用Canvas绘制文字:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5 Canvas文字效果</title>
  <style>
    canvas {
      border: 1px solid black;
    }
  </style>
</head>
<body>
  <canvas id="myCanvas" width="500" height="500"></canvas>
  <script>
    var canvas = document.getElementById('myCanvas');
    var ctx = canvas.getContext('2d');
    ctx.font = "30px Arial";
    ctx.fillText("Hello, World!", 10, 50);
  </script>
</body>
</html>

项目十三:使用HTML5 Canvas图形绘制

除了文字效果,HTML5 Canvas还可以用于图形绘制。以下是一个简单的示例,演示如何使用Canvas绘制一个圆形:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5 Canvas图形绘制</title>
  <style>
    canvas {
      border: 1px solid black;
    }
  </style>
</head>
<body>
  <canvas id="myCanvas" width="500" height="500"></canvas>
  <script>
    var canvas = document.getElementById('myCanvas');
    var ctx = canvas.getContext('2d');
    ctx.beginPath();
    ctx.arc(250, 250, 100, 0, Math.PI*2);
    ctx.fillStyle = "#0095DD";
    ctx.fill();
    ctx.closePath();
  </script>
</body>
</html>

项目十四:实现HTML5视频剪辑

HTML5提供了<video>标签的<source>子标签,可以用于加载多个视频源。以下是一个简单的示例,演示如何实现视频剪辑:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5视频剪辑</title>
</head>
<body>
  <video width="320" height="240" controls>
    <source src="video1.mp4" type="video/mp4">
    <source src="video2.mp4" type="video/mp4">
    您的浏览器不支持 video 标签。
  </video>
</body>
</html>

项目十五:使用HTML5拖放API实现图片排序

HTML5拖放API允许开发者实现各种拖放效果。以下是一个简单的示例,演示如何使用拖放API实现图片排序:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5拖放图片排序</title>
</head>
<body>
  <ul id="imageList">
    <li>图片1</li>
    <li>图片2</li>
    <li>图片3</li>
  </ul>
  <script>
    var list = document.getElementById("imageList");
    list.addEventListener('dragstart', dragStart);
    list.addEventListener('dragover', dragOver);
    list.addEventListener('drop', drop);
    list.addEventListener('dragenter', dragEnter);
    list.addEventListener('dragleave', dragLeave);
    list.addEventListener('dragend', dragEnd);

    function dragStart() {
      this.style.opacity = "0.5";
    }

    function dragEnter() {
      this.style.backgroundColor = "#ccc";
    }

    function dragLeave() {
      this.style.backgroundColor = "";
    }

    function dragOver(e) {
      e.preventDefault();
    }

    function drop() {
      this.style.backgroundColor = "";
      var item = document.querySelector('.dragging');
      if (item) {
        this.insertBefore(item, this.firstChild);
      }
    }

    function dragEnd() {
      this.style.opacity = "";
    }
  </script>
</body>
</html>

项目十六:使用HTML5本地数据库(IndexedDB)

HTML5提供了IndexedDB本地数据库,可以用于存储大量结构化数据。以下是一个简单的示例,演示如何使用IndexedDB存储和读取数据:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5 IndexedDB</title>
</head>
<body>
  <button onclick="saveData()">保存数据</button>
  <button onclick="loadData()">加载数据</button>
  <script>
    var db;
    var request = indexedDB.open("myDatabase", 1);

    request.onerror = function() {
      alert("IndexedDB错误:" + request.error);
    };

    request.onsuccess = function() {
      db = request.result;
      saveData();
    };

    request.onupgradeneeded = function() {
      db.createObjectStore("myObjectStore", {keyPath: "id"});
    };

    function saveData() {
      var transaction = db.transaction(["myObjectStore"], "readwrite");
      var objectStore = transaction.objectStore("myObjectStore");
      objectStore.add({id: 1, name: "John", age: 30});
    }

    function loadData() {
      var transaction = db.transaction(["myObjectStore"], "readonly");
      var objectStore = transaction.objectStore("myObjectStore");
      objectStore.openCursor().onsuccess = function(event) {
        var cursor = event.target.result;
        if (cursor) {
          alert("ID: " + cursor.value.id + ", Name: " + cursor.value.name + ", Age: " + cursor.value.age);
          cursor.continue();
        }
      };
    }
  </script>
</body>
</html>

项目十七:使用HTML5 WebSocket实现实时聊天

WebSocket是一种在单个TCP连接上进行全双工通信的协议,可以用于实现实时聊天。以下是一个简单的示例,演示如何使用WebSocket实现实时聊天:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5 WebSocket实时聊天</title>
</head>
<body>
  <input type="text" id="message" placeholder="输入消息">
  <button onclick="sendMessage()">发送</button>
  <div id="chat"></div>
  <script>
    var ws = new WebSocket('ws://localhost:8080');

    ws.onmessage = function(event) {
      var chat = document.getElementById("chat");
      chat.innerHTML += event.data + "<br>";
    };

    function sendMessage() {
      var message = document.getElementById("message").value;
      ws.send(message);
    }
  </script>
</body>
</html>

项目十八:实现HTML5视频编辑功能

HTML5提供了<video>标签的<source>子标签,可以用于加载多个视频源。以下是一个简单的示例,演示如何实现视频编辑功能:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5视频编辑</title>
</head>
<body>
  <video width="320" height="240" controls>
    <source src="video.mp4" type="video/mp4">
    您的浏览器不支持 video 标签。
  </video>
  <button onclick="cutVideo()">剪辑视频</button>
  <script>
    var video = document.querySelector('video');
    function cutVideo() {
      var currentTime = video.currentTime;
      video.currentTime = currentTime - 5;
    }
  </script>
</body>
</html>

项目十九:使用HTML5拖放API实现文件上传

HTML5拖放API允许开发者实现各种拖放效果。以下是一个简单的示例,演示如何使用拖放API实现文件上传:

<!DOCTYPE html>
<html>
<head>
  <title>HTML5拖放文件上传</title>
</head>
<body>
  <input type="file" id="fileInput">
  <button onclick="uploadFile()">上传文件</button>
  <script>
    var fileInput = document.getElementById('fileInput');
    fileInput.addEventListener('dragover', function(event) {
      event.preventDefault();
    });

    fileInput.addEventListener('drop', function(event) {
      event.preventDefault();
      var file = event.dataTransfer.files[0];
      var formData = new FormData();
      formData.append('file', file);

      var xhr = new XMLHttpRequest();
      xhr.open('POST', 'upload.php', true);
      xhr.onload = function() {
        if (xhr.status == 200) {
          alert('文件上传成功!');
        } else {
          alert('文件上传失败!');
        }
      };

      xhr.send(formData);
    });
  </script>
</body>
</html>

项目二十:实现HTML5离线缓存(Application Cache)

HTML5提供了离线缓存功能,允许开发者将网页资源缓存到本地,以便在没有网络连接的情况下访问。以下是一个简单的示例,演示如何使用Application Cache缓存网页资源:

<!DOCTYPE html>
<html manifest="manifest.appcache">
<head>
  <title>HTML5离线缓存</title>
</head>
<body>
  <h1>Hello, World!</h1>
</body>
</html>
manifest.appcache:
CACHE MANIFEST
CACHE:
index.html
styles.css
images/logo.png