关键在于语义化结构、flex布局与渐进增强:用替代堆砌;导航与分栏用display: flex实现,避免float;轮播图和表单须保留html降级结构,js仅增强交互;背景图设min-height: 100vh,字体用font-display: swap防fouc。

纯 HTML + CSS 实现个人博客首页,关键不在“能不能写出来”,而在于结构是否经得起后续扩展、样式是否容易维护、语义是否清晰可读。用 <div> 堆砌再漂亮,也扛不住加个响应式菜单或换张轮播图就错位——这恰恰是学生作业里最常翻车的地方。
<h3>页头与导航栏必须用语义化标签,别硬套 <code><div>
<p>很多人一上来就写 <code><div class="header">,结果导航菜单嵌套五层 <code><div>,JS 控制下拉时连目标元素都选不准。HTML5 明确提供了 <code><header></header>、<nav></nav>、<section></section> 这些语义标签,浏览器和屏幕阅读器能识别,CSS 选择器也更干净。
-
<header></header>包住 logo 和主标题,别塞导航 —— 导航属于独立功能模块,应归入<nav></nav> - 下拉菜单用
<ul><li><ul></ul></li></ul>结构,不是<div><span><div>;否则 CSS 的 <code>:hover > ul会失效 - 移动端菜单切换依赖
<input type="checkbox">+label+ 隐藏ul的技巧,比 JS 绑定 click 更轻量、更可靠 - 导航栏水平居中:给
<nav></nav>设display: flex; justify-content: center;,比text-align: center+inline-block稳定得多 - 主内容区左右分栏(如左侧文章列表 + 右侧侧边栏):用
display: flex+flex: 3/flex: 1,别用float: left+overflow: hidden清除浮动 - 轮播图容器设
display: flex; overflow-x: auto,配合scroll-snap-type实现原生滚动吸附,比手写 JS 切换更顺滑、更省电 - 轮播图结构先写完整 HTML:
<figure><img src="1.jpg"></figure><figure><img src="2.jpg"></figure>,JS 只负责加类名和事件,不接管 DOM 创建 - 表单
<form></form>必须带action和method="post",哪怕本地测试用action="#",也要保证 submit 后至少能触发默认行为(比如跳到锚点) - 所有 JS 功能检查
if ('querySelector' in document)再执行,避免 IE8 报Object doesn't support property or method 'addEventListener' - 背景图用
background-image搭配background-size: cover时,务必设min-height: 100vh,否则小屏设备上图片被裁切、内容被顶出视口 - 字体加载用
@font-face+font-display: swap,确保文字先以系统字体渲染,等自定义字体就绪后再替换,不阻塞首屏 - 所有图片加
width和height属性(或 CSS 中固定尺寸),防止加载时页面上下跳动,尤其轮播图区域
CSS 布局优先用 Flexbox,别碰浮动(float)
知识库里反复提到“浮动布局”,那是 2010 年代的兼容方案。现在所有主流浏览器(包括 Edge 16+、Chrome 29+、Firefox 28+)都支持 Flexbox,用 display: flex 写导航对齐、内容分栏、页脚粘底,代码行数少一半,且不会触发 BFC 问题导致 margin 合并或高度塌陷。
图片轮播和表单交互必须有降级逻辑
知识库强调“要有 JS 特效”,但没说 JS 失效时页面会不会崩。比如轮播图用 JS 动态插入 <img> 标签,而用户禁用 JS 或网络中断,整个 banner 区域就空了;又比如留言表单只靠 required 属性校验,后端没做兜底,提交后直接 500 错误。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
背景图和字体加载要防 FOUC 和布局抖动
知识库多次提到“网页背景图片”“配色优雅”,但没人说 body { background: url(...) } 在图片加载完成前页面是白屏,或者自定义字体(如思源黑体)未就绪时文字突然重排——这就是 FOUC(Flash of Unstyled Content)。
真正难的不是写出首页,而是当你要加第 7 个页面、换第三套配色、把静态表单改成发邮件功能时,还能不动大结构、不重写 CSS。语义标签、Flex 布局、渐进增强的 JS 写法,这些不是“高级技巧”,而是让页面活过第一个迭代周期的基本功。










