当前位置: 首页 > article >正文

从零开始打造个人主页:HTML/CSS/JS实战教程

本教程分为环境搭建、HTML 结构编写、CSS 样式布局、JavaScript 交互实现、部署上线等五大部分,覆盖从基础到进阶的核心知识点,并结合示例代码与最佳实践,帮助你快速上手并掌握前端开发基本技能。

介绍

个人主页是展示自我、分享作品的重要窗口。本教程将:

  1. 搭建开发环境,介绍常用工具与项目结构;
  2. 基于 HTML5 规范,编写语义化网页结构;
  3. 使用 CSS3 技术(Flexbox、Grid、动画等)完成响应式、现代化布局;
  4. 利用原生 JavaScript 操控 DOM,实现动态交互与效果;
  5. 通过 Netlify 等平台进行一键部署,实现持续集成与快速上线。

阅读完本教程后,你将具备独立构建、调试和发布静态个人主页的能力。


一、环境搭建

1.1 安装编辑器与版本控制

  • 代码编辑器:推荐使用 VS Code,它具备丰富的插件生态和智能提示功能。
  • Git 与 GitHub:在本地安装 Git,并注册 GitHub 账号,将项目托管于远程仓库,方便版本管理与协作。

1.2 项目结构

my-portfolio/
├── index.html
├── css/
│   └── styles.css
├── js/
│   └── main.js
└── assets/├── images/└── fonts/
  • index.html:主页入口;
  • css/styles.css:主要样式文件;
  • js/main.js:JavaScript 逻辑;
  • assets/:存放图片、字体等静态资源。

二、HTML 结构编写

2.1 HTML5 基本语法

使用语义化标签能提升可访问性和 SEO 优化效果。例如:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>我的个人主页</title><link rel="stylesheet" href="css/styles.css">
</head>
<body><header></header><nav></nav><main></main><footer></footer><script src="js/main.js"></script>
</body>
</html>
  • <!DOCTYPE html> 声明 HTML5 文档类型;
  • <meta charset="UTF-8"> 指定字符编码;
  • <meta name="viewport"> 实现移动端适配(MDN Web Docs)。

2.2 常用标签与结构

  • 标题<h1>~<h6>
  • 段落<p>
  • 链接<a href="…">;
  • 列表<ul><ol><li>
  • 图片<img src="…" alt="…">
  • 区块<div><section><article> 等语义化容器(MDN Web Docs)。

三、CSS 样式布局

3.1 重置与基础样式

* {margin: 0;padding: 0;box-sizing: border-box;
}
body {font-family: 'Arial', sans-serif;line-height: 1.6;background: #f7f7f7;color: #333;
}
  • box-sizing: border-box; 简化盒模型计算;
  • 统一字体与行高提升可读性。

3.2 Flexbox 弹性布局

Flexbox 用于一维布局,能轻松实现水平居中、垂直对齐等常见需求:

.nav {display: flex;justify-content: center;align-items: center;gap: 20px;
}
  • display: flex 将容器设为弹性布局;
  • justify-contentalign-items 分别控制主轴和交叉轴对齐方式(CSS-Tricks)。

3.3 Grid 网格布局

Grid 适合二维布局,能构建复杂的响应式网格系统:

.portfolio {display: grid;grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));grid-gap: 20px;
}
  • repeat(auto-fit, minmax()) 根据容器宽度自动适配列数;
  • grid-gap 控制行列间距。

3.4 响应式设计

使用媒体查询实现针对不同设备的样式调整:

@media (max-width: 768px) {.nav {flex-direction: column;}
}
  • 在屏幕宽度小于 768px 时,将导航改为纵向布局,提升移动端体验。

四、JavaScript 交互实现

4.1 DOM 操作与事件绑定

示例:点击“返回顶部”按钮平滑滚动:

const topBtn = document.getElementById('top-btn');
topBtn.addEventListener('click', () => {window.scrollTo({ top: 0, behavior: 'smooth' });
});
  • addEventListener 注册事件监听器;
  • window.scrollTo 实现滚动位置控制(JavaScript教程)。

4.2 模块化开发

借助 ES6 模块语法,将功能拆分到不同文件,提高可维护性:

// utils.js
export function formatDate(date) { /* … */ }// main.js
import { formatDate } from './utils.js';
  • exportimport 简化模块引用与复用(JavaScript教程)。

4.3 异步数据交互

使用 fetch 向后端接口请求数据,并动态渲染:

fetch('https://api.example.com/projects').then(res => res.json()).then(data => renderProjects(data)).catch(err => console.error(err));
  • 原生 fetch 支持 Promise,便于链式调用与错误处理。

五、部署上线

5.1 使用 Netlify 一键部署

Netlify 提供免配置、一键托管静态站点的服务。

  1. 在 GitHub 上推送项目;
  2. 登录 Netlify,点击 Get started,选择 Import from Git,连接你的仓库;
  3. 填写构建命令(如无需构建可留空),指定发布目录(默认为根目录);
  4. 点击 Deploy,Netlify 会自动构建并分发到 CDN 节点,实现全球加速(docs.netlify.com, docs.netlify.com)。

5.2 持续部署与预览

每次向主分支推送代码,Netlify 会触发自动构建与部署。你还可以开启 Deploy Preview 功能,生成 PR 预览环境,便于团队评审与测试。

5.3 自定义域名与 HTTPS

在 Netlify 仪表盘中,可绑定自定义域名并一键启用免费的 Let’s Encrypt SSL 证书,保证站点安全与访问速度。


结语

本教程从环境搭建到页面结构、从样式布局到交互脚本,再到部署上线,涵盖了构建个人主页所需的核心技术与实践。掌握这些内容后,你便能灵活运用原生前端技术,高效打造符合自己风格的个人作品集。希望你能在实战中不断迭代与优化,打造一份既美观又实用的个人主页。

持续学习:

  • MDN Web Docs 系列教程(MDN Web Docs);
  • CSS-Tricks Flexbox 与 Grid 指南(CSS-Tricks, CSS-Tricks);
  • The Modern JavaScript Tutorial(JavaScript教程)。

相关文章:

从零开始打造个人主页:HTML/CSS/JS实战教程

本教程分为环境搭建、HTML 结构编写、CSS 样式布局、JavaScript 交互实现、部署上线等五大部分&#xff0c;覆盖从基础到进阶的核心知识点&#xff0c;并结合示例代码与最佳实践&#xff0c;帮助你快速上手并掌握前端开发基本技能。 介绍 个人主页是展示自我、分享作品的重要…...

UEFI Spec 学习笔记---33 - Human Interface Infrastructure Overview---33.2.6 Strings

33.2.6 Strings UEFI 环境中的 string 是使用 UCS-2 格式定义&#xff0c;每个字符由 16bit 数据表示。对于用户界面&#xff0c;strings 也是一种可以安装到 HIIdatabase 的一种数据。 为了本土化&#xff0c;每个 string 通过一个唯一标识符来识别&#xff0c;而每一个标识…...

高等数学基础(牛顿/莱布尼茨公式)

牛顿/莱布尼茨公式主要是为定积分的计算提供了高效的方法, 其主要含义在于求积分的函数( f ( x ) f(x) f(x))连续时候总是存在一条积分面积的函数( F ( x ) F(x) F(x))与之对应, 牛顿莱布尼茨公式吧微分和积分联系了起来, 提供了这种高效计算积分面积的方法 参考视频理解: http…...

Node.js路径处理指南:如何安全获取当前脚本目录路径

本文适用于 Node.js 14.x及以上版本&#xff0c;同时覆盖 CommonJS 和 ES Modules 模块系统 文章目录 一、为什么需要关注路径问题&#xff1f;二、三种核心方法详解方法1&#xff1a;经典方案 __dirname (CommonJS)方法2&#xff1a;ES Modules 解决方案方法3&#xff1a;动态…...

RK3588 ArmNN CPU/GPU ResNet50 FP32/FP16/INT8 推理测试

RK3588 ArmNN CPU/GPU ResNet50 FP32/FP16/INT8 推理测试 **背景与目标** 一.性能数据【INT8模型在CPU上推理的结果已经不对,暂未分析原因】二.操作步骤2.1 在x86-Linux上生成onnx模型,以及tflite量化模型(避免在RK3588上安装过多依赖)2.1.1 创建容器2.1.2 安装依赖2.1.3 下载推…...

2025年渗透测试面试题总结-华顺信安[实习]安全服务工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 华顺信安[实习]安全服务工程师 1. 自我介绍 2. 红蓝队经验 3. Shiro漏洞知识体系 4. APP渗透测试方法…...

按键精灵ios/安卓辅助工具高级函数OcrEx文字识别(增强版)脚本开发介绍

函数名称 OcrEx文字识别&#xff08;增强版&#xff09; 函数功能 返回指定区域内所有识别到的字符串、左上角坐标、区域宽高、可信度&#xff0c;无需自制字库&#xff0c;识别范围越小&#xff0c;效率越高&#xff0c;结果越准确 注意&#xff1a;安卓版按键APP需在设置…...

Unity3D HUD UI性能优化方案

前言 在Unity3D中实现高性能的HUD UI需要综合考虑渲染效率、CPU开销和内存管理。以下是分步的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;大家可以点击进来一起交流一下开发经验呀&#xff01; 1. 降低Draw Call&#xff1a;合批与图集 …...

掌握Git:版本控制与高效协作指南

一、初始Git 提出问题&#xff1a;无论是在工作还是学习&#xff0c;我们在编写各种文档的时候&#xff0c;更改失误&#xff0c;失误后恢复到原来版本&#xff0c;不得不复制出一个副本。 每个版本由各自的内容&#xff0c;但最终只有一个报告需要被我们使用。 但在此之前的…...

VsCode和AI的前端使用体验:分别使用了Copilot、通义灵码、iflyCode和Trae

1、前言 大杂烩~每次开发一行代码&#xff0c;各个AI争先恐后抢着提供帮助 备注&#xff1a;四款插件都需要先去官网注册账号&#xff0c;安装好之后有个账号验证。 2、插件详解 2.1、AI分析的答案 GitHub Copilot 定位&#xff1a;老牌 AI 代码补全工具&#xff0c;深度集成…...

交叉熵损失函数,KL散度, Focal loss

目录 交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09; 二分类交叉熵 多分类交叉熵 KL散度&#xff08;Kullback-Leibler Divergence) 交叉熵损失函数和KL散度总结 Focal loss Focal loss 和 交叉熵损失函数 的区别 交叉熵损失函数&#xff08;Cross-Entropy…...

php、laravel框架下如何将一个png图片转化为jpg格式

要在 PHP 的 Laravel 框架下将 PNG 图片转化为 JPG 格式&#xff0c;可以使用两种方法&#xff1a;内置的 GD 库或第三方包 Intervention/image。 方法 1&#xff1a;使用 GD 库 GD 库是 PHP 内置的图像处理工具&#xff0c;无需额外安装即可使用。 实现步骤&#xff1a; 使…...

足式机器人经典控制常用的ROS库介绍

一. 核心工具 & 功能 1. ros-noetic-rosbash 作用: 提供与 ROS 相关的 Shell 命令&#xff08;如 roscd, rosls, roscp 等&#xff09;&#xff0c;用于快速操作 ROS 包、节点和文件。 典型场景: 快速在终端中切换 ROS 工作空间、查看或复制 ROS 包内的文件。 2. ros-noet…...

在tp6模版中加减法

实际项目中&#xff0c;我们经常需要标签变量加减运算的操作。但是&#xff0c;在ThinkPHP中&#xff0c;并不支持模板变量直接运算的操作。幸运的是&#xff0c;它提供了自定义函数的方法&#xff0c;我们可以利用自定义函数解决&#xff1a;ThinkPHP模板自定义函数语法如下&a…...

【Part 3 Unity VR眼镜端播放器开发与优化】第一节|基于Unity的360°全景视频播放实现方案

《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化&#xff0c;以及高分辨率视频性能优化等实战技巧。 &#x1f4dd; 希望通过这个专栏&am…...

Python打卡DAY30

知识点回顾&#xff1a; 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑&#xff1a;找到根目录&#xff08;python解释器的目录和终端的目录不一致&#xff09; # 直接导入 from random import randint print(randint(1, 10)) # 导入自定义库 import modu…...

IDEA连接github(上传项目)

【前提&#xff1a;菜鸟学习的记录过程&#xff0c;如果有不足之处&#xff0c;还请各位大佬大神们指教&#xff08;感谢&#xff09;】 1.先配置好git环境。 没配置的小伙伴可以看上一篇文章教程。 安装git&#xff0c;2.49.0版本-CSDN博客 2.在idea设置git 打开IDEA设置-…...

重构研发效能:项目管理引领软件工厂迈向智能化

1.项目管理智能化&#xff0c;激活软件工厂新引擎 在高速发展的软件开发时代&#xff0c;企业如何高效管理多个项目、协调团队合作、优化资源配置&#xff0c;已成为推动技术进步的关键。尤其是在多任务、多项目并行的复杂环境下&#xff0c;智能项目组合管理工具正成为软件工…...

基于 STM32 单片机的实验室多参数安全监测系统设计与实现

一、系统总体设计 本系统以 STM32F103C8T6 单片机为核心,集成温湿度监测、烟雾检测、气体泄漏报警、人体移动监测等功能模块,通过 OLED 显示屏实时显示数据,并支持 Wi-Fi 远程传输。系统可对实验室异常环境参数(如高温、烟雾、燃气泄漏)及非法入侵实时报警,保障实验室安…...

Vue3 中使用 provide/inject 实现跨层级组件传值失败的原因及解决方案

1、基础用法 父组件&#xff1a; <script setup> import { ref, provide } from vue; import ChildComponent from ./ChildComponent.vue; const parentData ref(初始数据); // 提供数据 provide(parentData, parentData); </script>子组件&#xff1a; <sc…...

小白的进阶之路系列之二----人工智能从初步到精通pytorch中分类神经网络问题详解

什么是分类问题? 分类问题涉及到预测某物是一种还是另一种。 例如,你可能想要: 问题类型具体内容例子二元分类目标可以是两个选项之一,例如yes或no根据健康参数预测某人是否患有心脏病。多类分类目标可以是两个以上选项之一判断一张照片是食物、人还是狗。多标签分类目标…...

Semaphore解决高并发场景下的有限资源的并发访问问题

在高并发编程的领域中&#xff0c;我们常常面临着对有限资源的激烈抢夺问题。而 Java 的 java.util.concurrent 包提供的 Semaphore &#xff0c;为我们提供了精准控制对有限资源并发访问的强大能力。 一、Semaphore&#xff1f; Semaphore&#xff0c;直译为 “信号量”&#…...

Vue3——Pinia

目录 什么是 Pinia&#xff1f; 为什么选择 Pinia&#xff1f; 基本使用 安装pinia 配置pinia 定义store 使用 持久化插件 什么是 Pinia&#xff1f; Pinia 是一个轻量级的状态管理库&#xff0c;专为 Vue 3 设计。它提供了类似 Vuex 的功能&#xff0c;但 API 更加简…...

02 基本介绍及Pod基础排错

01 yaml文件里的字段错误 # 多打了一个i导致的报错 [rootmaster01 yaml]# cat 01-pod.yaml apiVersion: v1 kind: Pod metadata:name: likexy spec:contaiiners:- name: aaaimage: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 [rootmaster01 yaml]# kubectl …...

Android Edge-to-Edge

Android Edge-to-Edge显示&#xff1a;开发者综合指南 一、什么是Android Edge-to-Edge ​ Android Edge-to-Edge是一种先进的用户界面&#xff08;UI&#xff09;设计理念&#xff0c;旨在最大化利用设备的显示区域。它允许应用程序的内容延伸至屏幕的各个边缘&#xff0c;包…...

⼆叉搜索树详解

1. ⼆叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树&#xff0c;它或者是⼀棵空树&#xff0c;或者是具有以下性质的⼆叉树: • 若它的左⼦树不为空&#xff0c;则左⼦树上所有结点的值都⼩于等于根结点的值 • 若它的右⼦树不为空&#xff0c;则右⼦树上所有结点的值都⼤于等于根结…...

如何使用通义灵码提高前端开发效率

工欲善其事&#xff0c;必先利其器。对于前端开发而言&#xff0c;使用VSCode已经能够极大地提高前端的开发效率了。但有了AI加持后&#xff0c;前端开发的效率又更上一层楼了&#xff01; 本文采用的AI是通义灵码插件提供的通义千问大模型&#xff0c;是目前AI性能榜第一梯队…...

使用 ARCore 和 Kotlin 开发 Android 增强现实应用入门指南

环境准备 1. 工具与设备要求 Android Studio&#xff1a;Arctic Fox 或更高版本设备&#xff1a;支持 ARCore 的 Android 设备&#xff08;查看支持列表&#xff09;依赖库&#xff1a;// build.gradle (Module级) dependencies {implementation com.google.ar:core:1.35.0im…...

Android Studio Kotlin 中的方法添加灰色参数提示

在使用 Android Studio 时&#xff0c; 我发现使用 Java 编写方法后在调用方法时&#xff0c; 会自动显示灰色的参数。 但在 Kotlin 中没有显示&#xff0c; 于是找了各种方法最后找到了设置&#xff0c; 并且以本文章记录下来。 博主博客 https://blog.uso6.comhttps://blog.…...

TCP协议简介

TCP 协议 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是互联网协议套件中的核心协议之一&#xff0c;位于传输层。它提供了一种可靠的、面向连接的、基于字节流的数据传输服务。TCP 的主要特点是确保数据在传输过程中不丢失、不重复&a…...