HTML教程笔记

HTML教程笔记

1. web标准的构成

​ 结构—> 网页元素整理分类(HTML) 、表现----> 外观样式(CSS)、行为----> 交互(JavaScript) 三者分离

2. HTML语法规范(Hyper Text Markup Language):超文本标记语言

    <html>
      <!-- 头部标签 -->

      <head>   
        <!-- 标题标签 -->
        <title></title> 
      </head>

      <!-- 文档的主体 -->
      <body>
      </body>
    </html>

3. 文档类型 <! DOCTYPE>

​ **「文档类型」**用来说明你用的XHTML或者HTML是什么版本。告诉浏览器按照HTML5标准解析页面。

​ 页面语言lang: 指定该html标签内容所用的语言

	<html lang="en"> 
	 en 定义语言为英语 zh-CN定义语言为中文

「字符集」(Character set)是多个字符的集合,计算机要准确的处理各种字符集文字,需要进行字符编码,以 便计算机能够识别和存储各种文字。

​ UTF-8是目前最常用的字符集编码方式、让 html 文件是以 UTF-8 编码保存的, 浏览器根据编码去解码对应的html内容。

「meta viewport的用法」
通常viewport是指视窗、视口。浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域。在移动端和pc端视口是不同的,pc端的视口是浏览器窗口区域,而在移动端有三个不同的视口概念:布局视口、视觉视口、理想视口 meta有两个属性name 和 http-equiv

name属性的取值

  • keywords(关键字) 告诉搜索引擎,该网页的关键字

  • description(网站内容描述) 用于告诉搜索引擎,你网站的主要内容。

  • viewport(移动端的窗口)

  • robots(定义搜索引擎爬虫的索引方式) robots用来告诉爬虫哪些页面需要索引,哪些页面不需要索引

  • author(作者)

  • generator(网页制作软件)

  • copyright(版权)

    http-equiv有以下参数

    http-equiv相当于http的文件头作用,它可以向浏览器传回一些有用的信息以帮助正确和精确地显示网页内容

  • content-Type 设定网页字符集(Html4用法,不推荐)

  • Expires(期限) ,可以用于设定网页的到期时间。一旦网页过期,必须到服务器上重新传输。

  • Pragma(cache模式),是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦离开网页就无法从Cache中再调出

  • Refresh(刷新),自动刷新并指向新页面。

  • cache-control(请求和响应遵循的缓存机制)

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    

4.HTML的标签

HTML标签的语义化

​ 方便代码的阅读和维护,样式丢失的时候能让页面呈现清晰的结构。

​ 有利于SEO(搜索引擎优化),搜索引擎根据标签来确定上下文和各个关键字的权重。

​ 方便其他设备解析,如盲人阅读器根据语义渲染网页

HTML的常用标签

**「1. 排版标签」**主要和css搭配使用,显示网页结构的标签,是网页布局最常用的标签。
  • ​ 标题标签h(h1~h6)
    • 段落标签p,可以把 HTML 文档分割为若干段落
    • 水平线标签hr
    • 换行标签br
    • div和span标签:是没有语义的,是我们网页布局最主要的2个盒子。
「2. 排版标签」
  • ​ b和strong 文字以粗体显示
    • i和em 文字以斜体显示
    • s和del 文字以加删除线显示
    • u和ins 文字以加下划线显示
「3. 标签属性(行内式)」

使用HTML制作网页时,如果想让HTML标签提供更多的信息,可以使用HTML标签的属性加以设置。

「4. 图像标签img」
image-20210517155445692
  • 注意:*
    • 标签可以拥有多个属性,必须写在开始标签中,位于标签名后面。
    • 属性之间不分先后顺序,标签名与属性、属性与属性之间均以空格分开。
    • 采取 键值对 的格式 key=“value” 的格式
「5. 链接标签(重点)」
	<a href="跳转目标" target="目标窗口的弹出方式" >文本或图像</a>
	target='_self'  默认窗口弹出方式
	target='_blank'  新窗口弹出
属性作用
href用于指定链接目标的url地址,(必须属性)当为标签应用href属性时,它就具有了超链接的功能
target用于指定链接页面的打开方式,其取值有 _ self 和 _ blank两种,其中_self为默认值,_blank为在新窗口中打开方式

src 和 href 的区别

​ 一句话概括:src 是引入资源的 href 是跳转url的

  1. src用于替换当前元素,href用于在当前文档和引用资源之间确立联系。
  2. src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。
  3. href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接。如果我们在文档中添加那么浏览器会识别该文档为css文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用link方式来加载css,而不是使用@import方式。
「6. 注释标签」
 <!-- 注释语句 -->   
 快捷键是:  ctrl + /    
 或者 ctrl +shift + / 
「7. 路径」
image-20210517160413492
「8. 其他知识」

​ 特殊字符

image-20210517160447728

5. 表格

「1. 创建表格」
<table>  
	<tr>   
		<td>单元格内的文字</td>   
		... 
	</tr>  
	...
</table>

table、tr、td,他们是创建表格的基本标签,缺一不可

  • table用于定义一个表格标签。

  • tr标签 用于定义表格中的行,必须嵌套在 table标签中。

  • td 用于定义表格中的单元格,必须嵌套在标签中。

  • 字母 td 指表格数据(table data),即数据单元格的内容,现在我们明白,表格最合适的地方就是用来存储数据的。td像一个容器,可以容纳所有的元素。

    表格标题caption通常这个标题会被居中且显示于表格之上。caption 标签必须紧随 table 标签之后。这个标签只存在 表格里面才有意义

「2. 表格属性」
属性名含义常用属性值
border设置表格的边框(默认border=‘0’ 无边框)像素值
cellspacing设置单元格与单元格边框之间的空白间距像素值(默认为2像素)
cellpadding设置单元格内容与单元格边框之间的空白间距像素值(默认为1像素)
width设置表格的宽度像素值
height设置表格的高度像素值
align设置表格在网页中的水平对齐方式left、center、right
「3. 合并单元格」

​ 合并的顺序我们按照 先上 后下 先左 后右 的顺序 ,合并完之后需要删除多余的单元格。

  • 跨行合并:rowspan=“合并单元格的个数”
  • 跨列合并:colspan=“合并单元格的个数”

6.列表

「1. 无序列表 ul」
	<ul></ul>中只能嵌套<li></li>,直接在<ul></ul>标签中输入其他标签或者文字的做法是不被允许的。
	<li>与</li>之间相当于一个容器,可以容纳所有元素。
	<ul>
 		<li>列表项1</li>
 		<li>列表项2</li>
		 ......
		 <li>列表项3</li>
	</ul>
「2. 有序列表 ol」
	<ol>标签中的type属性值为排序的序列号,不添加type属性时,有序列表默认从数字1开始排序。
  • 常用的type属性值分别为是1,a,A,i,I

  • <ol reversed="reversed">中的reversed属性能够让有序列表中的序列倒序排列。
    
  • 注:

    1. 中的start属性值为3,有序列表中的第一个序列号将从3开始排列。

    「3. 自定义列表 dl」
  • 定义列表常用于对术语或名词进行解释和描述,定义列表的列表项前没有任何项目符号。

<dl>  	<dt>名词1</dt>  	<dd>名词1解释1</dd>  	<dd>名词1解释2</dd>      ...  	<dt>名词2</dt>  	<dd>名词2解释1</dd>  	<dd>名词2解释2</dd>  	...</dl>

7.表单

​ 在HTML中,一个完整的表单通常由表单控件(也称为表单元素)、提示信息和表单域3个部分构成。表单目的是为了收集用户信息。

在这里插入图片描述

表单控件:
包含了具体的表单功能项,如单行文本输入框、密码输入框、复选框、提交按钮、重置按钮等。
提示信息:
一个表单中通常还需要包含一些说明性的文字,提示用户进行填写和操作。
表单域:
它相当于一个容器,用来容纳所有的表单控件和提示信息,可以通过他定义处理表单数据所用程序的url地址,以及数据提交到服务器的方法。如果不定义表单域,表单中的数据就无法传送到后台服务器。

「1. input 控件」
<input type="属性值" value="你好">
  • input 输入的意思
  • 标签为单标签
  • type属性设置不同的属性值用来指定不同的控件类型
  • 除了type属性还有别的属性

在这里插入图片描述

value属性

  • value 默认的文本值。有些表单想刚打开页面就默认显示几个文字,就可以通过这个value 来设置。

name属性

  • name表单的名字, 这样,后台可以通过这个name属性找到这个表单。 页面中的表单很多,name主要作用就是用于区别不同的表单。

    • name属性后面的值,是我们自己定义的。
    • radio 如果是一组,我们必须给他们命名相同的名字 name 这样就可以多个选其中的一个啦
    • name属性,我们现在用的较少,但是,当我们学ajax 和后台的时候,是必须的。

checked属性

  • 表示默认选中状态。 较常见于 单选按钮和复选按钮。
「2. label标签」
  • label 标签为 input 元素定义标注(标签)。

  • label标签主要目的是为了提高用户体验。为用户提高最优秀的服务。

    **作用:**用于绑定一个表单元素, 当点击label标签的时候, 被绑定的表单元素就会获得输入焦点。

    如何绑定元素呢

  • ​ 第一种用法就是用label标签直接包含input表单, 适合单个表单选择

  • ​ 第二种用法 for 属性规定 label 与哪个表单元素绑定(通过id)。

「3. textarea控件(文本域)」
  • 通过textarea控件可以轻松地创建多行文本输入框.
  • cols=“每行中的字符数” rows=“显示的行数” 我们实际开发不用
「4. select下拉列表」
  • 如果有多个选项让用户选择,为了节约空间,我们可以使用select控件定义下拉列表。
  • 在option 中定义selected =" selected "时,当前项即为默认选中项。
  • 我们实际开发会用的比较少
form表单域
  • 收集的用户信息怎么传递给服务器?

    • 通过form表单域
  • 目的:

    • 在HTML中,form标签被用于定义表单域,以实现用户信息的收集和传递,form中的所有内容都会被提交给服务器。
  <form action="url地址" method="提交方式" name="表单名称">           各种表单控件  </form>

常用属性:

  • 每个表单都应该有自己表单域。后面学 ajax 后台交互的时候,必须需要form表单域。
属性属性值作用
actionurl地址用于指定接收并处理表单数据的服务器程序的url地址。
methodget/post用于设置表单数据的提交方式,其取值为get或post
name名称用于指定表单的名称,以区分同一个页面中的多个表单。

补充****GET 和 POST 的区别

  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  • GET请求只能进行url编码,而POST支持多种编码方式。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET请求大小一般是(1024字节),http协议并没有限制,而与服务器,操作系统有关,POST理论上来说没有大小限制,http协议规范也没有进行大小限制,但实际上post所能传递的数据量根据取决于服务器的设置和内存大小。
  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

8.从输入url到页面展示发生了什么(面试)

浏览器的多进程架构

从浏览器输入 URL 到页面渲染的整个过程都是由 浏览器架构中的各个进程之间的配合完成。

  1. 浏览器主进程: 管理子进程、提供服务功能
  2. 渲染进程:将HTML、CSS、JS渲染成界面,js引擎v8和排版引擎Blink就在上面,他会为每一个tab页面创建一个渲染进程
  3. GPU进程:本来是负责处理3Dcss的,后来慢慢的UI界面也交给GPU来绘制
  4. 网络进程:就是负责网络请求,网络资源加载的进程
  5. 插件进程:负责插件的运行的,因为插件很容易崩溃,把它放到独立的进程里不要让它影响别人

从用户输入信息到页面展示的不同阶段,是不同的进程在发挥作用,示意图如下:

图片

从图中可以看出,整个过程是需要各个进程之间相互配合完成的,过程大致可以描述为:

  1. 用户输入url,处理输入信息,主进程开始导航,交给网络进程干活
  2. 网络进程发起网络请求,其中有可能会发生重定向
  3. 服务器响应URL之后,主进程就要通知渲染进程,你要开始干活了
  4. 渲染进程准备好了,要想渲染进程提交数据,这个时间叫做提交文档
  5. 渲染进程接受到数据,完成页面渲染。
具体过程
  1. 输入url

    用户输入url,处理输入信息:

    如果为非url结构的字符串,交给浏览器默认引擎去搜索该字符串;

    若为url结构的字符串,浏览器主进程会交给 网络进程 ,开始干活。

2.1 查找浏览器缓存
  • 网络进程会先看看是否存在本地缓存,如果有就直接返回资源给浏览器进程,无则下一步 DNS-> IP -> TCP
2.2 DNS解析
  • 网络进程拿到url后,先会进行DNS域名解析得到IP地址。如果请求协议是HTTPS,那么还需要建立TLS连接。
  • SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。
  • TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性
2.2 建立TCP连接,三次握手
  • 接下来就是利用IP地址和服务器建立TCP连接。连接建立之后,向服务器发送请求。
3 服务器响应
  • 服务器收到请求信息后,会根据请求信息生成响应行、响应头、响应体,并发给网络进程。网络进程接受了响应信息之后,就开始解析响应头的内容。
  • 网络进程解析响应行和响应头信息的过程:
3.1 重定向
  • 如果响应行状态码为301(永久重定向)和302(临时),那么说明需要重定向到其他url。这时候网络进程会从响应头中的Location字段里读取重定向的地址,并重新发起网络请求。
3.2 响应数据处理
  • 导航会通过请求头的Content-type字段判断响应体数据的类型。浏览器通过这个来决定如何显示响应体的内容。比如:若为application/octet-stream,则会按照下载类型来处理这个请求,导航结束。若为text/html,这就告诉浏览器服务器返回的是html格式,浏览器会通知渲染进程,你要干活了。
4 准备渲染进程
  • 默认情况,每个页面一个渲染进程。但若处于同一站点(同根域名+协议),那么渲染进程就会复用。
5 提交文档
  • 渲染进程准备好后,浏览器进程发出“提交文档的消息”,渲染进程接受了消息之后,会跟网络进程简历传输数据的管道。

  • 等数据传输完成了,渲染进程会告诉浏览器进程,确认文档提交,这时候浏览器会更新页面,安全状态,url,前进后退的历史。

  • 到这里导航结束,进入渲染阶段。

    注:当浏览器刚开始加载一个地址之后,标签页上的图标便进入了加载状态。但此时图中页面显示的依然是之前打开的页面内容,并没立即替换为百度首页的页面。因为需要等待提交文档阶段,页面内容才会被替换。

9 前端HTML基础面试题

iframe有哪些缺点?

iframe是一种框架,也是一种很常见的网页嵌入方式。

「iframe的优点」

  • iframe能够原封不动的把嵌入的网页展现出来。
  • 如果有多个网页引用iframe,那么你只需要修改iframe的内容,就可以实现调用的每一个页面内容的更改,方便快捷。
  • 网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用iframe来嵌套,可以增加代码的可重用。
  • 如果遇到加载缓慢的第三方内容如图标和广告,这些问题可以由iframe来解决。

「iframe的缺点」

  • 会产生很多页面,不容易管理。
  • iframe框架结构有时会让人感到迷惑,如果框架个数多的话,可能会出现上下、左右滚动条,会分散访问者的注意力,用户体验度差。
  • 代码复杂,无法被一些搜索引擎索引到,这一点很关键,现在的搜索引擎爬虫还不能很好的处理iframe中的内容,所以使用iframe会不利于搜索引擎优化。
  • 很多的移动设备(PDA 手机)无法完全显示框架,设备兼容性差。
  • iframe框架页面会增加服务器的http请求,对于大型网站是不可取的。
  • 现在基本上都是用Ajax来代替iframe,所以iframe已经渐渐的退出了前端开发。
HTML5的form如何关闭自动完成功能?

HTML的输入框可以拥有自动完成的功能,当你往输入框输入内容的时候,浏览器会从你以前的同名输入框的历史记录中查找出类似的内容并列在输入框下面,这样就不用全部输入进去了,直接选择列表中的项目就可以了。
但有时候我们希望关闭输入框的自动完成功能,例如当用户输入内容的时候,我们希望使用AJAX技术从数据库搜索并列举而不是在用户的历史记录中搜索。

关闭输入框的自动完成功能有3种方法:

  1. 在IE的Internet选项菜单里的内容–自动完成里面设置
  2. 设置form的autocomplete为"on"或者"off"来开启或者关闭自动完成功能
  3. 设置输入框的autocomplete为"on"或者"off"来开启或者关闭该输入框的自动完成功能
link和@import的区别?

​ 1、从属关系区别:
​ link属于html标签,而@import是css提供的。
​ 2、加载顺序区别:
​ 页面被加载时,link会同时被加载,而@import引用的css会等到页面被加载完再加载。
​ 3、兼容性区别:
​ import只在IE5以上才能识别,而link是html标签,无兼容问题。
​ 4、dom可操作性区别:
​ 可以通过JS 操作 DOM ,插入link标签来改变样式;由于 DOM 方法是基于文档的,无法使用@import的方式插入样式
​ 5、权重区别:
​ 如果已经存在相同样式,@import引入的这个样式将被该 CSS 文件本身的样式层叠掉,表现出link方式的样式权重高于@import的权重 这样的直观效果。
​ (简而言之,link和@import,谁写在后面,谁的样式就被应用,后面的样式覆盖前面的样式。)

src与href的区别?

​ 1、href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。
​ 2、src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文 档内,例如js脚本,img图片和frame等元素。当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编 译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。

XHR是什么?

XMLHttpRequest(XHR)对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequestAJAX 编程中被大量使用。

方法:

XMLHttpRequest.abort()

​ 如果请求已被发出,则立刻中止请求。

XMLHttpRequest.getAllResponseHeaders()

​ 以字符串的形式返回所有用 CRLF 分隔的响应头,如果没有收到响应,则返回 null

XMLHttpRequest.getResponseHeader()

​ 返回包含指定响应头的字符串,如果响应尚未收到或响应中不存在该报头,则返回 null

XMLHttpRequest.open()

​ 初始化一个请求。该方法只能在 JavaScript 代码中使用,若要在 native code 中初始化请求,请使用 openRequest()。

XMLHttpRequest.overrideMimeType()

​ 覆写由服务器返回的 MIME 类型。

XMLHttpRequest.send()

​ 发送请求。如果请求是异步的(默认),那么该方法将在请求发送后立即返回。

XMLHttpRequest.setRequestHeader()

​ 设置 HTTP 请求头的值。必须在 open() 之后、send() 之前调用 setRequestHeader() 方法。

Fetch API

​ Fetch API 提供了一个获取资源的接口(包括跨域请求)。

​ Fetch 提供了对 RequestResponse (以及其他与网络请求有关的)对象的通用定义。使之今后可以被使用到更多地应用场景中:无论是 service worker、Cache API、又或者是其他处理请求和响应的方式,甚至是任何一种需要你自己在程序中生成响应的方式。

​ 发送请求或者获取资源,需要使用 WindowOrWorkerGlobalScope.fetch() 方法。它在很多接口中都被实现了,更具体地说,是在 WindowWorkerGlobalScope 接口上。因此在几乎所有环境中都可以用这个方法获取到资源。

fetch() 必须接受一个参数——资源的路径。无论请求成功与否,它都返回一个 Promise 对象,resolve 对应请求的 Response。你也可以传一个可选的第二个参数 init(参见 Request)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值