HTML教程

引言

致谢 尚硅谷、MDN、掘金、Google 等平台

本篇笔记综合以上平台相关内容,结合自己理解写成!

整理时间:🍅🍅🍅🍅🍅🍅🍅

一、前置知识

1.1 计算机先驱者

1715591509858-81f97fca-b709-41d5-b3ea-2cefc364c870

二战时期破译德军的战争编码:英格玛

让二战提前2年结束,拯救了上千万人的生命

设立图灵奖,被后人誉为:”人工智能之父”

1715591509791-ad621c09-aa52-4312-b11c-daf6e189d302

制定了现代计算机标准:冯诺依曼体系结构

提出计算机要采用二进制,明确计算机组成部分

被后人誉为:”现代计算机之父”

1.2 计算机基础知识

计算机:俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有

存储记忆功能

计算机组成:硬件(物理部件) + 软件(控制指令)

软件分类:系统软件(Windows、Linux) + 应用软件(微信、QQ)

1.3 系统结构

C/S架构:需要安装、偶尔更新、不跨平台、开发更具针对性

B/S架构:无需安装、无需更新、可跨平台、开发更具通用性

名词解释:C => client(客户端)、B => browser(浏览器)、S => server(服务器)

前端工程师:主要负责编写 B/S架构中的网页(呈现界面、实现交互)

1.4 浏览器相关

浏览器:是网页运行的平台,常见的有谷歌(Chrome) 、 Edge、 IE 、 火狐(Firefox)等

浏览器内核:浏览器最核心的部分,负责对网页语法的解释并渲染网页,常见的有webkit内核、Blink内核、

Trident内核、Gecko内核等

image-20240926162701142

浏览器原理:

Google开发者团队指导:https://web.dev/about?hl=zh-cn

Google文档:https://developer.chrome.com/docs?hl=zh-cn

《深入了解现代网络浏览器》

https://developer.chrome.com/blog/inside-browser-part1

https://developer.chrome.com/blog/inside-browser-part2

https://developer.chrome.com/blog/inside-browser-part3

https://developer.chrome.com/blog/inside-browser-part4

1.5 网页相关

网址:我们在浏览器中输入的地址

网页:浏览器所呈现的每一个页面

网站:多个网页构成了一个网站

网页标准:HTML(结构)、CSS(表现)、JavaScript(行为)

1.6 其他

1.6.1 ⽂件夹、⽂件命名规则

  • ⽂件夹名称 和 ⽂件名称 使⽤⼩写,⽤ 短横线 来分隔
  • ⽆空格、⽆下划线

1.6.2 代码命名规则

变量/函数 “小驼峰式命名法”

常量 “全部大写 + 下划线”

类的私有属性/方法 “_小驼峰式命名法”

1.6.2 网站结构

  • index.html主⻚
  • images⽂件夹
  • styles⽂件夹
  • scripts⽂件夹

二、HTML简介

2.1 什么是HTML

HTML:(超文本标记语言 - HyperText Markup Language)

  • 定义网页内容的含义和结构
  • “超⽂本”(hypertext)是指连接单个⽹站内或多个⽹站间的网页链接
  • “标记”(markup)来注明⽂本、图片和其他内容
  • HTML标签⾥的元素名不区分⼤⼩写

HTML文件后缀名:.html.htm

元素间对空格、换行、缩进等形成的空白不敏感,有无空白对在浏览器中加载的效果没有影响

HTML中的空白折叠现象: ⽆论你在HTML元素的内容中使⽤多少空格(包括⼀个或多个空⽩字符或换⾏),当渲染这些代

码的时候,HTML解释器会将连续出现的空⽩字符减少为⼀个单独的空格符

和XML的区别

image-20240927215419478

2.2 相关国际组织

W3C(万维网联盟):https://www.w3.org/

2.3 HTML发展历史

image-20240926201109337

2.4 开发者文档

W3School:https://www.w3school.com.cn/

MDN:https://developer.mozilla.org/zh-CN/docs/learn/HTML

2.5 HTML语法检查

网站:https://validator.w3.org/

2.6 SEO

2.6.1 SEO权重标签

突出网页中关键词或重要主题的HTML标签、语义化清晰的标签

2.6.2 SEO标签属性

突出网页中关键词的HTML标签属性,如meta的name属性(keywords、description),超级链接和图片的title、alt属性

三、准备工作

3.1 安装VSCode_代码编辑器

网址:https://code.visualstudio.com/

插件:

  1. Chinese (Simplified) (简体中文) Language Pack
  2. Live Server

快捷键:

image-20240926203541949

3.2 安装Chrome_浏览器

网址:https://www.google.cn/chrome/

四、HTML4基础

HTML4.01诞生于1999年

4.1 第一个Hello World

学一门新的编程语言,最最最开始的第一步就是写一个Hello World

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hello World</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>

1715591509836-a285ca72-95c6-4d2e-a3bd-39d78c346edc

4.2 HTML文档声明 DTD

作用:告诉浏览器当前网页的版本

1
2
3
4
5
<!DOCTYPE html>  //代表HTML5版本解析该网页

<!DOCTYPE HTML>

<!doctype html>

注:必须在网页的第一行,且在html标签的外侧

DOCTYPE(⽂档类型) 的作用?

DOCTYPE是HTML5中一种标准通用标记语言的文档类型声明,它的目的是告诉浏览器(解析器)应该以什么样

(html或xhtml)的文档类型定义来解析文档,不同的渲染模式会影响浏览器对 CSS 代码甚⾄ JavaScript 脚本的

解析。它必须声明在HTML⽂档的第⼀⾏。

浏览器渲染页面的两种模式(可通过document.compatMode获取)

  • CSS1Compat:标准模式(Strick mode),默认模式,浏览器使用W3C的标准解析渲染页面。在标准模式中,浏览器以其支持的最高标准呈现页面。
  • BackCompat:怪异模式(混杂模式)(Quick mode),浏览器使用自己的怪异模式解析渲染页面。在怪异模式中,页面以一种比较宽松的向后兼容的方式显示。

标准模式和怪异模式的区别:

  1. 盒模型的差异:

  2. 标准模式 - W3C盒模型 - 盒子总宽度/高度 = 内容区宽度/高度 + padding + border + margin

  3. 怪异模式 - IE盒模型 - 盒子总宽度/高度 = width/height + margin

    1716948331492-6beb7bf2-0473-4072-b776-90d29f652bf7

4.3 HTML基本结构/元信息

Quick写法:vscode中输入 ! 快速生成基本结构

1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>标题</title>
</head>
<body>
</body>
</html>

<html>元素

  • lang属性

    • 为站点设定语⾔ <html lang="zh-CN"> / <html lang="en">
    • 为分段设定语⾔ <p>Japanese example: <span lang="ja">ご飯が熱い。</span>.</p>
  • 命名空间xmlns

<head>元素

  • <meta>元素(详见:4.11)

  • <title>元素 - 唯一必须的元素

    • 网页的标题
    • 页面标签的建议名,提高SEO搜索引擎的优化
    • 显示在搜索引擎结果页面的标题
    • 收藏夹默认的书签名称
  • <link>元素

    • ⾃定义网站图标

      • <link rel="icon" href="favicon.ico" type="image/x-icon" />
      • <link rel="icon" type="image/svg" href="favicon.svg">
      • 如果修改图标文件,对应网页上未更新,请Ctrl + F5强制刷新
    • 引⽤CSS⽂件 <link rel="stylesheet" href="my-css-file.css" />

    • link元素如果写在body标签内部结构后面,会先显示没有样式的元素,然后加载样式,发现样式改变,重新渲染元素

    • 建议写在head标签内部

  • <script>元素

    • 加载JS⽂件 <script src="my-js-file.js" defer></script>

      • defer属性

        • 请求脚本的网络是异步的,不会阻止浏览器解析HTML,等待HTML解析完再执行JS代码
      • async属性

        • 请求脚本的网络是异步的,不会阻止浏览器解析HTML,暂停解析HTML
    • 直接在标签内书写JS代码

  • <style>元素

    • 直接在标签内书写CSS代码【内嵌样式表】
  • <base>元素

    • 该标签作为HTML⽂档中所有的链接标签的默认链接

<body>元素

注:

  1. 在存放代码的文件夹中,存放一个 favicon.ico 图片,可配置网站图标

4.3.1 元数据内容标签

1
2
3
4
5
6
7
8
<title>
<base>
<link>
<meta>
<style>
<script>
<noscript>
<template>

4.4 HTML标签

标签:又称元素,是HTML的基本组成元素

  • 双标签:<标签名>标签体</标签名>
  • 单标签:<标签名/>
    • 仅一个开始标签
    • 用于在元素所在位置插入/嵌入一些内容
    • 在开始标签加斜杠,是关闭空元素的正确⽅法

标签名:不区分大小写,但推荐小写,因为小写更规范

标签之间的关系:

  • 并列关系
  • 嵌套关系
    • 一个元素置于其他元素之中
    • 元素嵌套顺序要正确

容器级标签和文本级标签

容器级标签:可以存放任意内容

文本级标签:只能存放文字或类似文字的内容

4.4.1 排版标签

1715592035335-f9e59080-6873-4b17-84c5-e8fb430728ac

注:

  1. h1标签至多一个,h2 ~ h6可多写(约定俗称)
  2. h1 ~ h6不能互相嵌套
  3. h1到h6重要程度递减
  4. <hgroup>标签 组合标题
  5. 每个页面最好不超过三个标题层次
  6. p标签内部不能写排版标签(甚至不能写块级标签)

4.4.2 语义化标签

语义化标签的理解?

语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化)

语义化的优点如下:

  • 代码结构清晰,可读性强
  • 有利于SEO,即搜索引擎优化

常见的语义化标签:

注:

  1. 标签的默认效果不重要(后面可以通过CSS任意修改)

  2. SEO中的TDK:title、description、keywords这三个标签,title表示标题标签,description是描述标签,

    keywords是关键词标签

4.4.3 块级标签与行内标签

块级标签/块级元素:独占一行(排版标签是块级标签)

行内标签/内联元素:不独占一行(input标签、img标签)

注:

  1. 块级标签中能写块级标签和行内标签,占据父元素全部宽度
  2. 行内标签能写行内标签,不能写块级标签,占据必要的宽度

4.4.4 文本标签

概念:文本标签用于包裹短语、词汇等,通常都是行内标签

通常写在排版标签中:排版标签更宏观(大段的文字),文本标签更微观(词汇、短语)

常用文本标签:

1715592147087-ff5ceb74-edb5-4c97-8b01-ba141e51d182

不常用文本标签:

1715592165291-1eec6e42-9373-44c4-9210-f07e01d12e2c

4.4.5 图片标签

1715592242937-67e135ce-8396-4fb1-8420-fa3343e4ba4b

border属性

  • 边框属性,可以设置边框的厚度

title属性

  • 设置提示文字

src属性值(图片路径):

引⽤⽂件路径的通⽤规则

  • 若引⽤的⽬标⽂件与HTML⽂件同级,只需直接使⽤⽂件名,例如:my-image.jpg

  • 要引⽤⼦⽬录中的⽂件,请在路径前⾯写上⽬录名,再加上⼀个正斜杠,例如:subdirectory/my-

    image.jpg

  • 若引⽤的⽬标⽂件位于HTML⽂件的上级,需要加上两个点。例如:../my-image.jpg

  • 以上⽅法可以随意组合,⽐如:../subdirectory/another-subdirectory/my-image.jpg

alt属性的作用:

  • 搜索引擎通过alt属性,得知图片内容
  • 图片无法展示时,显示alt属性的值
  • 盲人阅读器会阅读alt属性的值

width、height属性

  • 设置一个,另一个等比缩放
  • 同时设置,图片会被拉伸

常见图片格式:

1
jpg、png、bmp、gif、webp、base64

<figure>元素 <figcaption>元素

  • 为图⽚提供⼀个语义容器,在标题和图⽚之间建⽴清晰的关联
  • figure⾥可以任意的独⽴内容单元
1
2
3
4
5
6
7
<img src="images/MyTestImage.jpg" alt="⻛景图" width="200" height="200" title="⻛景图">
<figure>
<img src="images/MyTestImage.jpg" alt="⻛景图" width="200" height="200" title="⻛景图">
<figcaption>
这是⼀张⻛景图⽚
</figcaption>
</figure>

响应式图片

srcset属性

  • 定义了浏览器可选择的图⽚设置以及每个图⽚的⼤⼩
  • 每张图⽚信息的设置和前⼀个⽤逗号隔开
  • 每个设置 ⼀个⽂件名 ⼀个空格 图⽚的固有宽度

sizes属性

  • 定义了⼀组媒体条件(例如屏幕宽度)并且指明当某些媒体条件为真时,什么样的图⽚尺⼨是最佳选择

  • 每个设置 ⼀个媒体条件 ⼀个空格 当媒体条件为真时,图像将填充的槽的宽度

    sizes="[media query] [length], [media query] [length] ... "

1
2
3
4
5
6
<img
srcset="images/elva-fairy-480w.jpg 480w, images/elva-fairy-800w.jpg 800w"
sizes="(max-width: 600px) 480px,
800px"
src="images/elva-fairy-800w.jpg"
alt="Elva dressed as a fairy" />

分辨率切换:相同的尺⼨,不同的分辨率

  • 不需要sizes属性,系统会根据屏幕的分辨率⾃动选择合适的图⽚
1
2
3
4
<img
srcset="elva-fairy-320w.jpg, elva-fairy-480w.jpg 1.5x, elva-fairy-640w.jpg 2x"
src="elva-fairy-640w.jpg"
alt="Elva dressed as a fairy" />

src和href的区别?

src和href都是用来引用外部的资源,它们的区别如下:

  • src:表示对资源的引用,它指向的内容会嵌入到当前标签所在的位置。src会将其指向的资源下载并应⽤到⽂档内,如请求js脚本。当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执⾏完毕,所以⼀般js脚本会放在页面底部。
  • href:表示超文本引用,它指向一些网络资源,建立和当前元素或本文档的链接关系。当浏览器识别到它他指向的⽂件时,就会并⾏下载资源,不会停⽌对当前⽂档的处理。 常用在a、link等标签上。

4.4.6 超链接标签

1715592345508-59fc8756-5675-4a4d-88d2-d53e3a0e347a

注:

  1. title属性:鼠标悬停进行文字提示,是有必要的!

  2. download属性:提供一个默认的保存文件名

  3. 如何写一个块级链接?

    1. 将块级元素包裹在<a>元素中

      1
      <a href=" https://www.baidu.com" title="搜索引擎" target=”_blank”><h1>百度</h1></a>
  4. 统一资源定位符 URL

    1. 定义在⽹络上的位置的⼀个⽂本字符串

    2. 万维网用url统一资源定位符标识分布因特网上的各种文档

    3. 格式

      1. scheme://host.domain:port/path/filename
      2. scheme - 定义因特⽹服务的类型。最常⻅的类型是 http
      3. host - 定义域主机(http 的默认主机是 www)
      4. domain - 定义因特⽹域名,⽐如 runoob.com
      5. :port - 定义主机上的端⼝号(http 的默认端⼝号是 80)
      6. path - 定义服务器上的路径(如果省略,则⽂档必须位于⽹站的根⽬录中)
      7. filename - 定义⽂档/资源的名称
    4. URL Scheme1716364472610-34deeb27-cdb8-48ea-8e1b-bd1c38ad4444

    5. 绝对URL和相对URL

    6. 注意

      1. 不要将URL作为链接⽂本的⼀部分
      2. 不要在链接⽂本中说链接或链接到
      3. 保持链接⽂本尽可能短
      4. 尽量减少相同⽂本的多个副本链接到不同地⽅的情况
  5. 假链接中我们通常在a标签的href中添加什么能使得页面不跳转?

  6. a标签未添加href属性,是不能获取焦点的

写法:

  • 跳转至指定页面
1
2
3
4
<!-- 跳转其他网页 -->
<a href="https://www.jd.com/" target="_blank">去京东</a>
<!-- 跳转本地网页 -->
<a href="./10_HTML排版标签.html" target="_self">去看排版标签</a>
  • 跳转至指定文件
    • 若浏览器无法打开文件,会引导用户下载文件
    • 若想强制触发下载,请使用 download 属性,属性值即为下载文件的名称

1
2
3
4
5
6
7
8
9
<!-- 浏览器能直接打开的文件 -->
<a href="./resource/自拍.jpg">看自拍</a>
<a href="./resource/小电影.mp4">看小电影</a>
<a href="./resource/小姐姐.gif">看小姐姐</a>
<a href="./resource/如何一夜暴富.pdf">点我一夜暴富</a>
<!-- 浏览器不能打开的文件,会自动触发下载 -->
<a href="./resource/内部资源.zip">内部资源</a>
<!-- 强制触发下载 -->
<a href="./resource/小电影.mp4" download="电影片段.mp4">下载电影</a>
  • 跳转至锚点位置

    • 设置瞄点

      • name 和 id 都是区分大小写的,且 id 最好别是数字开头

      • 具有 href 属性的 a 标签是超链接,具有 name 属性的 a 标签是锚点

        • <!-- 第一种方式:a标签配合name属性 -->
          <a name="test1"></a>
          <!-- 第二种方式:其他标签配合id属性 -->
          <h2 id="test2">我是一个位置</h2>
          
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28

          - 跳转瞄点

          - ```html
          <!-- 跳转到test1锚点-->
          <a href="#test1">去test1锚点</a>
          <!-- 跳到本页面顶部 -->
          <a href="#">回到顶部</a>
          <!-- 跳转到其他页面锚点 -->
          <a href="demo.html#test1">去demo.html页面的test1锚点</a>
          <!-- 刷新本页面 -->
          <a href="">刷新本页面</a>
          <!-- 执行一段js,如果还不知道执行什么,可以留空,javascript:; -->
          <a href="javascript:alert(1);">点我弹窗</a>
          <a href="javascript:void(0);">点我弹窗</a> <!-- 防止a标签跳转 -->
          <a href="javascript:;">点我弹窗</a> <!-- 防止a标签跳转 -->

          - 唤起指定应用

          - ```
          <!-- 唤起设备拨号 -->
          <a href="tel:10010">电话联系</a>
          <!-- 唤起设备发送邮件 -->
          <a href="mailto:10010@qq.com">邮件联系</a>
          <a href="mailto:nowhere@mozilla.org?cc=name2@rapidtables.com&bcc=name3@rapidtables.com&subject=The%20subject%20of%20
          the%20email&body=The%20body%20of%20the%20email"> 发送含有 cc、bcc、主题和主体的邮件</a>
          <!-- 唤起设备发送短信 -->
          <a href="sms:10086">短信联系</a>

1716434595284-189021d5-3ea5-4a18-bceb-93b2d74ccb43

4.4.7 列表标签

  • 有序列表
1
2
3
4
5
<ol>
<li>第一步</li>
<li>第二步</li>
<li>第三步</li>
</ol>
  • 无序列表
1
2
3
4
5
6
<ul>
<li>成都</li>
<li>上海</li>
<li>西安</li>
<li>武汉</li>
</ul>
  • 描述列表
1
2
3
4
5
6
7
8
9
<dl>
<dt>做好笔记</dt>
<dd>笔记是我们以后复习的一个抓手</dd>
<dd>笔记可以是电子版,也可以是纸质版</dd>
<dt>多加练习</dt>
<dd>只有敲出来的代码,才是自己的</dd>
<dt>别怕出错</dt>
<dd>错很正常,改正后并记住,就是经验</dd>
</dl>

注:

  1. 列表可以嵌套使用,形成多级列表
  2. li元素的祖先元素可能是li,但父元素不可能是li
  3. 一组dl标签最好只有一组dt和dd

4.4.8 表格标签

概念:一个完整的表格由:表格标题、表格头部、表格主体、表格脚注,四部分组成

图示:

1715591509843-e0694b69-1fed-434b-aa7d-3ab53e6fcdab 1715591510474-80e3bc61-4a09-4465-b6d8-1f78ba91596f

基本代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<table border="1">
<!-- 表格标题 -->
<caption>
学生信息
</caption>
<!-- 表格头部 -->
<thead>
<tr>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>民族</th>
<th>政治面貌</th>
</tr>
</thead>
<!-- 表格主体 -->
<tbody>
<tr>
<td>张三</td>
<td></td>
<td>18</td>
<td>汉族</td>
<td>团员</td>
</tr>
<tr>
<td>李四</td>
<td></td>
<td>20</td>
<td>满族</td>
<td>群众</td>
</tr>
<tr>
<td>王五</td>
<td></td>
<td>20</td>
<td>回族</td>
<td>党员</td>
</tr>
<tr>
<td>赵六</td>
<td></td>
<td>21</td>
<td>壮族</td>
<td>团员</td>
</tr>
</tbody>
<!-- 表格脚注 -->
<tfoot>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td>共计:4人</td>
</tr>
</tfoot>
</table>

常用属性:

1715591510869-40554077-4646-4f57-8ab8-e0fecdaf7ebcimg

注:

  1. 元素的 border 属性可以控制表格边框,但 border 值的大小,并不控制单元格边框的宽度,只能控制表格最外侧边框的宽度
  2. 默认情况下,每列的宽度,得看这一列单元格最长的那个文字
  3. 给某个 th 或 td 设置了宽度之后,他们所在的那一列的宽度就确定了
  4. 给某个 th 或 td 设置了高度之后,他们所在的那一行的高度就确定了
  5. <table><tr><td></td></tr></table>这么写也是可以的

单线表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table border="2" style="border-collapse: collapse;">
<tr>
<td>1-1</td>
<td>1-2</td>
<td>1-3</td>
<td>1-4</td>
</tr>
<tr>
<td>2-1</td>
<td>2-2</td>
<td>2-3</td>
<td>2-4</td>
</tr>
</table>

image-20240927160511345

跨行跨列:

rowspan:指定要跨的行数

colspan :指定要跨的列数

制作技巧:

  • 先列出所有行<tr>,以最小单元格为标准
  • 再添加每一行的td和th

小练习:

1715591510939-9b3396bb-4191-4102-8964-1e1fd0b70d12img

image-20240927160843371

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<table border="2" style="border-collapse: collapse; width: 500px;">
<tr>
<td colspan="2">1</td>
<td rowspan="2">2</td>
<td colspan="2">3</td>
</tr>
<tr>
<td>4</td>
<td rowspan="2">5</td>
<td>6</td>
<td rowspan="2">7</td>
</tr>
<tr>
<td rowspan="2">8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>11</td>
<td colspan="2">12</td>
<td>13</td>
</tr>
</table>

4.4.9 表单标签

概念:收集用户提供的数据,向Web服务器提交信息

1715591511640-d8e6c0c3-0ce3-46b8-a3b0-163dacdc6ebb

1
2
3
4
<form action="https://www.baidu.com/s" target="_blank" method="get" name="first">
<input type="text" name="wd" />
<button>去百度搜索</button>
</form>

1715593450505-c670619c-0b29-45cc-adc3-88a7e9837f4e

enctype属性

1716619414153-86461ebc-b6d4-4e2c-ac95-2fe66bb2fbef

input标签属性

  • type、name、value、size、checked、maxlength

常用表单控件:

1715593534051-84e6a5d5-c113-4c74-a71e-92de50d26b68

img

1715593584562-0eb7eeaa-e950-4d0f-b8c5-7e891dd533d5

解决文本框被拖拽的方法

在CSS样式中设置resize:none

select标签中的optgroup标签 - 分组管理

​ label属性:为这一组选项添加分组标签名

image-20240927164655749

1
2
3
4
5
6
7
8
9
10
11
<form action="xxx">
<select name="" id="">
<optgroup label="中国">
<option value="辽宁">辽宁</option>
<option value="上海">上海</option>
</optgroup>
<optgroup label="俄罗斯">
<option value="莫斯科">莫斯科</option>
</optgroup>
</select>
</form>
1
图像上传:<input type="image" src="/1.jpg">
1
2
单个文件上传:<input type="file">
多个文件上传:<input type="file" multiple="multiple">

禁用表单控件:

  • 给表单控件的标签设置 disabled 既可禁用表单控件
  • inputtextareabuttonselectoption 都可以设置 disabled 属性

<label>标签:

 `label` 标签可与表单控件相关联,关联之后点击文字,与之对应的表单控件就会获取焦点  

两种与 label 关联方式如下:

  • 让 label 标签的 for 属性的值等于表单控件的 id
1
2
3
4
5
<form action="https://www.baidu.com/s" target="_blank" method="get">
<label for="keyword">获取输入框焦点</label>
<input id="keyword" type="text" name="wd" />
<button>去百度搜索</button>
</form>

1715593969632-a242e43e-332a-41bf-b58c-5e91a34bea11

  • 把表单控件套在 label 标签的里面
1
2
3
4
5
6
7
<form action="https://www.baidu.com/s" target="_blank" method="get">
<label>
点我获取焦点
<input id="keyword" type="text" name="wd" />
</label>
<button>去百度搜索</button>
</form>

1715594031006-225abaf6-ddd8-4b8f-b0c2-afda06130535

fieldset 与 legend 的使用(了解):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<fieldset>
<legend>主要信息</legend>
<label for="zhanghu">账户:</label>
<input id="zhanghu" type="text" name="account" maxlength="10" /><br />
<label>
密码:
<input id="mima" type="password" name="pwd" maxlength="6" />
</label>
<br />
性别:
<input type="radio" name="gender" value="male" id="nan" />
<label for="nan"></label>
<label>
<input type="radio" name="gender" value="female" id="nv" />
</label>
</fieldset>

1715598623484-683339b2-c040-48a5-894d-62661eb1969d

<optgroup>标签

1
2
3
4
5
6
7
8
9
10
<select>
<optgroup label="Swedish Cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
</optgroup>
<optgroup label="German Cars">
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</optgroup>
</select>

1716948953319-d4e22e2e-88fe-4d05-bb5a-2a755ac2ec39

4.4.10 框架标签

1715598669456-403bce0c-4d91-4b75-b444-f1ddc30bccd0

iframe标签的实际应用:

  • 在网页中嵌入广告
  • 与超链接 / 表单的target配合,展示不同的内容

iframe标签阻塞页面加载的问题:

  • 在 Safari 和 Chrome 里,通过 JavaScript 动态设置 iframe 的 SRC 可以避免这种阻塞情况

iframe标签的使用场景:

  • 与第三方域名下的页面共享cookie
  • 上传图片,避免当前页刷新
  • 左边固定、右边自适应布局
  • 资源加载

4.4.11 矢量图形标签

<svg>标签

4.4.12 其他标签

1715591511785-b8132c12-a89f-41e0-99ee-477fb0926855

注:

  1. 不要用 <br> 来增加文本之间的行间隔,应使用 <p>元素,或后面即将学到的 CSS
  2. <hr> 的语义是分隔,如果不想要语义,只是想画一条水平线,那么应当使用 CSS 完成

4.5 HTML标签属性

标签属性:给标签提供附加信息,不显示在内容中,写在双标签的起始位置 / 单标签中

1
<标签名 key = "value"></标签名>

包含:

  • 在属性与元素名称(或上⼀个属性,如果有超过⼀个属性的话)之间的空格符
  • 属性的名称,并接上⼀个等号
  • 由双引号所包围的属性值
  • ⼀种引号可以嵌套另⼀种引号

布尔属性:

  • 只有⼀个值,如:<input type="text" disabled />

注:

  • 有些标签属性没有属性名,只有属性值,如 disabled
  • 不同的标签有不同的属性,也有一些通用属性
  • 属性名、属性值不能乱写,都是W3C规定好的
  • 属性名、属性值,都不区分大小写,但推荐小写
  • 标签中不要出现同名属性,否则后写的会失效
  • 有的属性可以有多个属性值,比如 class ,写在同一个引号中,用空格分隔

4.6 HTML注释

概念:注释的内容会被浏览器忽略,在源码中可见

写法:

1
<!-- 注释内容 -->

注:

  • 注释不可以嵌套

4.7 HTML字符编码

计算机对数据的操作:

  • 编码:存储数据
  • 解码:读取数据

编码和解码遵循一定的规范 – 字符集

字符集:

  • ASCII :大写字母、小写字母、数字、一些符号,共计128个
  • ISO 8859-1 :在 ASCII 基础上,扩充了一些希腊字符等,共计是256个
  • GB2312 :继续扩充,收录了 6763 个常用汉字、682个字符
  • GBK :收录了的汉字和符号达到 20000+ ,支持繁体中文
  • UTF-8 :包含世界上所有语言的:所有文字与符号(常用)

使用原则:

  • 存储时,采用合适的字符编码
  • 存储的编码方式和读取的解码方式要一致
  • 统一采用UTF-8编码

写法:

1
2
3
<head>
<meta charset="UTF-8"/>
</head>

4.8 HTML语言设置

作用:

  • 让浏览器显示对应的翻译提示
  • 有利于搜索引擎优化

写法:

1
2
3
4
5
6
7
8
9
10
11
12
<!-- 中文-中国大陆 -->
<html lang="zh-CN">
<!-- 中文-中国台湾 -->
<html lang="zh-TW">
<!-- 中文 -->
<html lang="zh">
<!-- 英语-美国 -->
<html lang="en-US">
<!-- 英语-英国 -->
<html lang="en-GB">
<!-- 英语 -->
<html lang="en">

4.9 HTML实体

概念:字符实体由三部分组成:一个&和一个实体名称(或者一个#和一个实体编号),最后加上一个分号;

1715598890798-14253f4e-f988-4cb5-bc51-91386610dfd7

4.10 HTML全局属性

1715598935111-0f365ee3-901e-44d5-bfad-b888ab666c7a

4.11 meta元信息

1715599031455-bf102ae3-2325-4b54-a5e0-3f4493514f05

img

注:

  1. 文档编码和meta标签中的字符编码要一致,否则会出现乱码
  2. <meta>标签中name等于viewportcontent值为:

1716439364811-a5ca4081-1acc-4ce9-aa2d-c111cf7f1485

  1. 字符集编码
    1. 种类
      1. UTF-8【国际通用】
      2. gb2312【中文国标】
      3. gbk【中文国标、收录汉字更多】
    2. 字符编码使用建议
      1. 若无网页加载速度要求 / 制作外文网站 - 选择utf-8
      2. 网页含有大量中文,要求加载速度较快 - 选择gbk
      3. meta规定的字符集要和编辑器的字符集一致

4.12 HTML颜色

  • 由红⾊、绿⾊和蓝⾊组成的值
  • 每种颜⾊的最⼩值是0(⼗六进制:#00),最⼤值是255(⼗六进制:#FF)
  • Web安全⾊ 216种
  • 颜⾊名 141种

4.13 HTML脚本

<script> 标签

<noscript> 标签:若浏览器不支持script脚本,作为备选方案

script标签中defer和async的区别?

如果没有defer或async属性,浏览器会立即加载并执行相应的脚本。它不会等待后续加载的文档元素,读取到就

会开始加载和执行,这样就阻塞了后续文档的加载。

defer 和 async属性都是去异步加载外部的JS脚本文件,它们都不会阻塞页面的解析,其区别如下:

  • 执行顺序: 多个带async属性的标签,不能保证加载的顺序;多个带defer属性的标签,按照加载顺序执行;

  • 脚本是否并行执行:async属性,表示后续文档的加载和执行与js脚本的加载和执行是并行进行的,即异步执

    行;defer属性,加载后续文档的过程和js脚本的加载(此时仅加载不执行)是并行进行的(异步),js脚本需要等到

    文档所有元素解析完成之后才执行,DOMContentLoaded事件触发执行之前。

4.14 Frames

1
2
3
4
<frameset cols="25%,75%">
<frame src="../asdocs/html_tutorials/Frame_a.html">
<frame src="../asdocs/html_tutorials/Frame_b.html">
</frameset>

4.15 data-* 自定义数据

1
2
3
4
5
<p id="pid" data-name="磊">这是一个段落标签</p>
<script>
const p = document.getElementById('pid');
console.log(p.dataset.name);
</script>

1716949245681-bd5ec8eb-09a5-4dbe-9f14-685aafdbb49a

五、HTML5基础

5.1 HTML5简介

5.1.1 什么是HTML5

  • HTML5 是新一代的 HTML 标准,2014年10月由万维网联盟( W3C )完成标准制定

  • 官网地址:

  • WHATWG 提供: https://html.spec.whatwg.org/multipage/index.html

  • HTML5 在狭义上是指新一代的 HTML 标准,在广义上是指:整个前端

5.1.2 HTML5优势

  1. 针对 JavaScript ,新增了很多可操作的接口
  2. 新增了一些语义化标签、全局属性
  3. 新增了多媒体标签,可以很好的替代 flash
  4. 更加侧重语义化,对于 SEO 更友好
  5. 可移植性好,可以大量应用在移动设备上

5.1.3 HTML5兼容性

  • 支持:ChromeSafariOperaFirefox 等主流浏览器
  • IE浏览器必须是 9 及以上版本 才支持,且IE9仅支持部分HTML5新特性

5.1.4 HTML5设计目的

为了在移动设备上支持多媒体

5.2 新增语义化标签

5.2.1 布局标签

1716187062456-3b9e242d-a21f-4067-9b00-d561d8d630f0

1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
<header>
<nav></nav>
</header>
<main>
<article>
<section></section>
<section></section>
</article>
<aside></aside>
</main>
<footer></footer>
</body>

IE9以下浏览器不支持,需要转为块元素:

header,nav… {

​ display:none

}

5.2.2 状态标签

meter标签

  • 定义已知范围内的标量测量,也被称为尺度
  • 双标签
  • 例如电量、磁盘用量等
  • 常用属性

1716187372242-3f6908e9-e3d9-43ad-b854-a8fe755086ff

progress标签

  • 显示某个任务完成的进度的指示器,一般用于表示进度条
  • 双标签
  • 例如工作完成进度等
  • 常用属性

1716187448882-b06907b0-1a8d-475d-81e3-96a5d88e5a4c

5.2.3 列表标签

1716187721292-73e45738-9a44-4e63-a729-dfd532eb9c12

5.2.4 文本标签

文本注音

1716188975465-96bcec75-10e8-44d8-8582-88bd00143c3b

文本标记

1716188985498-b480c73c-43f4-47d3-9bdd-98dc52c1da87

5.2.5 画布标签

<canvas>标签

5.2.6 其他标签

<embed>标签

​ 定义了一个容器,用来嵌入外部应用或者互动程序(插件)【不建议使用】

<small>标签

<menu>标签

​ 定义菜单列表。当希望列出表单控件时使用该标签

<command>标签

​ 定义命令按钮,比如单选按钮、复选框或按钮

<manifest>标签

<picture>标签

已删除的标签

1
<big><center><font><tt><strike>

5.3 新增表单功能

5.3.1 表单控件新增属性

1716189067788-d176a227-b78e-4f86-90eb-ff03b6aa0778

list属性

规定输⼊域的 datalist(datalist 是输⼊域的选项列表)

1
2
3
4
5
6
7
8
<input list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>

minmax 属性

​ 适⽤于以下类型的<input> 标签 date pickersnumber 以及 range

multiple 属性

​ ⼀个 boolean 属性

​ 规定 元素中可选择多个值

step 属性

​ 为输⼊域规定合法的数字间隔

​ 如果 step=”3”,则合法的数是 -3,0,3,6

​ step 属性可以与 max 和 min 属性创建⼀个区域值

5.3.2 input新增type属性值

1716189107359-a4a3cf63-25f4-420d-85a3-e5db3a4e951f

date 和 datetime-local

1
2
<input type="date" name="bday">
<input type="datetime-local" name="bdaytime">

1716615846694-d9652195-c342-4ba7-ae6c-5dc28adf632b

  • 两者都可以绘制日历
  • 后者可以显示本地时间,时间可以修改
  • 日历的样式可以通过CSS修改
  • 日历的样式可应用于多个浏览器

5.3.3 form标签新增属性

1716189137752-a419c0de-ab1c-48d4-b0d4-fb9f601182a6

5.3.4 新增表单控件

<keygen> 元素

  • 提供⼀种验证⽤户的可靠⽅法
  • 规定⽤于表单的密钥对⽣成器字段
  • 当提交表单时,会⽣成两个键,⼀个是私钥,⼀个公钥
  • 私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可⽤于之后验证⽤户的客户端证书(client certificate)

<output> 元素

  • ⽤于不同类型的输出,⽐如计算或脚本输出
1
2
3
4
5
<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0
<input type="range" id="a" value="50">100 +
<input type="number" id="b" value="50">=
<output name="x" for="a b"></output>
</form>

5.4 新增多媒体标签

video标签

1716189268921-bdeb24df-0ea1-463c-84b2-b20a6ca2d8a2

audio标签

1716189294229-c67e129e-52c1-47da-a50e-b64b24ba97e1

方法:load() play() pause()

事件:play() playing() pause() seeked() seeking() abort()

<source>标签

track标签

注:

  • <audio></audio>之间插入的内容是供不支持audio元素的浏览器显示的
  • audio标签要加controls属性才能出现音频控制界面

5.5 新增全局属性

1716189386385-053d121a-69b5-46a8-bfbe-4dbfde2c07b7

5.6 兼容性处理

  • 添加元信息,让浏览器处于最优渲染模式
1
2
3
4
<!--设置IE总是使用最新的文档模式进行渲染-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<!--优先使用 webkit ( Chromium ) 内核进行渲染, 针对360等壳浏览器-->
<meta name="renderer" content="webkit">
  • 使用 html5shiv 让低版本浏览器认识 H5 的语义化标签
1
2
3
<!--[if lt ie 9]>
<script src="../sources/js/html5shiv.js"></script>
<![endif]-->
  • 扩展

lt 小于

lte 小于等于

gt 大于

gte 大于等于

! 逻辑非

  • 示例
1
2
3
4
5
6
<!--[if IE 8]>仅IE8可见<![endif]-->
<!--[if gt IE 8]>仅IE8以上可见<![endif]—>
<!--[if lt IE 8]>仅IE8以下可见<![endif]—>
<!--[if gte IE 8]>IE8及以上可见<![endif]—>
<!--[if lte IE 8]>IE8及以下可见<![endif]—>
<!--[if !IE 8]>非IE8的IE可见<![endif]-->

5.7 添加新元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>为 HTML 添加新元素</title>
<script>
document.createElement("myHero");
</script>
<style>
myHero {
display: block;
background-color: #ddd;
padding: 50px;
font-size: 30px;
}
</style>
</head>
<body>
<h1>我的第⼀个标题</h1>
<p>我的第⼀个段落。</p>
<myHero>我的第⼀个新元素</myHero>
</body>
</html>

5.8 本地存储

新增两种数据存储方式:

1
WebStorage

分为 localStoragesessionStorage

参考:https://blog.csdn.net/zhuanzhuantech/article/details/132049687

1
WebSQLDatabase

参考:https://blog.csdn.net/aa390481978/article/details/91125586

5.9 WebSocket

1
前端

https://blog.csdn.net/I_loveCong/article/details/135332233

1
Java

https://blog.csdn.net/stxyg/article/details/131756640

5.10 Web Worker

概念:

Web Worker 是 HTML5 标准的一部分,这一规范定义了一套 API,允许我们在 js 主线程之外开辟新

的 Worker 线程,并将一段 js 脚本运行其中,它赋予了开发者利用 js 操作多线程的能力。

因为是独立的线程,Worker 线程与 js 主线程能够同时运行,互不阻塞。所以,在我们有大量运算任

务时,可以把运算任务交给 Worker 线程去处理,当 Worker 线程计算完成,再把结果返回给 js 主线程。

这样,js 主线程只用专注处理业务逻辑,不用耗费过多时间去处理大量复杂计算,从而减少了阻塞时间,

也提高了运行效率,页面流畅度和用户体验自然而然也提高了。

虽然 Worker 线程是在浏览器环境中被唤起,但是它与当前页面窗口运行在不同的全局上下文中,我

们常用的顶层对象 window,以及 parent 对象在 Worker 线程上下文中是不可用的。另外,在 Worker

线程上下文中,操作 DOM 的行为也是不可行的,document对象也不存在。但是,location和navigator

对象可以以可读方式访问。除此之外,绝大多数 Window 对象上的方法和属性,都被共享到 Worker 上下

文全局对象 WorkerGlobalScope 中。同样,Worker 线程上下文也存在一个顶级对象 self。

如何使用 Web Worker:

  1. 创建 worker
1
const worker = new Worker(path, options);

1716440928986-fa646dd3-8629-4def-a358-236d3eacc522

  1. js主线程与worker线程数据传递
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// main.js(主线程)

const myWorker = new Worker('/worker.js'); // 创建worker

myWorker.addEventListener('message', e => { // 接收消息
console.log(e.data); // Greeting from Worker.js,worker线程发送的消息
});

// 这种写法也可以
// myWorker.onmessage = e => { // 接收消息
// console.log(e.data);
// };

myWorker.postMessage('Greeting from Main.js'); // 向 worker 线程发送消息,对应 worker 线程中的 e.data
// worker.js(worker线程)
self.addEventListener('message', e => { // 接收到消息
console.log(e.data); // Greeting from Main.js,主线程发送的消息
self.postMessage('Greeting from Worker.js'); // 向主线程发送消息
});
  1. 监听错误信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// main.js(主线程)
const myWorker = new Worker('/worker.js'); // 创建worker

myWorker.addEventListener('error', err => {
console.log(err.message);
});
myWorker.addEventListener('messageerror', err => {
console.log(err.message)
});
// worker.js(worker线程)
self.addEventListener('error', err => {
console.log(err.message);
});
self.addEventListener('messageerror', err => {
console.log(err.message);
});
  1. 关闭worker线程
1
2
3
4
5
// main.js(主线程)
const myWorker = new Worker('/worker.js'); // 创建worker
myWorker.terminate(); // 关闭worker
// worker.js(worker线程)
self.close(); // 直接执行close方法就ok了

主线程和worker线程关闭的区别:

无论是在主线程关闭 worker,还是在 worker 线程内部关闭 worker,worker 线程当前的 Event Loop 中的任务会继续执行。至于 worker 线程下一个 Event Loop 中的任务,则会被直接忽略,不会继续执行。

区别是,在主线程手动关闭 worker,主线程与 worker 线程之间的连接都会被立刻停止,即使 worker 线程当前的 Event Loop 中仍有待执行的任务继续调用 postMessage() 方法,但主线程不会再接收到消息。

在 worker 线程内部关闭 worker,不会直接断开与主线程的连接,而是等 worker 线程当前的 Event Loop 所有任务执行完,再关闭。也就是说,在当前 Event Loop 中继续调用 postMessage() 方法,主线程还是能通过监听message事件收到消息的。

  1. Worker 线程引用其他js文件
1
2
3
4
5
6
7
8
// utils.js
const add = (a, b) => a + b;
// worker.js(worker线程)
// 使用方法:importScripts(path1, path2, ...);

importScripts('./utils.js');

console.log(add(1, 2)); // log 3
  1. ESModule 模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// main.js(主线程)
const worker = new Worker('/worker.js', {
type: 'module' // 指定 worker.js 的类型
});
// utils.js
export default add = (a, b) => a + b;
// worker.js(worker线程)
import add from './utils.js'; // 导入外部js

self.addEventListener('message', e => {
postMessage(e.data);
});

add(1, 2); // log 3

export default self; // 只需把顶级对象self暴露出去即可

SharedWorker:多页面数据共享

5.11 拖放(Drag 和 Drop)

参考:https://blog.csdn.net/delishcomcn/article/details/132400972

5.12 地理定位

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<title>编程笔记 html5&css&js HTML MathML</title>
<meta charset="utf-8" />
<style>
body {
font-size: 2em;
color: cyan;
background-color: teal;
}
.container {
color: cyan;
background-color: teal;
width: 500px; /* 设置容器的宽度 */
margin: 0 auto; /* 将左右边距设置为自动 */
line-height: 2;
}
button {
font-size: 1.5em;
}
h1 {
margin-top: 100px;
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h1>测试地理定位</h1>
<p id="demo">
纬度:<br>
经度:<br>
位置精度:<br>
海拔:<br>
海拔精度:<br>
方向:<br>
速度(米/秒):<br>
定位时间: <br>
</p>
<button onclick="getLocation()">获得地理定位</button>
<script>
let x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
//coords.latitude 十进制数的纬度
// coords.longitude 十进制数的经度
// coords.accuracy 位置精度
// coords.altitude 海拔,海平面以上以米计
// coords.altitudeAccuracy 位置的海拔精度
// coords.heading 方向,从正北开始以度计
// coords.speed 速度,以米/每秒计
// timestamp 响应的日期/时间
function showPosition(position) {
x.innerHTML =
"纬度: " +
position.coords.latitude +
"<br />经度: " +
position.coords.longitude +
"<br />位置精度: " +
position.coords.accuracy +
"<br />海拔: " +
position.coords.altitude +
"<br />海拔精度: " +
position.coords.altitudeAccuracy +
"<br />方向: " +
position.coords.heading +
"<br />速度(米/秒): " +
position.speed +
"<br />定位时间: " +
position.timestamp;
}
</script>
</div>
</body>
</html>
1717038625998-128d7aac-5261-4a7a-8245-45dec837af4b

参考:https://blog.51cto.com/u_16099265/9402558

5.13 服务器发送事件(SSE)

参考:https://blog.csdn.net/daizikui/article/details/138185618

5.14 跨文档消息传输

参考:https://blog.csdn.net/Ferris_/article/details/103701582

5.15 相关框架或类库

1
ReactiveJS`、`Bootstrap`、`AngularJS

5.16 应用缓存

启动

1
2
3
4
<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>

优势

应用程序缓存为应用带来三个优势:

  1. 离线浏览 - 用户可在应用离线时使用它们
  2. 速度 - 已缓存资源加载得更快
  3. 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源

Manifest文件

manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)

manifest 文件有三个部分:

  • CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存

  • NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存

  • 可以使用星号来指示所有其他其他资源/文件都需要因特网连接

  • FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

1
2
FALLBACK:
/html/ /offline.html

更新缓存

一旦应用被缓存,它就会保持缓存直到发生下列情况:

  • 用户清空浏览器缓存
  • manifest 文件被修改(参阅下面的提示)
  • 由程序来更新应用缓存

完整的 Cache Manifest 文件 - 更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法

1
2
3
4
5
6
7
8
9
10
11
CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js

NETWORK:
login.asp

FALLBACK:
/html/ /offline.html

5.17 无障碍

  • 拥有标题、段落、列表等内容的良好结构

  • 使用通俗易懂的语言:不使用方言

  • 更现代的页面布局 <header><nav><main>

  • UI控制:能够使用Tab切换按钮、输入框的焦点

  • 重新建立键盘的无障碍:修改聚焦控件的顺序

    • tabindex

    • document.onkeydown = function (e) {
        if (e.keyCode === 13) {
          // The Enter/Return key
          document.activeElement.onclick(e);
        }
      };
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15


      - 有意义的文字标签:对于按钮的文字描述要含义明确,不要只写Click it!

      - 无障碍数据表格:使用语义化标签`<th><caption>`

      - 替代文本:解释图片的内容

      - `title`、`alt`属性

      - `aria-labelledby`属性

      - ```
      <img src="dinosaur.png" aria-labelledby="dino-label" />
      <p id="dino-label">The Mozilla red Tyrannosaurus ...</p>
    • longdesc属性

    • <img src="dinosaur.png" longdesc="dino-info.html" />
      
  • 空alt属性:对于装饰性的图片,alt属性为空,这样就不会被阅读器解析

其他

MVC模型

参考:https://www.runoob.com/design-pattern/mvc-pattern.html

DHTML

DHTML 意味着 HTML、样式表和 JavaScript 的组合

Html全局属性

1717039495266-c18dd120-7a28-46a3-9838-e5953c261c80

提高DOM元素操作效率

  • 处理列表子元素的点击事件时,使用事件代理
  • 插入大量DOM元素时,使用innerHTML替代逐个构建元素
  • 使用DocumentFragment替代多次appendChild操作

屏幕尺寸

1716794205483-be90d11e-3df3-44e4-8313-92668cfb2a20

创建带有ID属性的DOM元素的副作用

  • 增加内存负担
  • 创建同名的全局变量

属性的继承

一、无继承性的属性

1、display:规定元素应该生成的框的类型

2、文本属性:

​ vertical-align:垂直文本对齐

​ text-decoration:规定添加到文本的装饰

​ text-shadow:文本阴影效果

​ white-space:空白符的处理

​ unicode-bidi:设置文本的方向

3、盒子模型的属性:

​ width、height、margin 、margin-top、margin-right、margin-bottom、margin-left、border、border-

style、border-top-style、border-right-style、border-bottom-style、border-left-style、border-width、

border-top-width、border-right-right、border-bottom-width、border-left-width、border-color、border-

top-color、border-right-color、border-bottom-color、border-left-color、border-top、border-right、

border-bottom、border-left、padding、padding-top、padding-right、padding-bottom、padding-left

4、背景属性:

​ background、background-color、background-image、background-repeat、background-position、

background-attachment

5、定位属性:

​ float、clear、position、top、right、bottom、left、min-width、min-height、max-width、max-height、

overflow、clip、z-index

6、生成内容属性:content、counter-reset、counter-increment

7、轮廓样式属性:outline-style、outline-width、outline-color、outline

8、页面样式属性:size、page-break-before、page-break-after

9、声音样式属性:pause-before、pause-after、pause、cue-before、cue-after、cue、play-during

二、有继承性的属性

1、字体系列属性

​ font:组合字体

​ font-family:规定元素的字体系列

​ font-weight:设置字体的粗细

​ font-size:设置字体的尺寸

​ font-style:定义字体的风格

​ font-variant:设置小型大写字母的字体显示文本,这意味着所有的小写字母均会被转换为大写,但是所有使

用小型大写字体的字母与其余文本相比,其字体尺寸更小。

​ font-stretch:对当前的 font-family 进行伸缩变形。所有主流浏览器都不支持。

​ font-size-adjust:为某个元素规定一个 aspect 值,这样就可以保持首选字体的 x-height。

2、文本系列属性

text-indent:文本缩进

text-align:文本水平对齐

line-height:行高

word-spacing:增加或减少单词间的空白(即字间隔)

letter-spacing:增加或减少字符间的空白(字符间距)

text-transform:控制文本大小写

direction:规定文本的书写方向

color:文本颜色

3、元素可见性:visibility

4、表格布局属性:caption-side、border-collapse、border-spacing、empty-cells、table-layout

5、列表布局属性:list-style-type、list-style-image、list-style-position、list-style

6、生成内容属性:quotes

7、光标属性:cursor

8、页面样式属性:page、page-break-inside、windows、orphans

9、声音样式属性:

​ speak、speak-punctuation、speak-numeral、speak-header、speech-rate、volume、voice-family、pitch、pitch-range、stress、richness、、azimuth、elevation

三、所有元素可以继承的属性

1、元素可见性:visibility

2、光标属性:cursor

内联元素可以继承的属性

1、字体系列属性

2、除text-indent、text-align之外的文本系列属性

块级元素可以继承的元素

1、text-indent、text-align


HTML教程
http://example.com/2024/09/24/前端入门/HTML教程/
作者
王承磊
发布于
2024年9月24日
许可协议