前端与HTML | 青训营笔记

91 阅读18分钟

#课堂笔记

这是我参与「第四届青训营」笔记创作活动的的第1天

什么是前端

  • 解决GUI人机交互问题

  • 跨终端

​ PC/移动浏览器

​ 客户端/小程序

​ VR/AR等

  • Web技术栈

前端工程师是使用web技术栈解决多端图形用户界面交互问题的工程师

前端技术栈

微信截图_20220724211341.png

前端应该关注哪些方面

  • 功能
  • 美观
  • 无障碍
  • 安全
  • 性能
  • 兼容
  • 体验

HTML是什么

HyperText Markup Language

超文本 标记 语言

DOM树

微信截图_20220724212030.png

MTML语法

  • 标签和属性不区分大小写,推荐小写
  • 空标签可以不闭合,比如mateinput
  • 属性值推荐用双引号包裹
  • 某些属性值可以省略,比如requiredreadonly

内容划分

微信截图_20220724214310.png

语义化是什么

  • HTML中的元素、属性、及属性值都拥有某些含义

  • 开发者应该遵循语义来编写HTML

​ 有序列表用 ol;无序列表用 ul

​ lang 属性表示内容使用·的语言

谁在使用我们写的HTML

  • 开发者 - 修改、维护页面
  • 浏览器 - 展示页面
  • 搜索引擎 - 提取关键词、排序
  • 屏幕阅读器 - 给盲人读页面内容!

微信截图_20220724215412.png

如何做到语义化

  • 了解每个标签的属性和含义(mdn、w3c)
  • 思考什么标签最适合描述这个内容
  • 不使用可视化工具生成代码

分享一些自己的HTML学习笔记

HTML简介

Web标准

Web标准是由W3C组织和其他标准化组织制定的一系列标准的集合

W3C(万维网联盟)是国际最著名的标准化组织

Web标准中分成三个构成:

构成语言说明
结构HTML用于对网页元素进行整理和分类
表现CSS用于设置网页元素的版式、颜色、大小等外观样式
行为JavaScript网页模型的定义及交互的编写

Web标准要求页面实现:结构、表现、行为三层分离

结构写到HTML文件中,表现写到CSS文件中,行为写到JavaScript文件中

HTML的概念

HTML (Hyper Text Markup Language) 中文译为:超文本标记语言

专门用于网页开发的语言,主要通过HTML标签对网页中的文本、图片、视频等内容进行描述

HTML标签

HTML语法规范

基本语法概述

  1. HTML标签是由尖括号包围的关键词,例如<html>
  2. HTML标签通常是成对出现的,例如<html></hrml>,我们称为双标签。标签对中的第一个标签是开始标签,第二个标签是结束标签
  3. 有些特殊的标签必须是单个标签(极少情况),例如<br>,我们称为单标签

标签关系

双标签关系可以分为两类:包含关系和并列关系

包含关系

<head>
    <title></title>
</head>

并列关系

<head></head>
<body></body>

HTML骨架结构

<html>
    <head>
        <title>网页的标题</title>
    </head>
    <body>
        网页的主体内容
    </body>
</html>

在Visual Studio Code中使用 html:5 即可一键生成骨架

<!DOCTYPE html>
<html lang="en">
<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></title>
</head>
<body>
</body>
</html>

文档类型声明标签

<!DOCTYPE>文档类型说明,作用就是告诉浏览器使用哪种HTML版本来显示网页

<!DOCTYPE html>

这句代码的意思是:当前页面采用的是HTML5版本来显示网页

注意:

  1. <!DOCTYPE>声明位于文档中的最前面的位置,处于<html>标签之前
  2. <!DOCTYPE>不是一个HTML标签,他就是 文档类型声明标签

lang语言种类

<html lang>用来定义当前文档显示的语言

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

其实对于文档显示来说,定义成en的文档也可以显示中文,定义成zh-CN的文档也可以显示英文

这个属性对浏览器和搜索引擎(谷歌,百度等)还是有作用的

字符集

字符集(Character set)是多个字符的集合,以便计算机能够识别和存储各种文字

head标签内,可以通过<meta>标签的charset属性来规定HTML文档应该使用哪种字符编码

<meta charset="UTF-8">

charset常用的值由:GB2312、BIG5、GBK和UTF-8,其中UTF-8也成为万国码,基本包含了全世界所有国家需要用到的字符

注意:上面语法是必须要写的代码,否则可能引起乱码的情况。一般情况下,统一使用“UTF-8”编码,尽量统一写成标准的“UTF-8”,不要写成“utf8”或“UTF8”

HTML常用标签

标题标签

为了使网页更具有语义化,我们经常会在页面中用到标题标签

HTML提供了6个等级的网页标签,即h1 - h6

<h1>我是一级标题</h1>

单词head的缩写,意为头部、标题

**标签语义:**作为标题使用,并且依据重要性递减

特点:

  1. 加了标题的文字会变得加粗,字号也会依次变大
  2. 一个标题独占一行

段落标签

在网页中,要把文字有条理地显示出来,就需要将这些文字分段显示

在HTML标签中,<p>标签用于定义段落,它可以将整个网页分为若干个段落

<p>我是一个段落标签</p>

**标签语义:**可以把HTML文档分割为若干段落

特点:

  1. 文本在一个段落中会根据浏览器窗口的大小自动换行
  2. 段落与段落之间保有空隙

换行标签

在HTML中,一个段落中的文字会从左到右依次排列,直到浏览器窗口的右端,然后才自动换行

如果希望某段文字强制换行显示,就需要使用换行标签<br>

<br>

**标签语义:**强制换行

特点:

  1. <br>是个单标签
  2. <br>标签只是简单地开始新的一行,跟段落不一样,段落之间会插入一些垂直的间距

文本格式化标签

在网页中,有时需要为文字设置粗体斜体、下划线或删除线等效果,这时就需要用到HTML中的文本格式标签,使文字以特殊的方式显示

**标签语义:**突出重要性,比普通文字更重要

语义标签说明
加粗<strong></strong>或者<b></b>更推荐使用<strong>标签 语义更强烈
倾斜<em></em>或者<i></i>更推荐使用<em>标签 语义更强烈
删除线<del></del>或者<s></s>更推荐使用<del>标签 语义更强烈
下划线<ins></ins>或者<u></u>更推荐使用<ins>标签 语义更强烈

<div><span>标签

<div><span>是没有语义的,它们就是一个盒子,用来装内容的

<div>这是盒子</div><span>这是盒子</span>

div 是 division 的缩写,表示分割、分区

span 意为跨度、跨距

特点:

  1. <div>标签用来布局,但是现在一行只能放一个<div> 大盒子
  2. <span>标签用来布局,一行上可以多个<span> 小盒子

图像标签

在HTML标签中,<img>标签用于定义HTML页面中的图像

<img scr="图像URL">

scr<img>标签的**必须属性,它用于指定图像文件的路径和文件名**

所谓属性:简单理解就是属于这个图像标签的特性

图像标签的其他属性:

属性属性值说明
src图片路径必须属性
alt文本替换文本 图像不能显示时的文字
title文本提示文本 鼠标放到图像上显示的文字
width像素设置图像的宽度 只用设置一个就可以等比例缩放
height像素设置图像的高度
border像素设置图像的边框粗细

图像标签属性注意点:

  1. 图像标签可以拥有多个属性,必须写在标签名的后面
  2. 属性之间不分先后顺序,标签名与属性、属性与属性之间均以空格分开
  3. 属性采取键值对的格式,即key="value"的格式,属性="属性值"

路径

目标文件夹和根目录

实际工作中,我们的文件不能随便乱放,否则用起来很难快速找到他们,因此我们需要一个文件夹来管理它们

**目标文件夹:**就是普通文件夹,里面只不过存放了我们做网页所需要的相关素材,比如html文件、图片等

**根目录:**打开目录文件夹的第一层就是根目录

路径

页面中的图片会非常多,通常我们会新建一个文件夹来存放这些图像文件(images),这时再查找图像,就需要采用“路径”的方式来指定图像文件的位置

路劲可以分为:

  1. 相对路径
  2. 绝对路径
路径之相对路径

相对路径:引用文件所在位置为参考基础,而建立出的目录路径

这里简单来说,图片相对于HTML页面的位置

相对路径分类符号说明
同一级路径图像文件位于HTML文件同一级 如<img src="baidu.glf">
下一级路径/图像文件位于HTML文件下一级 如<img src="images/baidu.glf">
上一级路径../图像文件位于HTML文件上一级 如<img src="../baidu.glf">

相对路径是从代码所在的这个文件出发,去寻找目标文件的,而我们这里所说的上一级、下一级和同一级就是图片相对于HTML页面的位置

路径之绝对路径

**绝对路径:**是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径

例如,"D:\web\img\logo.gif"或完整的网络地址"http://www.itcast.cn/images/logo.gif"

超链接标签

链接的语法格式

<a href="跳转目标" target="目标窗口的弹出方式">文本或图像</a>

a 单词 anchor 的缩写 意为:锚

两个属性的作用如下:

属性作用
href同于指定链接目标的url地址,(必须属性)当为标签应用href属性时,它就具有了超链接的功能
target用于指定链接页面的打开方式,其中_self为默认值,_blank为在新窗口中打开方式

链接分类

  1. 外部链接:例如<a href="http://www.baidu.com">百度</a>
  2. 内部链接:网站内部之间的相互连接,直接链接内部网页名称即可,例如<a href="index.html">首页</a>
  3. 空连接:如果当时没有确定链接目标时,<a href="#">首页</a>
  4. 下载链接:如果href里面地址是一个文件或者压缩包,会下载这个文件
  5. 网页元素链接:在网页中的各种网页元素,如文本、图像、表格、音频、视频等都可以添加超链接
  6. 锚点链接:当我们点击链接,可以快速定位到页面中的某个位置
  • 在链接文本的href属性中,设置属性值为#名字的形式,如<a href="#two">第二集</a>
  • 找到目标位置标签,里面添加一个属性id = 刚才的名字 ,如<h3 id="two">第二集介绍</h3>

注释标签

如果需要在HTML文档中添加一些便于阅读和理解但又不需要显示在页面中的注释文字,就需要使用注释标签

HTML中的注释以<!--开头,以 --> 结束

<!--注释语句-->

快捷键:Ctrl + / 整一行变为注释,再按一次将注释解开

特殊字符

在HTML页面中,一些特殊的符号很难或者不方便直接使用,此时我们就可以使用下面的字符来替代

特殊字符描述字符的代码
空格符&nbsp;
小于号&lt;
大于号&gt;
&和号&amp;
¥人民币&yen;
©版权&copy;
®注册商标&reg;
摄氏度&deg;
±正负号&plusmn;
×乘号&times;
÷除号&divide;
²平方2(上标2)&sup2;
³立方3(上标3)&sup3;

表格标签

表格主要用于显示、展示数据,因为它可以让数据显示得非常的规整,可读性非常好。特别是后台展示数据的时候,能够熟练运用表格就显得非常重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理

表格的基本用法

<table>
    <tr>
        <td>单元格内的文字</td>
        …………
    </tr>
    …………
</table>
  1. <table></table>是用于定义表格的标签
  2. <tr></tr>标签用于定义表格中的行,必须嵌套在<table></table>标签中
  3. <td></td>同于定义表格中的单元格,必须嵌套在<tr></tr>标签中
  4. 字母 td 指表格数据(table data),即数据单元格的内容

表头单元格标签

一般表头单元格位于表格的第一行或第一列,表头单元格里面的文本内容加粗居中显示

<th></th>标签表示HTML表格的表头部分(table head 的缩写)

<table>
    <tr>
        <th>姓名</th>
        …………
    </tr>
    …………
</table>

表格属性

表格标签这部分属性实际开发中不常用,后面通过CSS来设置

属性名属性值描述
alignleft、center、right规定表格相对周围元素的对齐方式
border1 或 ""规定表格单元是否拥有边框,默认为"",表示没有边框
cellpadding像素值规定单元边沿与其内容之间的空白(字和框之间的距离),默认1像素
cellspacing像素值规定单元格之间的空白(框和框之间的距离),默认2像素
width像素值或百分比规定表格的宽度
height像素值或百分比规定表格的高度

表格结构标签

使用场景:因为表格可能很长,为了更好的表示表格的语义,可以将表格分割成表格头部和表格主体两大部分

在表格标签中,分别用:

<thead></thead>标签表示表格的头部区域

<tbody></tbody>标签表示表格的主体区域

这样可以更好的分清表格结构

<table>
    <thead>
        <tr>
        	<th></th>
        	<th></th>
          	…………
    	</tr>
    </thead>
    <tbody>
        <tr>
        	<td></td>
        	<td></td>
          	…………
    	</tr>
    </tbody>
</table>
  1. <thead></thead>:用于定义表格的头部,<thead>内部必须拥有<tr>标签,一般是位于第一行
  2. <tbody></tbody>:用于定义表格的主体,主要用于放数据本体
  3. 以上标签都是放在<table></table>标签中

合并单元格

特殊情况下,可以把多个单元格合并为一个单元格

合并单元格方式
  • 跨行合并:rowspan="合并单元格的个数"
  • 跨列合并:colspan="合并单元格的个数"
目标单元格(写合并代码的位置)
  • 跨行:最上侧单元格为目标单元格,写合并代码
  • 跨列:最左侧单元格为目标单元格,写合并代码
合并单元格三部曲
  1. 先确定是跨行还是跨列合并
  2. 找到目标单元格,写上合并方式 = 合并单元格的数量,比如:<td colspan="2"></td>
  3. 删除多余的单元格

列表标签

表格是用来显示数据的,那么列表就是用来布局

列表最大的特点就是整齐、整洁、有序,它作为布局会更加自由和方便

根据使用场景的不同,列表可以分为三大类:无序列表、有序列表和自定义列表

无序列表

<ul></ul>标签表示HTML页面中项目的无序列表,一般会以项目符号呈现列表项,而列表项使用<li></li>标签定义

无序列表的基本语法如下:

<ul>
    <li>列表项1</li>
    <li>列表项2</li>
    <li>列表项3</li>
    …………
</ul>

注意:

  1. 无序列表的各个列表项之间没有顺序级别之分,是并列的
  2. <ul></ul>中只能嵌套<li></li>,直接在<ul></ul>标签中输入其他标签或者文字的做法是不被允许的
  3. <li></li>之间相当于一个容器,可以容纳所有元素
  4. 无序列表会带有自己的样式属性,但在实际使用时,我们会使用CSS来设置

有序列表

有序列表即为有排序顺序的列表,其各个列表项会按照一定的顺序排列定义

在HTML标签中,<ol></ol>标签用于定义有序列表,列表排序以数字来显示,并且使用<li></li>标签来定义列表项

有序列表的基本语法格式如下:

<ol>
    <li>列表项1</li>
    <li>列表项2</li>
    <li>列表项3</li>
    …………
</ol>

注意:

  1. <ol></ol>中只能嵌套<li></li>,直接在<ol></ol>标签中输入其他标签或者文字的做法是不被允许的
  2. <li></li>之间相当于一个容器,可以容纳所有元素
  3. 有序列表会带有自己的样式属性,但在实际使用时,我们会使用CSS来设置

自定义列表

在HTML标签中,<dl></dl>标签用于定义描述列表(或定义列表),该标签会与<dt></dt>标签(定义项目/名字)和<dd></dd>标签(描述每一个项目/名字)一起使用

其基本语法如下:

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

注意:

  1. <dl></dl>标签里面只能包含<dt></dt>标签和<dd></dd>标签
  2. <dt><dd>个数没有限制,经常是一个<dt>对应多个<dd>

总结

标签名定义说明
<ul></ul>无序列表里面只能包含<li></li>标签,没有顺序,使用较多,<li></li>标签里可以包含任何标签
<ol></ol>有序列表里面只能包含<li></li>标签,有顺序,使用较相对较少,<li></li>标签里可以包含任何标签
<dl></dl>自定义列表里面只能包含<dt></dt>标签和<dd></dd>标签,<dt></dt>标签和<dd></dd>标签里面可以放任何标签

表单标签

使用表单的目的是为了收集用户信息

在我们的网页中,我们也需要跟用户进行交互,收集用户资料,此时就需要表单

在HTML中,一个完整的表单通常由表单域表单控件(也称为表单元素)提示信息3个部分组成

表单域

表单域是一个包含表单元素的区域

在HTML标签中,<form></form>标签用于定义表单域,以实现用户信息的收集和传递

<form></form>会把它范围内的表单元素信息提交给服务器

<form action="url地址" method="提交方式" name="表单域名称">
	各种表单域控件
</form>

常用属性:

属性属性值作用
actionurl地址用于指定接受并处理表单数据的服务器程序的url地址
methodget / post用于设置表单数据的提交方式,其取值为get或post
name名称用于指定表单的名称,以区分同一个页面中的多个表单域

表单控件

在表单域中可以定义各种表单元素,这些表单元素就是允许用户在表单中输入或者选择的内容控件

<input>输入表单元素

在英文单词中,input 是输入的意思,而在表单元素中**<input>标签用于收集用户信息**

<input>标签中,包含一个type属性,根据不同的type属性值,输入字段拥有很多中形式(可以是文本字段、复选框、掩码后的文本控件、单选按钮、按钮等)

<input type="属性值">
  • <input>标签为单标签
  • type属性设置不同的属性值用来指定不同的控件类型

type属性的属性值及其描述如下:

属性值描述
button定义可点击按钮(多数情况下,用于通过 Javascript 启动脚本)
checkbox定义复选框
file定义输入字段和”浏览“按钮,供文件上传
hidden定义隐藏的输入字段
image定义图像形式的提交按钮
password定义密码字段,该字段中的字符被掩码
radio定义单选按钮(单选按钮的name属性必须相同才能实现多选一的功能)
reset定义重置按钮,重置按钮会清除表单中的所有数据(value值默认为重置
submit定义提交按钮,提交按钮会把表单数据发送到服务器(value值默认为提交
text定义单行的输入字段,用户可在其中输入文本,默认宽度为20个字符

type属性外,<input>标签还有其他很多属性,其常用属性如下:

属性属性值描述
name由用户自定义定义<input>元素名称
value由用户自定义规定<input>元素的值(input框内的默认值,在选择按钮中设置后提交该按钮的值到服务器
checkedchecked规定此<input>元素首次加载时应当被选中
maxlength正整数规定输入字段中的字符的最大长度
  1. namevalue是每个表单元素都有的属性值,主要给后台人员使用
  2. name表单元素的名字,要求单选按钮和复选框要有相同的name
<label>标签

<label></label>标签为input元素定义标注(标签)

<label></label>标签用于绑定一个表单元素,当点击<label></label>标签内的文本时,浏览器就会自动将交点(光标)转到或者选择对应的表单元素上,用来增加用户体验

语法:

<label for="sex"></label>
<input type="radio" name="sex" id="sex">

核心:<label></label>标签的**for属性应当与相关元素的id属性相同**

<select></select>下拉表单元素

使用场景:在页面中,如果有多个选项让用户选择,并且想要节约页面空间时,我们可以使用<select></select>标签控件定义下拉列表

语法:

<select>
    <option>选项1</option>
    <option>选项2</option>
    <option>选项3</option>
    …………
</select>

注意:

  1. <select></select>中至少包含一对<option></option>
  2. <option></option>中定义selected = "selected"时,当前项即为默认选中项
<textarea></textarea>文本域元素

使用场景:当用户输入内容较多的情况下,我们就不能使用文本框表单了,此时我们可以使用<textarea></textarea>标签

在表单元素中,<textarea></textarea>标签时用于定义多行文本输入的控件

使用多行文本输入控件,可以输入更多的文字,该控件常见于留言板,评论

语法:

<textarea rows="3" cols="20">
    文本内容
</textarea>

注意:

  1. 通过<textarea></textarea>标签可以轻松地创建多行文本输入框
  2. cols="每行中的字符数",rows="显示的行数"我们在实际开发中不会使用,都是用CSS来改变大小