2024-08-08

HTML5 引入了许多新的语义化标签,以下是一些基本的HTML5标签及其用法示例:

  1. <header> - 页面或区域的头部



<header>
    <h1>网站标题</h1>
    <p>网站副标题</p>
</header>
  1. <nav> - 导航链接



<nav>
    <ul>
        <li><a href="#">主页</a></li>
        <li><a href="#">关于</a></li>
        <li><a href="#">服务</a></li>
    </ul>
</nav>
  1. <section> - 定义文档中的一个区段



<section>
    <h2>区段标题</h2>
    <p>区段内容。</p>
</section>
  1. <article> - 独立的内容



<article>
    <h2>文章标题</h2>
    <p>这是一篇文章的内容。</p>
    <footer>
        <p>文章底部信息</p>
    </footer>
</article>
  1. <aside> - 非正文的侧边内容



<aside>
    <p>侧边内容,如广告等。</p>
</aside>
  1. <footer> - 底部信息



<footer>
    <p>版权信息</p>
</footer>

这些标签有助于提高代码的可读性和可维护性,同时有助于搜索引擎的索引排名。

2024-08-08

要创建一个HTML5的七夕情人节表白页面,我们可以使用一个简单的3D立方体GIF动画作为背景,来提升页面的视觉效果。以下是一个简单的HTML和CSS示例,用于创建带有3D立方体背景的表白页面:




<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>七夕情人节表白页面</title>
<style>
  body, html {
    margin: 0;
    padding: 0;
    height: 100%;
  }
  .container {
    perspective: 1000px;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
  }
  .cube {
    width: 200px;
    height: 200px;
    transform-style: preserve-3d;
    animation: rotate 5s infinite linear;
  }
  .side {
    width: 200px;
    height: 200px;
    position: absolute;
    background-size: cover;
    box-shadow: 0 0 5px #fff;
  }
  @keyframes rotate {
    0% {
      transform: rotateX(0deg) rotateY(0deg);
    }
    100% {
      transform: rotateX(360deg) rotateY(360deg);
    }
  }
</style>
</head>
<body>
<div class="container">
  <div class="cube">
    <div class="side" style="background-image: url('img1.gif'); transform: translateZ(100px);"></div>
    <div class="side" style="background-image: url('img2.gif'); transform: rotateY(90deg) translateZ(100px);"></div>
    <div class="side" style="background-image: url('img3.gif'); transform: rotateY(-90deg) translateZ(100px);"></div>
    <div class="side" style="background-image: url('img4.gif'); transform: rotateX(90deg) translateZ(100px);"></div>
    <div class="side" style="background-image: url('img5.gif'); transform: rotateX(-90deg) translateZ(100px);"></div>
    <div class="side" style="background-image: url('img6.gif'); transform: rotateY(180deg) translateZ(100px);"></div>
  </div>
</div>
</body>
</html>

在这个示例中,我们创建了一个带有6个面的3D立方体,每个面使用了不同的GIF动图作为背景。通过CSS中的transform-style: preserve-3d;属性,我们可以让立方体内部的元素保持3D效果。动画通过CSS的@keyframes规则创建,使立方体不断旋转。

请替换img1.gifimg6.gif为你自己的图片链接。这个简单的例子可以作为你创建更复杂3D立方体效果的起点。

2024-08-08

在B/S(Browser/Server)架构中,客户端只需要一个浏览器,服务端负责处理所有的业务逻辑和数据存储。前端负责构建Web页面和交互,后端负责提供API接口和数据。

以下是一个简单的前端代码示例,展示了如何使用HTML5和JavaScript向服务端发送请求:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>B/S架构示例</title>
</head>
<body>
    <h1>B/S架构前端示例</h1>
    <button id="fetchData">获取数据</button>
    <div id="dataContainer">数据加载中...</div>
 
    <script>
        document.getElementById('fetchData').addEventListener('click', function() {
            fetch('https://api.example.com/data')
                .then(response => response.json())
                .then(data => {
                    document.getElementById('dataContainer').textContent = JSON.stringify(data, null, 2);
                })
                .catch(error => console.error('Error:', error));
        });
    </script>
</body>
</html>

在这个例子中,我们使用了fetch函数来向服务端的API发送请求,并在按钮点击事件中处理响应。服务端需要提供一个可访问的URL(如https://api.example.com/data),并确保响应的内容是可解析的(在这个例子中是JSON格式)。这样,前端只需要处理用户界面,所有的业务逻辑和数据处理都在服务器端进行。

2024-08-08

以下是一个简化的HTML和JavaScript代码示例,用于创建一个流星落到地面的动画效果。




<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>流星动画</title>
<style>
  canvas {
    background: #000;
    display: block;
  }
</style>
</head>
<body>
 
<canvas id="canvas"></canvas>
 
<script>
  const canvas = document.getElementById('canvas');
  const ctx = canvas.getContext('2d');
  const W = canvas.width = window.innerWidth;
  const H = canvas.height = window.innerHeight;
  const halfW = W * 0.5;
  const halfH = H * 0.5;
 
  class Star {
    constructor() {
      this.x = Math.random() * W;
      this.y = Math.random() * H;
      this.coords = this.calculateCoords(this.x, this.y);
      this.velocity = {
        x: (Math.random() - 0.5) * 5,
        y: (Math.random() - 0.5) * 5
      };
      this.angle = Math.atan2(this.velocity.y, this.velocity.x);
      this.speed = 2;
      this.size = Math.random() * 2;
      this.brightness = Math.random() * 255;
    }
 
    update() {
      this.x += this.velocity.x * this.speed;
      this.y += this.velocity.y * this.speed;
      if(this.x > W || this.x < 0) this.velocity.x *= -1;
      if(this.y > H || this.y < 0) this.velocity.y *= -1;
    }
 
    draw() {
      ctx.beginPath();
      ctx.fillStyle = `hsl(25, 100%, ${this.brightness}%)`;
      ctx.arc(...this.coords, this.size, 0, Math.PI * 2);
      ctx.fill();
    }
 
    calculateCoords(x, y) {
      const angle = Math.atan2(halfH - y, halfW - x);
      const r = Math.hypot(halfW - x, halfH - y);
      return [
        halfW + r * Math.cos(angle),
        halfH + r * Math.sin(angle)
      ];
    }
  }
 
  const starfield = [];
  const starCount = 1000;
  for (let i = 0; i < starCount; i++) {
    starfield.push(new Star());
  }
 
  function animate() {
    ctx.fillStyle = 'rgba(0, 0, 0, 0.2)';
    ctx.fillRect(0, 0, W, H);
    starfield.forEach((star, index) => {
      star.update();
      star.draw();
    });
    requestAnimationFrame(animate);
  }
 
  animate();
</script>
 
</body>
</html>

这段代码创建了一个流星类,其中包含流星的属性,如位置、速度、颜色和大小。calculateCoords函数将2D平面上的坐标转换为3D空间中的坐标。update方法更新流星的位置,如果它超出了屏幕边界,就反弹。draw方法在画布上绘制流星。主循环中创建了一个流星数组,并在animate函数中更新和绘制它们。

2024-08-08

以下是一个简单的HTML和CSS代码示例,用于创建一个表白页面,模仿烟花绽放的视觉效果:




<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>情人节烟花表白</title>
<style>
  body, html {
    height: 100%;
    margin: 0;
    font-family: Arial, sans-serif;
  }
 
  .fireworks {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translateX(-50%) translateY(-50%);
    width: 100px;
    height: 100px;
    background: #f00;
    border-radius: 50%;
    opacity: 0;
    animation: fireworks-animation 2s infinite;
  }
 
  @keyframes fireworks-animation {
    0% {
      opacity: 0;
      transform: translateX(-50%) translateY(-50%) scale(0.5);
    }
    100% {
      opacity: 1;
      transform: translateX(-50%) translateY(-50%) scale(1);
    }
  }
</style>
</head>
<body>
<div class="fireworks"></div>
<script>
  function createFirework() {
    const firework = document.createElement('div');
    firework.classList.add('fireworks');
    document.body.appendChild(firework);
    setTimeout(() => {
      firework.remove();
    }, 2000);
  }
 
  setInterval(createFirework, 1000);
</script>
</body>
</html>

这段代码通过CSS创建了一个简单的火焰图案,通过JavaScript定时创建火焰图案的效果,模拟烟花在空中飘落的视觉效果。这个示例可以作为表白页面的一个简单的视觉娱乐,但是要注意,应该尊重对方的感受,不要给不喜欢这种表白方式的人带来不愉快。

2024-08-08

在Markdown中,要合并单元格,可以使用|来分隔单元格内容,并在要合并的单元格前加上:来指示合并的方向。例如,要合并两行中的两个单元格,可以使用||

合并两个水平相邻的单元格(横向合并):




| 单元格1 | 单元格2 | 单元格3 || :------ | ------: | ------: |
| 单元格4 | 单元格5 | 单元格6 |

合并两个垂直相邻的单元格(纵向合并):




| 单元格1 | 单元格2 | 单元格3 |
| :------ | :------: | ------: |
| 单元格4 | 单元格5 | 单元格6 |

要在Markdown中换行,可以使用<br>标签。但是在表格中直接使用<br>不会生成预期的效果,因为Markdown解析器会将其视为普通文本。为了在表格中换行,可以通过在单元格内部使用多个空行来实现。

例如:




| 单元格1 | 单元格2 |
| ------- | ------- |
| 文本内容可以通过在其之间插入多个空行实现换行。 |

在单元格内部要换行,只需要在文本内容中添加多个空行即可。请注意,Markdown处理多个连续空行的方式可能因解析器而异,但通常第一个空行将触发换行效果。

2024-08-08

HTML5 引入了新的元素,这些元素不仅提供了更好的语义,还有助于改善搜索引擎优化(SEO)和屏幕阅读器的访问。

以下是一些常见的HTML5新元素:

  1. <header> - 表示页面或页面中一个区块的头部区域。
  2. <nav> - 表示页面中导航链接的部分。
  3. <section> - 表示文档中的一个区块,比如章节、头部或内容。
  4. <article> - 表示文档中独立的、完整的内容。
  5. <aside> - 表示与页面主内容少关的内容。
  6. <footer> - 表示页面或页面中一个区块的底部区域。

使用这些元素的例子:




<!DOCTYPE html>
<html>
<head>
    <title>示例页面</title>
</head>
<body>
    <header>
        <h1>我的网站</h1>
        <nav>
            <ul>
                <li><a href="/home">主页</a></li>
                <li><a href="/about">关于</a></li>
                <li><a href="/contact">联系</a></li>
            </ul>
        </nav>
    </header>
    <section>
        <article>
            <header>
                <h2>文章标题</h2>
            </header>
            <p>这里是文章的内容...</p>
            <footer>
                <p>这里是文章的脚注...</p>
            </footer>
        </article>
    </section>
    <aside>
        <p>这里是侧边栏内容...</p>
    </aside>
    <footer>
        <p>版权所有 © 2023 我的网站</p>
    </footer>
</body>
</html>

这段代码展示了如何在HTML5中使用这些新的语义元素来构建一个典型页面的结构。这有助于改善页面的可访问性和可读性,同时也有助于搜索引擎更好地理解页面内容。

2024-08-08



<!DOCTYPE html>
<html>
<head>
    <title>HashMap 示例</title>
    <script>
        // 定义 HashMap 类
        class HashMap {
            constructor() {
                this.storage = {};
                this.count = 0;
            }
 
            // 添加键值对
            set(key, value) {
                if (!this.storage.hasOwnProperty(key)) {
                    this.count++;
                }
                this.storage[key] = value;
            }
 
            // 获取指定键的值
            get(key) {
                return this.storage.hasOwnProperty(key) ? this.storage[key] : undefined;
            }
 
            // 移除指定键
            remove(key) {
                if (this.storage.hasOwnProperty(key)) {
                    delete this.storage[key];
                    this.count--;
                }
            }
 
            // 获取 HashMap 的大小
            get size() {
                return this.count;
            }
 
            // 清空 HashMap
            clear() {
                this.storage = {};
                this.count = 0;
            }
        }
 
        // 使用 HashMap
        const map = new HashMap();
        map.set('name', 'Alice');
        map.set('age', 25);
        console.log(map.get('name')); // 输出: Alice
        console.log(map.size); // 输出: 2
        map.remove('name');
        console.log(map.get('name')); // 输出: undefined
        console.log(map.size); // 输出: 1
    </script>
</head>
<body>
    <h1>HashMap 示例</h1>
</body>
</html>

这段代码定义了一个简单的 HashMap 类,并展示了如何使用它来添加、获取、移除键值对,以及获取 HashMap 的大小。这个实现没有提供哈希碰撞解决或加载因子的处理,但足以作为一个基本示例来教学。

2024-08-08



// 假设我们已经有了threejs的基础场景和一个名为`mesh`的网格对象
 
// 创建鼠标位置对象,用于存储鼠标位置信息
var mouse = new THREE.Vector2();
 
// 监听鼠标点击事件
function onMouseClick(event) {
    // 将浏览器的2D坐标转换为three.js的标准设备坐标(-1到+1)
    mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
    mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
 
    // 更新鼠标位置对象
    raycaster.setFromCamera(mouse, camera);
 
    // 计算鼠标当前位置的所有物体
    var intersects = raycaster.intersectObjects(scene.children);
 
    // 如果存在交点
    if (intersects.length > 0) {
        // 取得最近的交点
        var intersect = intersects[0];
 
        // 如果交点的对象是我们之前定义的mesh
        if (intersect.object == mesh) {
            // 执行模型的某些动作,比如旋转等
            // 例如,旋转模型
            mesh.rotation.x += 0.1;
            mesh.rotation.y += 0.1;
        }
    }
}
 
// 为window添加点击事件监听
window.addEventListener('click', onMouseClick, false);
 
// 注意:以上代码仅作为示例,实际使用时需要结合实际的Three.js场景和对象。

这段代码首先定义了一个鼠标位置对象mouse,用于存储鼠标在屏幕上的位置。然后定义了一个onMouseClick函数,该函数将在用户点击窗口时被调用。在这个函数中,我们更新鼠标位置对象,并使用raycaster来检测鼠标点击位置上是否有物体,如果有,则执行相应的动作,比如旋转模型。最后,我们为window添加了点击事件的监听。

2024-08-08



<!DOCTYPE html>
<html>
<head>
    <title>WebSocket 基础使用</title>
    <script type="text/javascript">
    function init() {
        output = document.getElementById('output');
        output.innerHTML = '连接中...';
        
        // 创建WebSocket实例,指定服务器地址和端口
        ws = new WebSocket('ws://localhost:8181');
        
        // 监听WebSocket的打开事件
        ws.onopen = function(evt) { 
            output.innerHTML = '已连接'; 
        };
        
        // 监听WebSocket的消息事件
        ws.onmessage = function(evt) {
            output.innerHTML += '<br>收到消息: ' + evt.data;
        };
        
        // 监听WebSocket的错误事件
        ws.onerror = function(evt) {
            output.innerHTML += '<br>发生错误'; 
        };
        
        // 监听WebSocket的关闭事件
        ws.onclose = function(evt) {
            output.innerHTML += '<br>连接已关闭'; 
        };
    }
    
    // 发送消息的函数
    function sendMessage() {
        var message = document.getElementById('message').value;
        ws.send(message);
    }
    </script>
</head>
<body onload="init();">
    <h1>WebSocket 实例</h1>
    <div id="output"></div>
    <input type="text" id="message" value="Hello, WebSocket!">
    <button onclick="sendMessage()">发送消息</button>
</body>
</html>

这段代码展示了如何在一个HTML页面中使用JavaScript来初始化一个WebSocket连接,并且提供了简单的接口来发送和接收消息。代码中包含了对WebSocket生命周期中常见事件的监听和处理:打开、接收消息、错误以及关闭连接。