第 2 讲 · 用 HTML 和 CSS 组织静态网站
我根据现存的个人网站和小组网站代码归纳这一讲;源目录中没有对应教师课件。
一个页面有三层
HTML 结构:这是标题、这是导航、这是一张图
CSS 表现:它们在哪里、多大、什么颜色
JavaScript 行为:点击、输入或数据变化后发生什么
分层的直接好处是:如果要统一修改三个页面的导航颜色,只需改共享 CSS,不用逐页重写。
从骨架开始
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<nav><a href="index.html">首页</a></nav>
</header>
<main>
<h1>页面主标题</h1>
</main>
</body>
</html>
head 放页面元数据和资源链接,body 放真正显示的内容。header、nav、main 不是为了默认样式,而是标明每块内容的职责。
多页站点靠链接组起来
个人站点中的首页、人物页和图片页是三个 HTML 文件。它们之间通过相对路径连接:
<a href="renwu.html">人物介绍</a>
<img src="images/banner1.jpg" alt="首页横幅">
如果页面与 renwu.html 在同一目录,可以直接写文件名;图片在 images 子目录,所以需要先进入该目录。网页换机器后图片失效,经常是因为代码写了本机绝对路径。
CSS 的最小心智模型
.site-nav a {
color: #222;
text-decoration: none;
}
这条规则分为两部分:
.site-nav a是选择器,表示“site-nav容器内的所有链接”;- 花括号内是声明,对选中的元素设定颜色并去掉下划线。
当多条规则同时命中一个元素时,浏览器依据来源顺序、选择器优先级和是否继承决定结果。调样式时不要盲目加新规则,先在浏览器开发者工具里看实际命中了哪条。
表单的类型就是输入约束
<form>
<input type="password">
<label><input type="checkbox" checked> 记住选项</label>
</form>
password 会隐藏用户屏幕上的输入,但这不等于它已经加密;真正传输密码还需要 HTTPS 和服务端的安全处理。checked 是布尔属性,存在时表示初始选中。
自查清单
- 断网后本地打开,CSS 和图片是否仍能加载;
- 每个页面的导航是否能来回跳转;
- 标题层级是否按
h1到h2递进; - 图片是否有能表达内容的
alt; - 共享样式是否放在 CSS 文件,而不是复制到每个页面。