2021年HTML5完整版(全程无废话)

694 阅读6分钟

因从自己的语雀复制过来,若有瑕疵请移步语雀

www.yuque.com/books/share… 《Web前端学习路线|进阶版》

1 语义化标签 了解

使用语义化标签的好处是增强了代码的可阅读性,也方便了网站的seo(Search Engine Optimization,搜索引擎优化)。

  • header 头部标签

  • nav 导航标签

  • article 内容标签

  • section 块级标签

  • aside 侧边栏标签

  • footer 尾部标签

2 h5表单

h5表单分为三大部分来学习 输入标签表单属性表单事件

2.1 h5表单标签

对于h5表单标签的学习,以下案例已经包含了所有的新知识,我们只需要做个选择题即可,看着案例来学习新标签即可。

2.1.1. 常见输入类型

text password radio checkbox button file hidden submit reset image

2.1.2. 新的输入类型

  • email 邮箱

  • url 网址

  • search 搜索

  • tel 电话

  • 日期等

  • date

  • time

  • datetime

  • datetime-local

  • month

  • week

  • number 数字输入框

  • min 最小值

  • max 最大值

  • step 步长

  • range 范围

  • min 最小值

  • max 最大值

  • step 步长

  • color 颜色

  • 标签的value属性中写颜色值只能写 这格式 #000000

  • datalist 可输入表单

2.2. h5表单属性

  • placeholder:占位符-提示信息

  • autofocus:自动获得焦点-一般页面中放1个

  • autocomplete 自动完成

  • 当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。

  • 默认已经打开 如 autocomplete=on 关闭 autocomplete =off

  • 需要放在表单内同时加上name属性

  • multiple:可以多选文件提交

  • 结合文件上传标签 <input type="file" > 一起使用

  • form属性,可以将输入标签放在表单的外面,还受到表单的管理

    <!-- 指定了id为ff -->
    <form action="" id="ff" >
      <input type="submit" value="提交">
    </form>
    <!-- 指定了属性form,值为表单的id=ff -->
    <input type="text" required form="ff"  >
    
  • required:必填验证

  • novalidate:关闭验证

  • 在表单上添加该属性,那么在提交的时候就不会再执行 required验证

  • pattern:自定义验证-通过编写正则表达式自定义验证规则 一般和required同时使用

  • 表单事件

2. 多媒体标签

多媒体标签分为 音频 audio 和视频 video 两个标签 使用它们,我们可以很方便的在页面中嵌入音频和视频,而不再去使用落后的flash和其他浏览器插件了。

因为多媒体标签的 属性、方法、事件比较多,因此我们需要什么功能的时候,就需要去查找相关的文档进行学习使用。

2.1. audio 音频标签

使用

<audio src="小猪佩奇.mp3" autoplay> </audio>

支持的格式

格式

MIME-type

MP3

audio/mpeg

Ogg

audio/ogg

Wav

audio/wav

2.2. video 视频标签

使用

  <video src="小猪佩奇.mp4" autoplay controls ></video>

支持的格式

格式

MIME-type

MP4

video/mp4

WebM

video/webm

Ogg

video/ogg

video常用属性、方法、事件

属性

方法

事件

duration 视频播放时长

play 播放

canplay 视频加载完毕 准备播放

currentTime 当前播放进度

pause 暂停

timeupdate 播放时-持续触发

volume 音量大小

source标签

可以通过在多媒体标签内加入source标签,用来指定多个播放路径,当第一个source标签的路径出错时,自动会切换到第二个source标签

    <!-- 当1.mp4出错时,自动切换到2.mp4 ... -->
    <video >
      <source src="1.mp4">
      <source src="2.mp4">
      <source src="3.mp4">
    </video>

object-fit属性

video标签视频内容宽度没有铺满video标签时,可以在css写上 该属性即可

    video {
      /* 让视频内容铺满整个video标签 */
      object-fit: fill;
    }

2.3. 兼容性

因为多媒体标签在不同的浏览器下是不一样的外观,我们有时候需要统一所有的样式,所以就需要我们自己使用div + 多媒体 的一些api实现 控制条工具 。

2.4. 公共属性

以下属性 是要直接写在标签上的 如 autoplay controls

<video src="小猪佩奇.mp4" autoplay controls ></video>

属性

描述

autoplay

autoplay

如果出现该属性,则音频在就绪后马上播放。

controls

controls

如果出现该属性,则向用户显示控件,比如播放按钮。

loop

loop

如果出现该属性,则每当音频结束时重新开始播放。

muted

muted

规定视频输出应该被静音。

preload

preload

如果出现该属性,则音频在页面加载时进行加载,并预备播放。如果使用 "autoplay",则忽略该属性。

src

url

要播放的音频的 URL。

3. 伪类选择符

伪类选择符其实我们在基础班就已经学习过一些了,看看它们的大家族

因为有些常用 有些不常用。所以我们就只学习常用的即可

3.1. E:first-child

匹配父元素的第一个子元素E。

  <style>
    ul li:first-child{
      background-color: red;
    }
  </style>

  <ul>
    <li>列表项一</li>
    <li>列表项二</li>
    <li>列表项三</li>
    <li>列表项四</li>
  </ul>

E:last-child 则是选择到了最后一个li标签

3.2. E:nth-child(n) E:nth-last-child(n)

匹配到父元素的第n个元素 或者 是倒数第n个元素

相比 E:first-child 则要强大了不少,功能如下 (死记硬背是最好的

  • 匹配到父元素的第2个子元素
    ul li:nth-child(2){}

  • 匹配到父元素的倒数第2个子元素
    ul li:nth-last-child(2){}

  • 匹配到父元素的序号为奇数的子元素
    ul li:nth-child(odd){} odd 是关键字 奇数的意思(3个字母 )

  • 匹配到父元素的序号为偶数的子元素
    ul li:nth-child(even){} even(4个字母 )

  • 匹配到父元素的前3个子元素
    ul li:nth-child(-n+3){}
    选择器中的 n 是怎么变化的呢?
    因为 n是从 0 ,1,2,3.. 一直递增
    所以 -n+3 就变成了

  • n=0 时 -0+3=3

  • n=1时 -1+3=2

  • n=2时 -2+3=1

  • n=3时 -3+3=0

  • ...

  • 匹配到父元素的后3个子元素
    ul li:nth-last-child(-n+3){}

3.3. E:nth-of-type(n)

这里只讲明 E:nth-child(n)E:nth-of-type(n) 的区别 剩下的 E:first-of-type E:last-of-type E:nth-last-of-type(n) 同理做推导即可

  <style>
    ul li:nth-child(2){
      /* 字体变成红色 */
        color: red;
    }

    ul li:nth-of-type(2){
      /* 背景变成绿色 */
      background-color: green;
    }
  </style>


  <ul>
    <li>列表项一</li>
    <p>乱来的p标签</p>
    <li>列表项二</li>
    <li>列表项三</li>
    <li>列表项四</li>
  </ul>

也就是说

  • E:nth-child(n) 匹配父元素的第n个子元素E。

  • E:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素E。

4. 属性选择符 了解

  1. E[att] 选择具有att属性的E元素。

  2. E[att="val"] 选择具有att属性且属性值等于val的E元素。

  3. E[att^="val"] 选择具有att属性且属性值为以val开头的字符串的E元素。

  4. E[att$="val"] 选择具有att属性且属性值为包含val的字符串的E元素

  5. E[att*="val"] 选择具有att属性且属性值为包含val的字符串的E元素。

5. 伪元素选择器 了解

5.1. 伪元素种类

  1. E::before 在E元素前插入一个元素

  2. E::after 在E元素后插入一个元素

  3. E::first-letter 选择到了E容器内的第一个字母

  4. E::first-line 选择到了E容器内的第一行文本

5.2. h5写法和传统写法区别 了解

  1. 单冒号 E:before

  2. 双冒号 E::before

  3. 浏览器对以上写法都能识别 双冒号 是h5上语法的规范

5.3. 伪元素的注意事项 了解

想要让伪元素有效,必须遵循以下注意事项

  1. 伪元素只能给双标签加 不能给单标签加

  2. 伪元素的冒号前不能有空格 如 E ::before 这个写法是错误的

  3. 伪元素里面必须写上属性 content:"";

6. 2D转换(变换)transform

2d转换是改变标签在2维平面上的位置和形状的一种技术,先来学习2维坐标系

6.1. 2维坐标系

2维坐标系其实就是指布局的时候的坐标系 如图

6.2. 2d移动 translate

2d移动是2d转换里面的一种功能,可以改变元素在页面中的位置,类似 定位

使用2d移动的步骤:

  1. 给元素添加 转换属性 transform

  2. 属性值为 translate(x,y)transform:translate(50px,50px);

    div{ transform: translate(50px,50px); }

6.2.1 小结

  1. translate中的百分比单位是相对于自身元素的 translate:(50%,50%);

  2. translate类似定位,不会影响到其他元素的位置

  3. 对行内标签没有效果

7.sessionStorage

基本

sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,关闭浏览器之后所有的sessionStorage里面的数据将全部消失.

sessionStorage 非常适合SPA(单页应用程序),可以方便在各业务模块进行传值。

使用

在JavaScript语言中可通过 window.sessionStorage 或 sessionStorage 调用此对象,sessionStorage保存数据的操作很简单,只需要调用setItem(key,value)方法传入key和value即可

getItem(key) 即可取出对应的值,如不存在,返回 null 值

特点

  1. 同源策略限制。若想在不同页面之间对同一个sessionStorage进行操作,这些页面必须在同一协议、同一主机名和同一端口下。(IE 8和9存储数据仅基于同一主机名,忽略协议(HTTP和HTTPS)和端口号的要求)

  2. 单标签页限制。sessionStorage操作限制在单个标签页中,在此标签页进行同源页面访问都可以共享sessionStorage数据。

  3. 只在本地存储。seesionStorage的数据不会跟随HTTP请求一起发送到服务器,只会在本地生效,并在关闭标签页后清除数据。(若使用Chrome的恢复标签页功能,seesionStorage的数据也会恢复)。

  4. 存储方式。seesionStorage的存储方式采用key、value的方式。value的值必须为字符串类型(传入非字符串,也会在存储时转换为字符串。true值会转换为"true")。

  5. 存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下。

浏览器最小支持

支持sessionStorage的浏览器最小版本:IE8、Chrome 5。

适合场景

sessionStorage 非常适合SPA(单页应用程序),可以方便在各业务模块进行传值。

属性

readonly int sessionStorage.length :返回一个整数,表示存储在 sessionStorage 对象中的数据项(键值对)数量。

存储json数据

sessionStorage也可存储Json对象:存储时,通过**JSON.stringify()将对象转换为文本格式;读取时,通过JSON.parse()**将文本转换回对象。

8.localStorage

在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。

localStorage的优势

1、localStorage拓展了cookie的4K限制

2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的

localStorage的局限

1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性

2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换

3、localStorage在浏览器的隐私模式下面是不可读取的

4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡

5、localStorage不能被爬虫抓取到

localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空

使用

需要先判断浏览器是否支持localStorage功能

image

9.其它

1.杂七杂八

设置网页图标

image

2.字体标签

: 标题标签 h1-h6 表示不同大小的标题,h1最大,有自动换行功能
:水平线标签

属性: size 单位px

属性: width 单位 px 或者 百分比

: 设置字体大小,颜色标签

属性:color 颜色

属性:size 值1-7

: 加粗标签

: 倾斜标签

: 段落标签 也会自动换行


: 换行标签 ,在HTML中"回车"没有用,只有用
标签才是真正的换行

文字带下划线

文字带删除线

3.图片标签

属性: src 表示图片的路径(相对,绝对)

属性: width 宽度单位px 也可以设置百分比

属性: height 高度单位px

属性: alt 表示图片加载失败后的替代文本

title:设置当鼠标悬停到图片上的文字提示

4.列表标签

    : 无序列表

    type: disc 实心圆(默认)、square 方块 、circle 空心圆

      : 有序列表

      type: 1,A,a,i,I

      以上标签有一个公共的子标签

    1. :表示列表中的某一列

      以上标签有一个共同的属性

      type属性: 表示序号的或者图标的样式

      5.超链接标签

      点击点击链接后不会回到网页顶部

      点击 点击后会回到网面顶部

      作用:点击后可跳转到某个页面

      属性: href 点击后跳转到的那个网页地址

      属性: target 超链接被点击后以何种方式打开新的网页

      _blank:在新的空白窗口中打开

      _self: 在本页面打开

      framename:在某个框架集中打开

      6.table表格标签

      是一个容器 元素定义表格行
      元素定义表头 效果是字体加粗 元素定义表格单元格
      定义表格标题,这个标题是居中的 :表格标签

      属性: border 单位px

      属性: width 宽度 单位px 百分比

      属性: height 高度 单位px 百分比

      属性: align 整个表格的对齐方式 left center right

      : 表格的行标签

      属性:align 表示该行中所有单元格内容的对齐方式

      : 表格的行中的单元格

      属性:align 表示单元格内容的对齐方式

      以上三个标签都有一个属性:

      属性:bgcolor 值1:英文单词颜色,比如 red

      值2:#FFFFFF(红绿蓝)

      : 表头单元格,和普通的单元格的区别在于自动加粗文字,自动居中

      2.合并单元格:

      属性rowspan: 跨行合并 值表示跨几行

      属性colspan:跨列合并 值表示跨几列

      7.框架集

      作用:把多个HTML页面,整合到一个页面中

      frameset和body不能同时存在的

      //页面分成三行

      8.超文本链接

      xxx :target="_blank 是在别的页面打开,如果不写就是在当前页面打开

      9.引入静态资源文件路径问题

      ../是在相对路径时使用,它代表当前目录的父目录。假如说现在有这么一个目录:html/web/images 那么../images 就代表是web这一层 (是当前目录的上一级目录)

      10.静态引入公共页面

      a)引入头部(用到ajax技术)

      !!!需要注意,如果页面配置nginx反向代理了,会出现错乱的问题,所以需要谨慎使用.

      下面有直接抽取到javascript文件里面的,更好,可以多个文件引用

      "header"

      id=

      "header"

      >

      写JS代码:(!!!需要引入jQuery文件,否则无法使用)

      /*引入Header部分公共代码*/

      $(function(){

      $.ajax({

      type:"get",

      url:"head.html",

      async:true,

      success:function(data){

      //id选择器

      $("#header").html(data);

      }

      });

      });

      head.html

      image

      b)引入侧边栏(左边栏,和上面操作基本一样)

      HTML

      "header"

      id=

      "left"

      >

      javascript代码

      left.html

      image

      c)将上面抽取到js文件里面

      javascript文件 其他文件别忘了引入它(同时需要在jQuery文件底下,否则无法使用)

      //引入公共的头部和侧边栏

      /*引入head.html部分公共代码*/

      $.ajax({

      type:"get",

      url:"head.html",

      async:true,

      success:function(data){

      $("#header").html(data);

      }

      });

      /*引入left.html部分公共代码*/

      $.ajax({

      type:"get",

      url:"left.html",

      async:true,

      success:function(data){

      $("#left").html(data);

      }

      });