From 2538702478ed7bab801de54b2b003e5bdb0c945c Mon Sep 17 00:00:00 2001 From: anqing <3250102121@zju.edu.cn> Date: Tue, 13 Oct 2026 20:15:29 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=96=B0=E5=A2=9E=20React=E3=80=81HTML?= =?UTF-8?q?/CSS=20=E4=B8=8E=20Wireshark=20=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/other-wireshark/tcp.png | Bin 0 -> 39023 bytes .../frontend-html-css.md | 81 ++++ docs/technical-development/frontend-react.md | 12 + docs/technical-development/other-wireshark.md | 454 ++++++++++++++++++ 4 files changed, 547 insertions(+) create mode 100644 docs/technical-development/assets/other-wireshark/tcp.png create mode 100644 docs/technical-development/frontend-html-css.md create mode 100644 docs/technical-development/frontend-react.md create mode 100644 docs/technical-development/other-wireshark.md diff --git a/docs/technical-development/assets/other-wireshark/tcp.png b/docs/technical-development/assets/other-wireshark/tcp.png new file mode 100644 index 0000000000000000000000000000000000000000..c56ca92f49eda0cdde7c2758c78c16311a688779 GIT binary patch literal 39023 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 AJpcdz literal 0 HcmV?d00001 diff --git a/docs/technical-development/frontend-html-css.md b/docs/technical-development/frontend-html-css.md new file mode 100644 index 0000000..b4b568a --- /dev/null +++ b/docs/technical-development/frontend-html-css.md @@ -0,0 +1,81 @@ +--- +title: HTML 与 CSS +status: unread +direction: technical-development +--- + +# HTML 与 CSS + +HTML 负责页面内容和结构,CSS 负责外观和布局。浏览器读取两者后显示网页。做页面时,先用 HTML 把内容和层级写清楚,再用 CSS 调整样式。 + +## HTML:页面结构 + +HTML 是标记语言,用元素表达页面结构。大多数元素由开始标签、内容和结束标签组成,属性用于补充信息。新建页面时,可以从下面的基本结构开始: + +```html + + + + + + 训练进度 + + + +
+

训练进度

+

已完成 2 个节点

+ 查看详情 +
+ + +``` + +`class` 通常用于给一组元素添加样式,`id` 用于标记页面中一个特定元素。优先选择表达含义的元素,例如 `main`、`nav`、`article` 和 `button`,不要只用 `div` 包住所有内容。表单控件要有对应的 `label`,图片应提供说明内容的 `alt`。 + +配套资料:[HTML 讲义(PDF)](assets/frontend-html-css/HTML.pdf)。 + +## CSS:页面样式 + +CSS 通过选择器找到 HTML 元素,再为它设置样式。下面的 `.card` 会选中 `class="card"` 的元素: + +```css +.card { + max-width: 36rem; + margin: 2rem auto; + padding: 1.5rem; + border: 1px solid #d0d7de; + border-radius: 0.75rem; +} + +.card h1 { color: #1769aa; } +``` + +规则由选择器和一组属性组成。样式可以写在元素的 `style` 属性、页面的 `