1 前端与 HTML
这是我参与「第五届青训营」伴学笔记创作活动的第 2 天
简介
本节课围绕以下两个基本问题展开:
(一)前端要解决的基本问题
简要介绍前端是什么、要解决的基本问题和技术栈等,层层解析前端技术栈的构成。
(二)什么是 HTML
HTML 的概念(什么是HTML)、语义化和常用的 HTML 标签。
作为前端最为基础的技术 - HTML 基础语法和基本功能,在实际研发过程中如何做到 HTML 语义化?
▲ 了解HTML高效的编写规则
课程重点
1.1 前端工作的定义
1.2 前端技术栈拆解与分析
1.3 HTML 作用解析
1.4 HTML 语义化
课前阅读预习
初步了解 HTML 基础知识:
MDN文档 「 HTML 介绍 」 HTML 简介 - 学习 Web 开发 | MDN (mozilla.org)
课后阅读材料
MDN 上的 HTML 参考,包含每个标签和属性的详细说明:
HTML elements reference - HTML: HyperText Markup Language | MDN (mozilla.org)
最新版的 W3C HTML5 规范:
HTML Standard (whatwg.org)
一、前端
(一)什么是前端
三个要点:
总结:前端工程师使用Web技术栈(HTML+CSS+JavaScript+HTTPS协议)解决多端人机交互问题
(二)前端技术栈
- HTML:页面\结构\内容
- CSS:样式设置(位置\颜色\大小)
- JavaScript:定义网页行为 响应点击等用户操作输入
【以上均于浏览器中运行】 - 网络协议(HTTP\WebSocket):浏览器通过HTTP协议与服务器端进行通信
(三)关注方面
- 无障碍性(Accessibility):不仅限于残疾人用户群体,考虑多种访问情况
对所有人均可用(例如色盲症用户)
考虑多种场景下由于各种原因限制,访问条件不佳(网络/设备)
e.g. 图片信息加载失败,需要具备替代性文本传达图片含义
e.g. 访问页面时按钮/字体极小,于户外运动状态下点击准确性
e.g. 页面颜色对比度于室内可见度高,而于太阳光极强的情况可否正常阅读
- 性能:开发网站运行速度快、动画流畅、用户体验良好
- 兼容性:网页可于各种设备上使用
【前端决定绝大程度的用户体验】
(四)边界
- Node.js 开发服务器端应用
- ELECTRON \ RN(React Native) 开发客户端应用
- Web RTC 进行P2P在线传输 实现多人会议
- WebGL 开发流畅3D游戏
- WebASSEMBLY 将C++ \ Rust等其他语言编写的代码编译为直接于浏览器运行的代码
【前端领域于互联网行业发展迅速-技术更迭 需要持续学习 入门门槛低 易上手】
(五)开发环境
二、HTML
(一)HTML是什么?
超文本标记语言 ( HyperText Markup Language )
<...>...</...>为一个标签
(二)代码结构
可省略</img>结束标签 于开始标签后直接写/ 即<.../>
<!doctype html>
<!-- 标记当前使用HTML文件对应HTML版本 决定浏览器的页面渲染方式 -->
<!-- 若不写则可能导致页面展示效果不理想 -->
<html>
<head>
<meta charset="UTF-8">
<!-- 页面使用编码类型 -->
<title>页面标题</title>
</head>
<body>
<h1>一级标题</h1>
<p>段落内容</p>
</body>
</html>
(三)DOM树
浏览器将HTML代码解析为DOM树(树形结构)
其中每个结点则称为DOM结点
(四)HTML语法
React\Vue实际应用中 大写表示自定义组件 小写表示原生组件
若某些属性值为true 则通常情况下可省略(required = true → required)
标题 h1-h6
列表
列表项使用 list item 表示
- 有序列表 ordered list
- 无序列表 unordered list
- 定义列表 definition list(Key-Value形式:属性名-属性值)
dt为列表标题 definition title
dd为具体描述 definition description
dt与dd为多对多的关系(多个dt同可对应一个dd)
链接
链接由<a>标签表示 起源于anchor锚 因常用仅保留1个字母
其最重要的属性即超链接引用地址href(Hyper Reference)
<a href="https://www.bytedance.com/">
字节跳动官网
</a>
<a href="https://www.bytedance.com/" target="_blank">
<!-- _blank表示以新标签窗口打开的样式,而不为替换原有页面 -->
字节跳动官网
</a>
除上方链接,可插入多媒体(图片、音频、视频)
<img>的alt属性(alternative text替代性文本):避免用户浏览器省流量模式-不加载图片
无法展示图片内容 以降级方式传达图片表达信息
controls表示音频需要显示浏览器默认的播放控件
输入
1.提供交互控件(输入-例如表单类)
placeholder表示占位符:用户未输入时显示
textarea:输入多行文字 且默认可调整大小
(用户输入后如何处理提交数据——JS相关课程)
2.提供交互控件(选择)
name属性实现互斥关系(相同type的多个选项若name相同则仅选择其中一个)
<select> 表示多选项的下拉选择栏
<input list=''>在用户输入时提供提示选项 辅助其进行快捷输入 BUT本质同为input 不限制自由输入
3.文本类标签
<blockquote> 块级/长引用(cite属性表示引用内容来源)
<cite> 短引用 [常表示引用书\作品名OR章节标题]
<q>:表示已提及内容
<code>或<pre><code>:使用等宽字体(特殊编程字体)
<strong>:强调-突出内容重要\含义紧急性
<em>:强调-更倾向于语气强调\重读重音词(针对问题对应的重点 例如-“猫是否为可爱的动物?”)
(五)内容划分
经典的页面布局结构:
header标签 —— 页头(头部信息-LOGO) 【不同于head标签 head仅为页面源数据】
nav标签 —— 导航信息
main标签 —— 页面主体内容
article标签(可无/可多个) —— 文章正文
aside标签 —— 不直接属于页面的相关内容(新闻的广告\热点文章推荐)
footer标签 —— 页尾(参考链接\版权\备案信息)
【总结】其余HTML5标签于其规范文档自行查阅
(六)语义化——遵循原则
(1)语义化是什么?
Chrome浏览器自动翻译功能识别HTML语言 —— 可能不准确
可定义HTML语言中的lang属性表示页面内容语言
(2)谁在使用我们写的HTML(为什么使用语义化?)
不规范:使用<div>或<span>代替<h3> 不利于团队/协作工作者维护
众多搜索引擎将抓取HTML页面,对HTML进行关键词提取、建立索引与排序(考虑出现次数,不同标签具备不同权重/优先级的相关性)
(3)语义化的好处
规范编写HTML意义:保证易读性、无障碍性等,考虑服务于多种用户与场景
(4)HTML总体原则:清晰表达内容与结构
使用标签传达其信息,而非仅调整样式(字体大小)
(5)如何做到语义化?
推荐阅读:
- MDN文档
- W3C的HTML5规范(不为W3C School)[相对冗长]
可视化工具生成代码不可控制其生成HTML标签 BUT可使用编译器插件进行辅助