这是我参与「第四届青训营 」笔记创作活动的第1天
前端技术栈
- HTML(内容)
- CSS(样式)
- JavaScript(内容)
前端应该关注的方面
- 功能
- 美观
- 无障碍:Accessibility,任何人平等公平无障碍地浏览网页获取信息
- 安全
- 性能:开始渲染时间、DOM Ready、首屏时间、onload
- 兼容
- 体验
HTML
Hypertext Markup Language
网页的固定结构通过特定的HTML标签来描述
<html>
<head>
<title>网页标题</title>
</head>
<body>
网页主题内容
</body>
</html>
HTML语法
标签组成
- 标签由<、>、/、英文单词或字母组成,< >中包含的内容成为标签名
- 双标签:标签由两部分组成 eg.
- 单标签:标签由一部分组成
标签关系
-
父子关系(嵌套关系) eg.
<head> <title></title> </head> -
兄弟关系(并列关系) eg.
<head></head> <body></body>
标签学习
排版标签
- 标题标签
<h1>1级标题</h1>
<h2>2级标题</h2>
<h3>3级标题</h3>
<h4>4级标题</h4>
<h5>5级标题</h5>
<h6>6级标题</h6>
-
段落标签
<p> 段落独占一行 两段落之间存在间隙 </p> -
换行标签
<p> 段落独占一行<br>两段落之间存在间隙 </p> -
水平线标签
<h2>标题与内容直线的分割线</h2> <hr> <p> 段落内容 </p>
文本格式化标签
作用:实现文字加粗、加下划线、倾斜、删除线等效果(右侧标签突出重要性的强调语境)
| 标签 | 说明 | 标签 | 说明 |
|---|---|---|---|
| b | 加粗 | strong | 加粗 |
| u | 下划线 | ins | 下划线 |
| i | 倾斜 | em | 倾斜 |
| s | 删除线 | del | 删除线 |
媒体标签
图片标签
- 单标签
- img标签借助标签的属性设置
<img src="" alt="">
<!--src、alt属性名 “” 属性值-->
src属性
-
属性名:src
-
属性值:目标图片的路径
-
网页和目标图片在一个文件夹中,路径直接写目标图片的名字(包括后缀名)
-
图片路径问题详见下一部分有关路径的描述
<body> <img src="./1.jpg" alt=""> </body> <!--标签上可以存在多个属性,属性之间用空格隔开--> <!--标签和属性之间用空格隔开--> <!--属性之间没有先后顺序之分-->
alt属性
- 属性名:alt
- 属性值:替换文字——当图片无法显示时显示的文字
title属性
- 属性名:title
- 属性值:鼠标悬停时显示的文字
- title属性不仅仅用于图片标签
width和height属性
- 属性名:width和hight
- 属性值:宽度和高度(数字)
- 如果只设置其中一个属性,另一个会自动等比例缩放
- 如果同时设置两个属性可能会时图片变形
路径
-
绝对路径
目录下的绝对位置,可直接到达的目标位置,通常从盘符开始
-
相对路径
从当前文件出发找目标文件的过程
-
同级目录
<!--方法一:--> <img src="目标图片.后缀"> <!--方法二:--> <img src="./目标图片.后缀"> -
下级目录
<img src="目标图片所在文件夹/目标图片.后缀"> -
上级目录
<img src="../目标图片.后缀">
-
音频标签
-
双标签
<audio src="音频路径" controls></audio> <!--音频+controls默认手动播放--> <!--不加controls无法播放--> -
属性
| 属性名 | 功能 |
|---|---|
| src | 音频路径 |
| controls | 显示播放控件 |
| autoplay | 自动播放(部分浏览器不支持) |
| loop | 循环播放 |
- 音频标签目前支持3种格式:MP3、Wav、Ogg
视频标签
- 双标签
<video src="视频路径" controls></video>
- 属性
| 属性名 | 功能 |
|---|---|
| src | 音频路径 |
| controls | 显示播放控件 |
| autoplay | 自动播放(谷歌浏览器中需要配合muted实现静音播放) |
| loop | 循环播放 |
- 视频标签目前支持3种格式:MP4、WebM、Ogg
链接标签
href:跳转地址
-
双标签
<a href="./目标网页.html">超链接</a>当开发网页初期,href的值写到#(空白链接)代替具体的跳转地址
target属性
- 属性名:target
- 属性值:目标网页的打开方式
| 取值 | 效果 |
|---|---|
| _self | 默认值,在当前窗口中跳转 |
| _blank | 在新窗口中跳转 |
列表标签
无序列表
-
标签组成
标签名 说明 ul 表示无序列表的整体,同于包裹li标签 li 表示无序列表的每一项,用于包含每一行的内容 -
ul标签中只包含li标签
-
li标签可以包含任意内容
<ul> <li>语文</li> <li>数学</li> <li>英语</li> </ul>
有序列表
-
标签组成
标签名 说明 ol 表示有序列表的整体,同于包裹li标签 li 表示有序列表的每一项,用于包含每一行的内容 -
ol标签中只包含li标签
-
li标签可以包含任意内容
<ol> <li>语文</li> <li>数学</li> <li>英语</li> </ol>
自定义列表
-
标签组成
标签名 说明 dl 表示自定义列表的整体,用于包裹dt/dd标签 dt 表示自定义列表的主题 dd 表示自定义列表的针对主题的每一项内容 -
dd标签中只包含dt/dd标签
-
dt/dd标签可以包含任意内容
<dl> <dt>学习科目</dt> <dd>语文</dd> <dd>数学</dd> <dd>英语</dd> </dl>
表格标签
基本标签
| 标签名 | 说明 |
|---|---|
| table | 表格整体,可用于包裹多个tr |
| tr | 表格每行,用于包裹td |
| td | 表格单元格,可用于包裹内容 |
- table嵌套tr(父子关系)
- tr嵌套td(父子关系)
<table border="1">
<tr>
<td>姓名</td>
<td>成绩</td>
</tr>
<tr>
<td>小李</td>
<td>98</td>
</tr>
<tr>
<td>总结</td>
<td>优秀</td>
</tr>
</table>
相关属性
| 属性名 | 属性值 | 效果 |
|---|---|---|
| border | 数字 | 边框宽度 |
| width | 数字 | 表格宽度 |
| height | 数字 | 表格高度 |
表格标题和表头单元格标签
| 标签名 | 名称 | 说明 |
|---|---|---|
| caption | 表格大标题 | 表示表格整体大标题,默认在表格整体顶部居中位置显示 |
| th | 表头单元格 | 表示一列小标题,通常用于表格第一行,默认内部文字加粗并居中显示 |
- caption标签书写在table标签内部
- th标签书写在tr标签内部(用于替换td标签)
<table border="1">
<caption>学生成绩</caption>
<tr>
<th>姓名</th>
<th>成绩</th>
</tr>
<tr>
<td>小李</td>
<td>98</td>
</tr>
<tr>
<td>小华</td>
<td>99</td>
</tr>
<tr>
<td>总结</td>
<td>优秀</td>
</tr>
</table>
表格结构标签
| 标签名 | 名称 |
|---|---|
| thead | 表格头部 |
| tbody | 表格主题 |
| tfoot | 表格底部 |
- 表格结构标签内部用于包裹tr标签
- 表格的结构标签可以省略
<table border="1">
<caption>学生成绩</caption>
<thead>
<th>姓名</th>
<th>成绩</th>
</th>
</thead>
<tbody>
<tr>
<td>小李</td>
<td>98</td>
</tr>
<tr>
<td>小华</td>
<td>99</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>总结</td>
<td>优秀</td>
</tr>
</tfoot>
</table>
合并单元格
合并单元格步骤
- 明确合并单元格
- 通过左上原则,确定保留和删除的单元格
- 上下合并——只保留最上的,删除其他
- 左右合并——只保留最左的,删除其他
- 给保留的单元格设置:跨行合并(rowspan)或者跨列合并(colspan)
| 属性名 | 属性值 | 说明 |
|---|---|---|
| rowspan | 合并单元格的个数 | 跨行合并,将多行的单元格垂直合并 |
| colspan | 合并单元格的个数 | 跨列合并,将多列的单元格水平合并 |
ps.只有同一个标签中的标签才能合并,不能跨结构标签合并
- 跨行合并
<table border="1">
<caption>学生成绩</caption>
<thead>
<th>姓名</th>
<th>成绩</th>
</th>
</thead>
<tbody>
<tr>
<td>小李</td>
<td rowspan="2">98</td>
</tr>
<tr>
<td>小华</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>总结</td>
<td>优秀</td>
</tr>
</tfoot>
</table>
- 跨列合并
<table border="1">
<caption>学生成绩</caption>
<thead>
<th>姓名</th>
<th>成绩</th>
</th>
</thead>
<tbody>
<tr>
<td>小李</td>
<td>98</td>
</tr>
<tr>
<td>小华</td>
<td>99</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2">总结</td>
</tr>
</tfoot>
</table>
表单标签
input系列标签
input标签可以通过type属性值的不同,展示不同的效果
- type属性值
| 标签名 | type属性值 | 说明 |
|---|---|---|
| input | text | 文本框,用于单行文本 |
| input | password | 密码框,用于输密码 |
| input | radio | 单选框,用于多选一 |
| input | checkbox | 多选框,用于多选多 |
| input | file | 文件选择,用于之后上传文件 |
| input | submit | 提交按钮 |
| input | reset | 密码框,用于输密码 |
| input | button | 普通按钮,默认无功能,之后配合js添加功能 |
- 常用属性:placeholder
| 属性名 | 说明 |
|---|---|
| placeholder | 占位符,提示用户输入内容 |
姓名:<input type="text" placeholder="请输入您的姓名">
密码:<input type="password" placeholder="请输入您的密码">
- radio常用属性(单选&默认选中)
| 属性名 | 说明 |
|---|---|
| name | 分组,有相同name属性值的单选框为一组,一组中同时只能有一个被选中 |
| checked | 默认选中 |
性别:<input type="radio" name="sex">男<input type="radio" name="sex">女
性别:<input type="radio" name="sex">男<input type="radio" name="sex" checked>女
- file常用属性(上传多个文件)
| 属性名 | 说明 |
|---|---|
| multiple | 多文件选择 |
上传文件<input type="file" multiple>
- 按钮(submit&reset&button)
ps.有表单域标签按钮才生效(
)
| 属性名 | 说明 |
|---|---|
| value | 给按钮添加文字 |
提交按钮:<input type="submit" value="提交按钮"><br><br>
重置按钮:<input type="reset"><br><br>
普通按钮:<input type="button" value="普通按钮"><br><br>
button标签
- type属性值
| 标签名 | type属性值 | 说明 |
|---|---|---|
| button | submit | 提交按钮 |
| button | reset | 密码框,用于输密码 |
| button | button | 普通按钮,默认无功能,之后配合js添加功能 |
<button>普通按钮</button>
<button type="submit">提交按钮</button>
<button type="reset">重置按钮</button>
ps.
- 谷歌浏览器中button默认是提交按钮
- button标签是双标签,便于包裹其他内容
select下拉菜单
-
标签组成:
- select标签:下拉菜单的整体
- option标签:下拉菜单的每一项
-
常见属性:
- selected:下拉菜单的默认选中
-
select标签结构:
所在城市:
<select>
<option> 北京</option>
<option>上海</option>
<option>广州</option>
<option>深圳</option>
</select>
- selected:
所在城市:
<select>
<option> 北京</option>
<option>上海</option>
<option>广州</option>
<option selected>深圳</option>
</select>
textarea文本域标签
-
常见属性:
- cols:规定了文本域内可见宽度
- rows:规定了文本域内可见行数
-
注意点:
- 右下角可以拖拽改变大小
- 实际开发时针对于样式效果推荐用CSS设置
<textarea cols="30" rows="10"></textarea>
label标签
用于绑定内容与表单标签的关系
-
使用方法1:
- 使用label标签把内容(如文本)包裹起来
- 在表单标签上添加id属性
- 在label标签的for属性中设置对应的id属性值
性别:
<input type="radio" name="sex" id="nan"><label for="nan">男</label>
<input type="radio" name="sex" id="nv"><label for="nv">女</label>
-
使用方法2:
- 直接使用label标签把内容(如文本)和表单标签一起包裹起来
- 需要把label标签的for属性删除即可
性别:
<label><input type="radio" name="sex">男</label>
<label><input type="radio" name="sex">女</label>
语义化标签
没有语义的布局标签-div和span
div标签
一行只显示一个(独占一行)
<div>这是div标签</div>
<div>这是div标签</div>
span标签
一行可以显示多个
<span>这是span标签</span>
<span>这是span标签</span>
有语义的布局标签
在HTML5新版本中推出,用于手机网页制作
| 标签名 | 语义 |
|---|---|
| header | 网页头部 |
| nav | 网页导航 |
| footer | 网页底部 |
| aside | 网页侧边栏 |
| section | 网页区块 |
| artice | 网页文章 |
<header>网页头部</header>
<nav>网页导航</nav>
<footer>网页底部</footer>
<aside>网页侧边栏</aside>
<section>网页区块</section>
<artice>网页文章</artice>
字符实体
通过字符实体显示特殊符号效果
- 多个空格显示
| 显示结果 | 描述 | 实体名称 |
|---|---|---|
| 空格 |
语义化
● HTML中的元素、属性及属性值都拥有某些含义
开发者应该遵循语义来编写HTML
语义化的好处
- 代码可读性
- 可维护性
- 搜索引擎优化
- 提升无障碍