零代码应用开发·第 4 章·3 学时

单页网页

结构、样式、行为三块的分工,以及怎么把一页交到别人手上。

本章精髓 一份网页永远是三大块:结构管有什么,样式管长什么样,行为管点了之后发生什么。页面出毛病时先判断是哪一块失效,直接改那一块,不要整版重新生成。

学完本章后,你应该能够:

  1. 拿到任何一份网页代码,指出结构、样式、行为三块各在哪一段;
  2. 说明 class 与 id 的区别,并顺着名字找到样式和脚本作用在哪一处;
  3. 看页面的坏法反推是三块中的哪一块出了问题,不必逐字读代码;
  4. 用开发者工具定位元素、读报错、在页面上试改动;
  5. 做出一个不引用任何外部资源的单文件页面,拷到别人的电脑上照样能用。
配套演示文件 第04章演示_完整版.html 第04章演示_三次拆解.html 第04章演示_两条连线.html

先做出一页能拷给别人的简历

成品 · 分两步 · 单文件

先把这一页做出来,三大块的道理放在下一部分讲。

1.1本章成品:《扫码认识我》

一页个人简历:姓名与专业、一段自我介绍、三条信息、一个点了才显示联系方式的按钮。做完只有一个文件,拷进 U 盘,在任何一台电脑上双击都能打开,断网也不变样。

这一页有两个硬要求,本章的全部讲解都围着它们转:只有一个文件不引用任何外部资源。做到这两条,它才是一件能交出去的作品,而不是只在你这台电脑、你这个网络下才成立的东西。

1.2本章新技巧:分两步生成

一开始就索要成品,是最费时间的做法。它会直接给出一份排版完整的页面,而你一看内容顺序不对、少了一块或多了一块。这时候再改,动的是已经排好版的整页。

先只要内容结构,不要代码。它会给出一份列表:这一页从上到下有哪几块、每块放什么。此时发现不对,改一句话即可。确认之后再让它生成界面。

骨架错了改一句话,界面错了整版重来。第一步花的一分钟,通常能省下第二步的三轮返工。

1.3可直接复制的提示词

发给 AI第一步 · 只要结构,不要代码
我要做一个个人简历页,使用者是同学,在手机上看。 本版要做:① 基本信息 ② 一段自我介绍 ③ 三条信息条目 ④ 点按钮才显示联系方式。 本版不做:多页、留言、访问统计、二维码。 请只输出这一页从上到下有哪几块内容、每块里放什么,用列表写, 不要生成任何代码。
发给 AI第二步 · 结构确认之后再发
按上面确认的结构生成页面,要求: 手机优先、单列布局、绿色为主色; 全部 HTML、CSS、JavaScript 合并到一个 .html 文件里,我要直接另存双击运行; 不要拆成多个文件,不引用任何外部链接、字体或图标库; 加上 viewport 那一行;中文使用 UTF-8; 不要使用任何图片,头像用姓氏的第一个字加圆形底色代替。

这几句约束,分别防住的是本章后面要讲的坑:

请只输出……不要生成任何代码
它跳过第一步直接给界面,你只能在成品上修改
全部合并到一个 .html 文件
样式被放进另一个文件,只拷了网页,页面就只剩纯文字
不引用任何外部链接、字体或图标库
断网之后字体变默认、图标变方块
加上 viewport 那一行
手机上整页缩成一团,要两指放大才看得清
不要使用任何图片
图片没有一起拷贝,发给别人显示为空白图标

1.4大模型的常见偏差

跳过第一步直接给界面 双方都想快,结果是一起返工。"不要生成任何代码"这一句写在最后一行最有效;它若仍然给出代码,回复一句"我只要结构列表"。
声称已合并为单文件,实际仍引用了外部资源 拿到代码之后搜索 http 这四个字母,头部若有一行指向网上的地址,就是没有照做。要求它删掉那一行,把样式写进本文件。
头像用了一张网上的图片 在它那里页面有头像,自己打开却是一个空白图标。所以提示词里写明用姓氏首字加圆形底色,这样头像是画出来的,跟着文件走。
备用方案 现场生成失败或网络不好时,直接打开 第04章演示_完整版.html,成品是现成的;三种坏法可以用 第04章演示_三次拆解.html 当场演示,不必现改代码。

三大块与两条连线 本章重点

结构 · 样式 · 行为 · class · id

本章的核心内容集中在这一部分和下一部分。

本章要学的术语 · 八个
01HTML 结构HyperText Markup Language
02CSS 样式Cascading Style Sheets
03JavaScript 行为JavaScript
04类名class
05标识id
06视口viewport
07外部资源依赖external dependency
08开发者工具developer tools

这八个术语会原样出现在浏览器菜单、报错信息与技术文档中。前五个在本部分讲解,后三个在第三部分讲解。

2.1五个知识点,一个一个看

每一条都先摆出你在屏幕上会看到的现象,再说它背后是什么。

01结构:标签套着标签,管这一页有什么
<div class="card">
<h1>李明</h1>
<div class="item">
<span>擅长</span>Excel
</div>
</div>

缩进不是为了好看,是让层级看得见

现象:代码里全是尖括号,一层缩进一层。

概念:网页的结构由一对对标签搭成,写法是 HTML(HyperText Markup Language)。大标签里可以套小标签,外层的范围包含里面所有层,删掉外层,里面的内容会一并消失

类比:快递箱里装小盒,小盒里装东西。扔掉大箱子,里面的也一并没了。

02样式:管这一页长什么样
有样式 配色、圆角、间距像一张卡片
没样式 内容一个不少挤成一片纯文字

样式不改内容,只改样子

现象:同样的一段内容,一份有配色圆角,一份是从上到下的一片黑字。

概念:CSS(Cascading Style Sheets)规定每一块内容长什么样:颜色、字号、间距、圆角。它一个字的内容都不改,只改呈现方式。

类比:房子的墙和房间是结构,刷墙铺地挂窗帘是样式。

03行为:管点了之后发生什么
点按钮那一处文字变了
别处纹丝不动

只动被点名的那一处

现象:点一下按钮,页面上某一处的文字变了,别的地方没有任何变化。

概念:JavaScript 负责行为,也就是使用者做了某个动作之后,页面要发生什么改变。没有这一块,页面就只能看,点什么都不会有反应。

类比:装了开关和门铃的房子,按下去才有动静。

04类名 class:样式靠它找到元素,一对多
HTML 里写 class="item"
名字对上
CSS 里写 .item { }
页面上三条信息都贴了 item,改一次样式,三条一起变

前面那个点就是"去找贴了这个标签的"

现象:HTML 里有 class="item",CSS 里有 .item { },两个名字一模一样。

概念:class 是给元素贴的分类标签。同一个 class 可以贴给多个元素,样式改一次,它们一起变化。CSS 里写成 .items,多一个字母就对不上,样式完全不会生效。

类比:给一批货贴同样的标签,仓库按标签一次性处理。

05标识 id:行为靠它找到元素,一对一
HTML 里写 id="contact"
名字对上
脚本里写 getElementById('contact')
整页只有这一个,脚本精确找到它,再改它的内容

脚本得先找到人,才能动它

现象:点一下按钮,页面上那一处从"点下方按钮显示"变成了一串邮箱。

概念:id 是元素的身份证,整页只能有一个。脚本用 getElementById 按这个名字把它取出来,再修改它的内容。id 写错或者重复,点按钮就没有反应。

类比:class 相当于班级,id 相当于学号。通知全班用班级,找某一个人用学号。

本章方法 页面不正常时,先判断是三块中的哪一块失效,再去改那一块,不要整版重新生成。

2.2这就是那段代码

整页四十来行,与 第04章演示_完整版.html 逐字一致。三大块的位置是固定的:样式在头部,结构在 body 里,行为在最后。拿到任何一份大模型生成的网页,按这个顺序看一遍,就知道每一段的用途。

扫码认识我.html完整文件 · 双击即可运行
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>扫码认识我</title>

  <style>
    /* 样式:长什么样 */
    body  { background:#f5f7f4; padding:28px 16px; }
    .card { max-width:420px; margin:0 auto; background:#fff;
            border-radius:16px; padding:26px 24px; }
    .ava  { width:52px; height:52px; border-radius:50%; background:#2f6b45;
            color:#fff; line-height:52px; text-align:center; }
    h1    { color:#2f6b45; font-size:23px; margin:12px 0 2px; }
    .major{ color:#7b8a80; font-size:14px; margin:0 0 14px; }
    .item { border-top:1px solid #ecefe9; padding:13px 0; }
    .label{ color:#2f6b45; font-weight:600; margin-right:8px; }
    button{ width:100%; background:#2f6b45; color:#fff; border:0;
            border-radius:9px; padding:13px; margin-top:14px; }
  </style>
</head>
<body>

  <!-- 结构:有什么 -->
  <div class="card">
    <div class="ava"></div>
    <h1>李明</h1>
    <p class="major">大数据学院 · 数据科学与大数据技术 2023 级</p>
    <div class="item"><span class="label">擅长</span>Excel 数据整理</div>
    <div class="item"><span class="label">项目</span>班级活动报名表</div>
    <div class="item"><span class="label">联系</span><span id="contact">点下方按钮显示</span></div>
    <button onclick="showContact()">显示联系方式</button>
  </div>

  <script>
    /* 行为:点了怎样 */
    function showContact() {
      document.getElementById('contact').textContent = 'liming@example.edu.cn';
    }
  </script>
</body>
</html>

2.3三块靠两条连线挂在一起

三块不是各写各的。它们靠两样东西挂钩:class 让样式找到结构,id 让行为找到结构。高亮的那三行里,两条连线都在。

class="item" ↔ .item { }
一对多。页面上三条信息都贴了 item,改一次 CSS,三条一起变。 CSS 里写成 .items,多一个字母就对不上,样式完全不会生效
id="contact" ↔ getElementById
一对一。整页只有一个 contact,脚本按这个名字精确找到它。 id 写错或者出现重复,点按钮没有反应,开发者工具里会提示找不到
onclick="showContact()"
按钮与函数的挂钩。点这个按钮,就去执行下面那个叫 showContact 的函数。 函数名拼错,或者整块脚本缺失,点下去不会有任何反应

打开 第04章演示_两条连线.html,可以把两个名字当场改掉一边:只改 HTML 里的 class 名字,CSS 不动,页面的样式立刻塌掉;只改 id 名字,脚本不动,按钮立刻点不动。名字对不上,样式就落不下去,脚本也找不到人。

讨论如果把 HTML 里的 class="item" 改成 class="row",但 CSS 里那一行不动,页面会变成什么样?三条信息还在不在?

2.4读代码三问:不必逐字读

这门课不要求你逐行读懂代码。拿到一份网页,只问三件事就够用:

第一问
内容在哪一段
找 body 里那些带文字的行,那就是这一页给人看的全部内容。
要改文字,改这里
第二问
样子由哪一段决定
找头部 style 那一块,配色、字号、间距都在里面。
要改颜色和大小,改这里
第三问
重复的那一段在哪
三条信息长得一样,说明它们贴了同一个 class,样式只写了一份。
要改一批,改那一份
看懂两条连线,就能读懂大模型生成的任何一份网页:不必逐字读,顺着名字找过去即可。

页面坏了,先判断坏在哪一块

三种坏法 · 症状反查 · 开发者工具

看现象反推是哪一块出了问题,比逐字读代码快得多。

3.1另外三个知识点

06视口 viewport:不写这一行,手机上会缩成一团
没写 先按电脑宽度画整体缩小,字要放大才看清
写了 按手机真实宽度排字号正常,不用横着拖

只是一行代码,差别很大

现象:电脑上好好的页面,手机上整个缩成一小团,得两指放大才看得清。

概念:头部那行 viewport 告诉手机浏览器按屏幕真实宽度排版。不写这一行,手机会先按一块电脑那么宽的屏幕排版,画完再整体缩小塞进屏幕。

类比:没有告诉裁缝这件衣服给谁穿,他按标准尺码做完,再由你自己去改。

07外部资源依赖:断网就会变样
联网字体好看,图标正常
断网字体变默认,图标变方块

机房网络不稳时最容易暴露

现象:它演示时页面显示正常,自己打开却是另一副样子。

概念:页面在头部引用了网上的字体或图标库,每次打开都要临时下载,这叫外部资源依赖。断网、网速慢、若干年后那个地址失效,页面就会变样。本地图片也是同一类问题:网页里存的是图片的地址,不是图片本身,单独发送网页文件,地址就指不到了。

类比:菜谱里写明用某一家的酱油,那家店关门之后,这道菜就做不出原来的味道。

08开发者工具:浏览器自带的检查台
Elements
找元素
看结构
·
Console
读红字
看报错

按 F12 打开,两个面板够用一整个学期

现象:按一下 F12,浏览器右边或下边弹出一个满是代码的面板。

概念:开发者工具是浏览器自带的检查台。这门课只用两个面板:Elements 看这一页由哪些元素组成、鼠标移上去页面会高亮;Console 显示脚本的报错,点按钮没反应时,红字就在这里。

类比:Elements 是骨架的透视片,Console 是它喊疼的地方。

3.2拿掉一块,页面会以特定方式坏掉

打开 第04章演示_三次拆解.html,把三块轮流关掉一块,右边的页面立刻变成对应的坏法。三种坏法互不相同,看现象就能反推是哪一块出了问题。

页面只剩文字,内容都在,全部挤在一起
样式那一块没了。内容和按钮功能都正常,只是没人给它排版
常见来源:样式被单独放进了另一个文件,而你只拷了网页
页面很正常,按钮点了没反应
行为那一块没了,或者函数名对不上
按 F12 看 Console,红字会写清是找不到函数还是找不到元素
外框在、配色在,里面没有内容
结构那一块没了。样式还在起作用,所以外壳好好的
常见来源:复制代码时只复制了一半
遇到页面不正常,最费时间的做法是再让大模型生成一遍:它可能给出一份全新的页面,问题换到了另一个位置。先判断是哪一块失效,直接改那一块,通常一句话就够。
讨论这三种坏法里,哪一种最容易被误判为大模型生成得不好,因而白白重做一遍?为什么是它?

3.3症状反查:看症状开药方

上一节按"哪一块没了"分类。还有一类更常见:三块都在,只是某处写坏了一个符号。这类问题有固定的症状,可以反过来查。

看到的症状
代码上的样子
先查哪里
配色圆角全部失效,只剩纯文字
.card { … 少了一个 }
样式块里的大括号没有闭合,后面所有样式一起作废
卡片外框整个消失,其余正常
class="card 少了后引号
引号没有收尾,这个名字没能贴上去,样式落不下来
整页文字变成大号加粗
<h1>李明 少了 </h1>
标签没有闭合,后面的内容全被算进了标题里
点按钮没反应,Console 有红字
找不到 showContact
函数名拼错,或者整块脚本没有复制进来
这四条可以反过来用。看到症状先想它对应哪一类写坏,去那一处找,不必从第一行读起。符号成对出现的地方最容易出事:大括号、引号、标签,都是一出一进。

3.4开发者工具的三种用法

用法一
在 Elements 里定位
找到 id="contact" 那一行,鼠标移上去,页面上对应的位置会高亮。 这正是 id 的作用,看得见的实证。
用法二
在 Console 里读红字
点按钮没有反应时,红字会写清是找不到函数还是找不到元素。 把红字原文交给大模型,比说"点了没反应"快得多。
用法三
把它当试衣间
在 Elements 里可以直接改文字和颜色,页面当场变化。 改的是屏幕上这一份,刷新就没了,适合试效果;试到满意,再回编辑器真正改一次。
试衣间里的改动不会存进文件。在 Elements 里改得再好看,刷新一次就回到原样。有人在这里改了半天,以为已经改好了,关掉浏览器才发现文件一个字没动。

3.5前沿三分钟:一个文件就是一件作品

每章固定栏目 · 一条与当章内容相关的行业动态

现在打开的大多数网页,背后是几十上百个文件:脚本、样式、字体、图标,分散在好几台服务器上。任何一处失效,页面就不完整。已经有不少统计指出,十年前的网页链接,如今有相当一部分已经打不开或者变了样。

与之相对的做法称为单文件:把全部内容装进一个文件,不依赖任何外部资源。它换来的是拷进 U 盘能用、断网能用、作为邮件附件能用、若干年后仍然打得开。代价也要说清楚:文件体积略大,样式没法在多个页面之间复用。

本课程统一采用单文件,理由很直接:作品要能交到别人手上,而不是只在你的电脑上、你的网络下、你打开的那个平台里有效。

交到别人手上

只讲解不重写 · 单文件自检 · 跨设备

页面在自己这里能看,和别人能用,是两回事。

4.1让它当讲解员,不让它重写

看不懂某一段代码时,最自然的做法是把它贴给大模型问一句。这里有一个要提前挡住的默认行为:它的第一反应往往是重写一遍给你,而不是解释原来那一份。拿到一份你没见过的新代码,原来看不懂的地方仍然看不懂,而且你手上那份已经跑通的东西被换掉了。

发给 AI只要解释 · 明确禁止修改
下面这份 HTML 文件是现成的,我不打算改它,只想看懂它。 请做三件事,全程不要重写或修改任何代码: ① 用一句话说明这个页面是干什么的; ② 把文件分成结构、样式、行为三块,指出每一块从第几行到第几行; ③ 从中挑出 5 行最关键的,逐行用中文解释这一行在做什么, 解释里不要出现英文术语,也不要展开讲语法。 代码如下: [粘贴代码]
全程不要重写或修改任何代码
它不请自来地"顺便优化了一下",还给你一份你没见过的新页面
指出每一块从第几行到第几行
泛泛地说"这是样式部分",你还是不知道该往哪里看
解释里不要出现英文术语
一段解释里堆满英文缩写,等于把看不懂的东西换了一种写法
让它加注释时也要留这一句。加注释这件事看上去只是添几行,它却常常顺手把代码也调整了。拿到之后先和原文件比对一次,确认只多了注释行,别的一个字没变。

4.2交出去之前,自检四条

这四条都能在一分钟内查完,缺一条就可能出现"在我这里明明是好的"。

代码里搜不到 http 这四个字母 没有引用网上的字体、图标或图片 在编辑器里按 Ctrl+F 搜 http,搜不到才算过
文件夹里只有一个文件 没有单独的样式文件、脚本文件,也没有图片 打开文件夹数一数,只有一个 .html
头部有 viewport 那一行 手机上按真实宽度排版 把浏览器窗口拖到手机那么窄,看有没有横向滚动条
双击打开是页面,中文正常 不是满屏代码,也没有方块 关掉编辑器,回到文件夹双击一次
http 这四个字母,是本章最省事的一条自检。它一句"已经合并成单文件了"并不作数,头部那一行指向网上的地址还在不在,搜一下就知道。

4.3跨设备验证:只发一个文件

自检四条全过,还剩最后一步:把这个文件发给同组同学,让他在自己的电脑上打开。只发这一个文件,不发别的,也不作任何说明。他能正常打开、按钮可用,这一页才算做完。

对方打不开时,问题在你这一侧,按下面的顺序排查通常一次就能找到:

先查
文件是不是存成了 .html.txt
先在资源管理器里勾选显示文件扩展名,再看真实的文件名。
对方双击打开是满屏代码
再查
是不是引用了本地的图片
图片没有跟着一起发送,地址就指不到了。本章要求不使用图片,正是为了绕开这一条。
对方那边有空白图标
最后查
是不是引用了网上的资源
搜代码里的 http,把那一行删掉,让它把样式写进本文件。
对方那边字体、图标与你的不一致
讨论同组同学打不开,而你这边一切正常。在你动手改代码之前,最先应该向他确认的是哪一件事?为什么先问这一件,而不是直接重新生成一份?

上机实验 作业 1

三选一 · 六步走完 · 跨设备验

上机环节由此开始,本次上机的成果就是作业 1,当堂完成并提交。

5.1三个题目,任选其一

题目 A
扫码认识我

个人简历页:基本信息、一段介绍、三条信息、点按钮显示联系方式。

通用
题目 B
我们专业到底学什么

给新生看的专业介绍:学什么、将来做什么、三门代表课程。

偏文科
题目 C
一张图看懂我的课程设计

背景、方法、结果三段,点按钮展开其中某一段的细节。

偏理工

三个题目都要求单页、单文件、并且有一处点击之后会发生变化,难度相当。允许更换题材,验收标准不变。

5.2上机六步

照着走,每一步都有产出。第四步是本章独有的,不要跳过,它把本章的知识点变成了可以动手做的操作。

1
写一份精简规格
三样:一句话定位、这一页有哪几块内容、三条验收标准,每条能用是或否回答
产出:规格三样
2
分两步生成
先发第一步只要结构,看完顺序和块数确认无误,再发第二步。两步的原话都留在作业文档里
产出:结构清单 + 一整段代码
3
另存、打开、自查外部资源
另存为 .html,保存类型选「所有文件」、编码 UTF-8;双击打开;再在代码里搜 http
产出:一个干净的单文件
4
三次拆解,各截一张图
轮流把样式、行为、结构注释掉,每次刷新截一张图,看是不是对应那三种坏法。截完把注释去掉复原
产出:三张故障截图
5
拿自己写的三条验收标准逐条打勾
打不上勾的记下来,改过之后再打一次。修改前先判断是哪一块,不要整版重新生成
产出:打勾表 + 一次修改记录
6
交给同组,在他的电脑上打开
只发这一个文件,不发别的。对方能打开、按钮可用,才算交付完成
产出:他人设备的运行截图
第四步之前先复制一份。注释符号是成对的,去掉的时候两边一起去掉;只去一边,页面仍然是坏的。手上留着一份原样的,复原不回来时直接换回去。

5.3共同验收标准

只有一个文件 没有单独的样式、脚本文件,也没有图片文件 查看文件夹,其中只有一个 .html
代码里没有 http 开头的外部地址 不引用网上的字体、图标、图片 在编辑器里搜 http,搜不到才算过
断网也能正常显示 配色、字体、布局都不变样 断开网络连接,刷新一次
手机宽度可读 字不用放大,没有横向滚动条 把浏览器窗口拖到手机那么窄
有一个点了会变的地方 按钮点下去,页面上确实有东西变了 点一次,再刷新页面看它是否复原
在同组同学的电脑上能打开 只发一个文件,他那边显示和你这边一致 让他截一张图发回来
能指出三大块各在哪一段 结构、样式、行为,对照代码指得出来 任取一段提问:这是哪一块

5.4常见错误与处理

页面只剩文字,内容都在
样式那一块缺失,多半是被放进了单独的样式文件
让它把样式写回同一个文件,重新给完整的一份
按钮点了没反应
行为那一块缺失,或者函数名对不上
按 F12 看 Console 的红字,把红字原文交给它
外框在,里面没有内容
结构那一块没有复制完整
回去把代码从第一行到最后一行重新全选复制
手机上整页缩成一团
少了 viewport 那一行
让它补上,或者照着 2.2 的第 5 行抄一份
同学打开时字体不一致
引用了网上的字体
搜代码里的 http,把那一行删掉,样式写进本文件
头像显示为空白图标
头像是一张网上的图,或是本地图片没有一起拷贝
改成姓氏首字加圆形底色,不使用图片
双击打开是一堆代码
存成了 .html.txt
先显示文件扩展名,重新另存,保存类型选「所有文件」
注释掉一块之后复原不回来
注释符号只去掉了一边
两边一起去掉;实在复原不了,换回第四步之前留的那一份

5.5提交内容

作品文件
一个 .html,不含任何外部资源
单个文件,不要压缩
精简规格与打勾表
一句话定位、内容块清单、三条验收标准及打勾结果
写在作业文档里
三张故障截图
分别注释掉样式、行为、结构后的样子,各配一句说明
三张截图加一句话
他人设备截图
同组同学在他电脑上打开的样子
截图,能看出并非本人的机器
作业 1 评分
占比
规格与验收标准:三样齐全,标准能用是或否判断
30%
页面完成度与可读性:内容完整、手机可读、有一处可交互
40%
跨设备可运行:单文件、无外部资源、他人电脑能打开
30%

提交方式:按教师提供的作业模板(Word)填写,文档开头注明所选题目。提交渠道见课堂通知。当堂提交。

5.6再进一步(选做)

把自己的页面发给一个不在本课程上的人,室友或家人都可以。只发文件,不作任何说明。

然后问他两个问题:这是干什么的,你会点哪里。他的回答会告诉你,你以为一看就懂的地方,别人看不看得懂。

本章小结
本章五条结论
  1. 一份网页永远是三大块:结构管有什么、样式管长什么样、行为管点了之后发生什么,位置固定在头部、body 与末尾。
  2. 三块靠两条连线挂在一起:class 相当于班级,一对多,样式靠它找到元素;id 相当于学号,一对一,脚本靠它找到元素。名字对不上,样式就落不下去,脚本也找不到人。
  3. 三种坏法互不相同:只剩文字是样式缺失,按钮没反应是行为缺失,空壳子是结构缺失。看现象反推,不必整版重新生成。
  4. 不必逐字读代码。内容在哪、样子由哪一段决定、重复的那一段在哪,三问加两条连线,就能读懂它生成的任何一份网页。
  5. 能拷给别人打开,才算做完。一个文件、不引外部资源、不使用图片,缺一样就可能只在自己的电脑上有效。
本章脉络