图文并茂-手把手教宝子们3分钟用 GitHub Pages 搭建免费网站 (保姆级教程)

news/2025/12/10 0:00:29/文章来源:https://www.cnblogs.com/sugartang/p/19328686

@

目录
  • 🌟 第一步:准备好你的 GitHub 账号
  • 🌟 第二步:创建一个特殊的仓库 (Repository),配置网站
  • 🌟 第三步:把你的网站放上去哦
  • 🌟 第四步:配置GitHub Pages
  • 🌟 第五步:见证奇迹的时刻!🎉
      • 查看搭建状态
      • 查看网站
  • 💖 Conclusion | 结语

宝子们又来看我啦~欢迎!👋

是不是一直想拥有一个属于自己的网页?放放作品集、写写碎碎念,或者单纯用来分享一个个人网站?
但是一听到“服务器”、“域名”、“部署”这些词就头大,而且还不想花钱?💸

来来来,今天教大家用 GitHub Pages “白嫖”一个静态网站!不需要你是程序猿,只要会点鼠标,三分钟就能搞定!✨


🌟 第一步:准备好你的 GitHub 账号

首先,你要有一个 GitHub 账号。
如果你还没有,去 github.com 注册一个,起个好听的英文名哦!
image


🌟 第二步:创建一个特殊的仓库 (Repository),配置网站

登录后,点击右上角的 + 号,选择 New repository

image

确保选中 Public (公开),然后点击最下面的绿色按钮 Create repository。搞定!✅
image


🌟 第三步:把你的网站放上去哦

现在仓库是空的,我们需要放一个网页进去。
为了演示方便,我们直接在网页上操作:

  1. 点击蓝色的链接 creating a new file
  2. 文件名填 index.html (这是网页的“大门”)。
  3. 在下面的大框框里,随便写点什么!比如:

4.点击 Commit ... 保存。

image

image

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>WebGL 手势控制爱心粒子</title><style>body { margin: 0; overflow: hidden; background-color: #000; }#canvas-container { width: 100vw; height: 100vh; position: absolute; top: 0; left: 0; z-index: 1; }/* 隐藏摄像头视频流,只用于后台分析 */.input_video { display: none; }#loading {position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);color: white; font-family: sans-serif; font-size: 24px; pointer-events: none; z-index: 10;}</style><!-- 引入 Three.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script><!-- 引入 MediaPipe Hands --><script src="https://cdn.jsdelivr.net/npm/@mediapipe/camera_utils/camera_utils.js" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/npm/@mediapipe/control_utils/control_utils.js" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/npm/@mediapipe/drawing_utils/drawing_utils.js" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/npm/@mediapipe/hands/hands.js" crossorigin="anonymous"></script>
</head>
<body><div id="loading">正在加载模型与摄像头...<br>请允许摄像头权限</div>
<div id="canvas-container"></div>
<video class="input_video"></video><script>// --- 1. Three.js 场景初始化 ---const scene = new THREE.Scene();const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);camera.position.z = 30;const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });renderer.setSize(window.innerWidth, window.innerHeight);document.getElementById('canvas-container').appendChild(renderer.domElement);// --- 2. 创建爱心粒子系统 ---const particleCount = 3000; // 粒子数量const geometry = new THREE.BufferGeometry();const positions = new Float32Array(particleCount * 3);const targetPositions = new Float32Array(particleCount * 3); // 存储爱心形状的目标位置const randomPositions = new Float32Array(particleCount * 3); // 存储散开时的随机位置// 爱心方程函数function getHeartPosition(t, scale = 1) {const x = 16 * Math.pow(Math.sin(t), 3);const y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t);const z = 0; return { x: x * scale, y: y * scale, z: z * scale };}for (let i = 0; i < particleCount; i++) {// 生成爱心形状的目标点// 为了让爱心立体一点,我们随机分布t,并在Z轴加一点随机扰动const t = Math.random() * Math.PI * 2;const scale = 0.5; const heartPos = getHeartPosition(t, scale);// 填充爱心内部 (随机缩放)const r = Math.sqrt(Math.random()); targetPositions[i * 3] = heartPos.x * r;targetPositions[i * 3 + 1] = heartPos.y * r;targetPositions[i * 3 + 2] = (Math.random() - 0.5) * 5; // Z轴厚度// 生成散开的随机位置 (爆炸效果)randomPositions[i * 3] = (Math.random() - 0.5) * 100;randomPositions[i * 3 + 1] = (Math.random() - 0.5) * 60;randomPositions[i * 3 + 2] = (Math.random() - 0.5) * 50;// 初始位置设为散开状态positions[i * 3] = randomPositions[i * 3];positions[i * 3 + 1] = randomPositions[i * 3 + 1];positions[i * 3 + 2] = randomPositions[i * 3 + 2];}geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));// 粒子材质const material = new THREE.PointsMaterial({color: 0xff69b4, // 热粉色size: 0.4,transparent: true,opacity: 0.8,blending: THREE.AdditiveBlending});const particles = new THREE.Points(geometry, material);scene.add(particles);// --- 3. 交互逻辑变量 ---let gatherFactor = 0; // 0 = 完全散开, 1 = 完全聚合成爱心let targetGatherFactor = 0; // 目标聚合度,由手势控制// --- 4. MediaPipe Hands 配置 ---const videoElement = document.getElementsByClassName('input_video')[0];function onResults(results) {document.getElementById('loading').style.display = 'none';if (results.multiHandLandmarks && results.multiHandLandmarks.length > 0) {const landmarks = results.multiHandLandmarks[0];// 计算手掌开合程度// 简单算法:计算拇指指尖(4)与其他四指指尖(8,12,16,20)到手腕(0)的平均距离const wrist = landmarks[0];const fingerTips = [4, 8, 12, 16, 20];let totalDist = 0;fingerTips.forEach(idx => {const tip = landmarks[idx];const dist = Math.sqrt(Math.pow(tip.x - wrist.x, 2) + Math.pow(tip.y - wrist.y, 2));totalDist += dist;});const avgDist = totalDist / 5;// 经验阈值:// 握拳时,指尖距离手腕很近 (avgDist 约 0.1 - 0.2)// 张开时,指尖距离手腕较远 (avgDist 约 0.4 - 0.6)// 我们做一个映射:握拳(distance small) -> 聚合(factor 1), 张开 -> 散开(factor 0)// 动态调整这些阈值以适应摄像头的距离const closeThreshold = 0.25; const openThreshold = 0.5;let normalized = (avgDist - closeThreshold) / (openThreshold - closeThreshold);normalized = 1 - Math.min(Math.max(normalized, 0), 1); // 反转:距离越小(握拳),值越大(1)targetGatherFactor = normalized; } else {// 如果没有检测到手,默认缓慢散开targetGatherFactor = 0;}}const hands = new Hands({locateFile: (file) => {return `https://cdn.jsdelivr.net/npm/@mediapipe/hands/${file}`;}});hands.setOptions({maxNumHands: 1,modelComplexity: 1,minDetectionConfidence: 0.5,minTrackingConfidence: 0.5});hands.onResults(onResults);const cameraUtils = new Camera(videoElement, {onFrame: async () => {await hands.send({image: videoElement});},width: 640,height: 480});cameraUtils.start();// --- 5. 动画循环 ---function animate() {requestAnimationFrame(animate);// 粒子自身旋转动画particles.rotation.y += 0.002;// 平滑过渡聚合系数 (Lerp)gatherFactor += (targetGatherFactor - gatherFactor) * 0.05;// 更新粒子位置const posAttr = particles.geometry.attributes.position;const currentPositions = posAttr.array;for (let i = 0; i < particleCount; i++) {const idx = i * 3;// 目标位置插值:从 randomPositions 过渡到 targetPositionsconst tx = randomPositions[idx] + (targetPositions[idx] - randomPositions[idx]) * gatherFactor;const ty = randomPositions[idx+1] + (targetPositions[idx+1] - randomPositions[idx+1]) * gatherFactor;const tz = randomPositions[idx+2] + (targetPositions[idx+2] - randomPositions[idx+2]) * gatherFactor;// 增加一点动态浮动效果currentPositions[idx] += (tx - currentPositions[idx]) * 0.1;currentPositions[idx+1] += (ty - currentPositions[idx+1]) * 0.1;currentPositions[idx+2] += (tz - currentPositions[idx+2]) * 0.1;}posAttr.needsUpdate = true;renderer.render(scene, camera);}animate();// 窗口大小调整适配window.addEventListener('resize', () => {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize(window.innerWidth, window.innerHeight);});
</script>
</body>
</html>

🌟 第四步:配置GitHub Pages

  • 在GitHub仓库页面:
    1. 点击"Settings"选项卡
    1. 在左侧菜单中选择"Pages"
    1. 在"Source"部分,选择要部署的分支(通常是main)
    1. 选择根目录(/root)或文档目录(/docs)
    1. 点击"Save"
    1. 等待几分钟,网站将部署完成
      这里是最最关键的一步!⚠️
      image
      image

🌟 第五步:见证奇迹的时刻!🎉

保存好之后,其实 GitHub 已经在后台偷偷帮你部署啦!
稍等几十秒(有时候可能要一两分钟,喝口水的时间~ ☕️)。

查看搭建状态

点击仓库上方的 Actions -> 可以查看你的网站搭建状态

image
image
image

查看网站

点击仓库上方的 Settings (设置) ⚙️ -> 左侧栏找到 Pages

恭喜你!!点击那个链接,你就看到了你刚刚写的网页啦!🌏
不管你在地球的哪个角落,只要有网,都能访问这个链接!
image
image


💖 Conclusion | 结语

  • That's all for today~ - | 今天就写到这里啦~

  • Guys, ( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ See you tomorrow~~ | 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~

  • Everyone, be happy every day! 大家要天天开心哦

  • Welcome everyone to point out any mistakes in the article~ | 欢迎大家指出文章需要改正之处~

  • Learning has no end; win-win cooperation | 学无止境,合作共赢

  • Welcome all the passers-by, boys and girls, to offer better suggestions! ~~~ | 欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/995740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025权威聚焦:智能门窗控制器解决方案商综合推荐,引领智慧生活新入口 - 星报

在万物互联与人工智能技术深度融合的今天,作为建筑“五官”和家居物理入口的门窗,其角色正从被动的物理屏障向主动感知、智能交互的“智慧生命体”转变。智能门窗不仅是实现全屋智能场景联动的关键节点,更直接关系到…

2025最新聚脲防腐防水涂料/厂家TOP5评测!环保科技+工程实证权威榜单发布,功能涂料赋能基建防护新生态 - 全局中转站

随着聚脲防腐防水涂料在建筑、工业、市政等领域的广泛应用,市场对高性能、环保型产品的需求持续攀升。本榜单基于环保性能、技术创新力、工程适配性、服务覆盖度四大维度,结合行业权威检测数据与工程案例反馈,全面解…

2025最新彩砖专用水性色浆服务商/厂家TOP5评测!环保创新+性能实证权威榜单发布,技术赋能重构彩砖涂装生态 - 全局中转站

随着彩砖专用水性色浆在市政工程、园林景观、商业空间等领域的广泛应用,市场对高品质、环保型色浆产品的需求持续攀升。本榜单基于产品环保性能、色彩稳定性、施工适配性、行业应用案例四大维度(龙祥涂料新增“全品类…

剪映vip破解版 分享

剪映破解版(电脑) 能使用vip的所有功能,能登陆 能导出。 下载链接 点击这里下载 核心功能 剪映免SVIP版本为你提供全方位的视频编辑功能,让你轻松打造精美视频: 丰富滤镜与特效 多种滤镜效果,瞬间提升视频质感,…

2025 智能电壁炉解决方案商权威推荐:赋能家居暖意与智慧节能 - 星报

在追求品质生活与绿色低碳的今天,电壁炉已远非单纯的取暖设备。它融合了家居美学、智能控制与舒适体验,成为现代空间,尤其是精装住宅、高端酒店、商业展厅与智慧家居场景中画龙点睛的一笔。市场数据显示,中国取暖电…

2025年电壁炉解决方案商综合推荐:驱动智能取暖与美学融合的新浪潮 - 星报

随着消费者对家居环境的舒适度、美学氛围及智能化程度要求不断提高,电壁炉已从单一的取暖设备,转型为集智能控制、家居装饰和节能环保于一体的空间核心焦点。市场正迎来快速增长期,预计到2027年,中国取暖电器行业市…

2025 最新聚脲地坪服务商 / 厂家 TOP5 评测!环保高性能 + 全场景适配权威榜单发布,技术创新引领地坪材料升级 - 全局中转站

随着功能性地坪材料在工业、商业、市政等领域的广泛应用,聚脲地坪以其卓越的耐磨、防腐、防水性能成为市场新宠。本榜单基于环保安全、性能表现、行业适配、服务体系四大维度,结合国内重点工程案例反馈与行业协会数据…

一只菜鸟学深度学习的日记:填充 步幅 下采样

本文浅谈了填充、步幅、下采样,并对其进行拓展。本文以作者阅读《Dive into Deep Learning》为线索,融合串联了自身理解感悟、原始论文、优秀文章等。如有无意侵权,请联系本人删除。填充 & 步幅 & 下采样 由…

2025最新无机水性涂料品牌/厂家TOP5评测!环保性能与工程适配权威榜单发布,功能性涂料技术革新引领行业升级 - 全局中转站

随着环保政策收紧与绿色建筑需求激增,无机水性涂料凭借零VOC、防火阻燃等核心优势,成为建筑、市政、工业领域的优选材料。本榜单基于环保安全、性能指标、工程案例、服务体系四大维度,结合国内重点工程采购数据及行…

黑马程序员SpringCloud微服务开发与实战-微服务-配置管理

黑马程序员SpringCloud微服务开发与实战-微服务-配置管理Posted on 2025-12-09 23:41 心默默言 阅读(0) 评论(0) 收藏 举报到目前为止我们已经解决了微服务相关的几个问题:微服务远程调用 微服务注册、发现 微服…

git-ssh - yebinghuai-qq

git-ssh ----------------------------------------------------------------------------打开 Git Bash(不是 CMD) 步骤1:检查 SSH 密钥 dir %USERPROFILE%\.ssh dir C:/Users/Administrator/.ssh生成 SSH 密钥 ss…

Linux中级のNginx~2

Nginx目录索引 目录索引模块简述 ngx_http_autoindex_module 模块处理以斜杠字符(’/’)结尾的请求,并生成目录列表。 当 ngx_http_index_module 模块找不到索引文件时,通常会将请求传递给ngx_http_autoindex_modu…

2025 最新水性地坪漆厂家 TOP5推荐!水性地坪漆年度品牌榜,环保性能 + 技术创新优质供应商,专业赋能地面涂装新体验 - 全局中转站

随着水性地坪漆在建筑、工业、市政等领域的广泛应用,市场对高品质、环保型产品的需求持续攀升。本榜单基于环保性能、技术创新、应用场景适配性、服务体系四大维度,结合行业权威数据及用户反馈,全面解析2025年五大水…

数据采集与融合技术实践4

数据采集与融合技术实践4 任务一 任务要求 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。 候选网站:东方财富网:http://quote.eastmoney.com/center…

12月9日日记

1.今天学习英语 2.明天马哲 3.Flter 配置的优先级?是否遗漏了 @WebFilter 注解(注解方式配置时)?

2025.12.9总结

今天把大数据的作业写完。基础层 (实验1-2): 环境与存储 技能获取: 熟练使用 Linux Shell 和 Hadoop HDFS Shell 进行系统与分布式文件管理。 核心认知: 理解分布式文件系统(HDFS)的核心思想——数据分块、多副本存储…

2025 最新路面胶粘剂厂家 TOP5 评测!路面胶粘剂优质国产品牌年度榜单,绿色环保 + 性能实证权威榜单发布,技术赋能重构路面工程生态 - 全局中转站

随着基础设施建设与城市更新的加速,路面胶粘剂作为保障道路安全、美观与耐久性的核心材料,市场需求持续攀升。本榜单基于环保性能、技术创新力、工程适配性、服务体系四大维度,结合行业权威数据与实际工程案例反馈,…

2025年国内十大检定器生产厂家实力排行榜,贯入式砂浆强度检测仪/回弹仪检定器/裂缝测深仪/裂缝测宽仪/数显碳化深度尺检定器供应厂家找哪家 - 品牌推荐师

在建筑工程质量检测、工业分析及科研实验等领域,检定器作为确保测量仪器准确性的关键设备,其重要性日益凸显。随着国内制造业向高端化、智能化迈进,一批拥有核心技术、注重品质与创新的检定器生产企业脱颖而出,构成…

2025 最新桥梁防腐涂料厂家 TOP5 评测!环保高性能 + 技术创新权威榜单发布,守护基础设施安全与耐久 - 全局中转站

随着基础设施建设的持续推进,桥梁作为交通命脉,其防腐保护需求日益凸显。桥梁防腐涂料作为延长桥梁使用寿命、保障结构安全的关键材料,市场对其性能、环保和耐久性要求不断提升。本榜单基于技术创新力、产品性能、行…