c3h5es6

鲁丰
2023-12-01

c3html5es6总结

一、语义化:看到它就知道它是干啥的

语义化标签:使用单词作为标签,使标签更容易被识别

常见的语义化标签 结构化标签:headder  main   footer  nav        aside

                               头部   主体       尾部  导航栏     侧边栏

文本标签:p ,h1-h2, strong加粗 , i斜体,del删除

什么是HTML语义化?HTML语义化的好处是什么?

  html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;

  即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;

  搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;

  使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

什么是SEO? 如何做SEO优化?

    SEO,是英文SearchEngineOptimization的缩写,中文的意思: 搜索引擎优化。SEO的目的就是让网站或者网页在搜索结果中,处于靠前的位置。

    实现SEO优化的方式有:

    1、合理的title、description、keywords:搜索对着三项的权重逐个减小,title值强调重点即可;description把页面内容高度概括,不可过分堆砌关键词;keywords列举出      重要关键词。

    2、语义化的HTML代码,符合W3C规范:语义化代码让搜索引擎容易理解网页

    3、重要内容HTML代码放在最前:搜索引擎抓取HTML顺序是从上到下,保证重要内容一定会被抓取

    4、重要内容不要用js输出:爬虫不会执行js获取内容

    5、少用iframe:搜索引擎不会抓取iframe中的内容

    6、非装饰性图片必须加alt

    7、提高网站速度:网站速度是搜索引擎排序的一个重要指标。

二、音视频标签

audio 音频标签 video 视频标签

src 属性设置音视频资源路径

controls 属性设置播放控制器

autoplay 属性设置自动播放,需要开启浏览器权限

loap 属性设置循环播放

audio.load() 加载

audio.play() 开始播放

audio.pause() 暂停

audio.currentTime = 30 设置播放速度

三、弹性布局

特点:

  1.弹性布局要设置给父元素标签,把父标签设置为弹性布局容器,其所有一级子标签会作为弹性项目,按照弹性布局排列

  2.默认弹性布局元素从左到右排列,高度为100%(包含margin)

  3.弹性布局不在有行标签和快标签之分

  4.弹性布局如果一行放不下,其空白区会被压缩,当没有空白区域时,会溢出,单不会换行,可以设置换行

flex-wrap: wrap; 换行

设置水平方向排列规则:

 flex-start 默认从左向右

 flex-endd  从右到左

 center     居中

 space-between 两端对齐

 space-around  环绕对齐

 space-evenly  平分对齐

justify-content: space-evenly;  设置垂直对齐方式(适用于单行)

  flex-startb 默认靠上

  flex-end    靠下

  center      居中

  

align-items: center;  设置垂直对齐方式(适用于多行)

  align-content 和 justify-content 值相同

  align-content: flex-start

  注意单行和多行不要一起用

alian-self: flex-end;

align-self 对应 align-items 的值

可以给弹性元素单独设置布局方式和其他元素不同

order: 5;

order 用于设置弹性元素在弹性容器中的排列顺序 默认值为0 可以为负值 值越大 排名越靠后

flex-grow: 2;

flex-grow 元素多的扩展值,就是当弹性容器的宽度用不完,弹性有间隙时,设置某一个元素占用间隙的比例值,默认0,不占用间隙

flex-shrink: 0;

flex-shrink 元素的压缩值,就是当不换行且弹性内部有空白时,设置某一个元素被压缩的比例值,默认值1,等比例压缩

流式布局: 网页默认的布局方式, 元素按照行标签从左向右,块标签从上向下依次排列, 尽量不使标签重叠

    弹性布局: html5新增的网页布局方式, 需要手动设置, 有如下特点:

    1,弹性布局总是给父元素设置, 对第一级子元素起效

    2,弹性布局元素默认从左向右排列,不换行,高度为100%(包含margin)

    3,弹性布局元素没有行标签块标签之分,可以正常设置宽距和宽高

    4,弹性布局元素不能使用浮动, 可以使用定位

    

总结: 弹性布局中的属性设置:

 弹性容器的属性设置:

    display: flex;   设置弹性容器

    flex-wrap: wrap; 设置换行

    justify-content: space-evenly;  设置说水平对齐方式

    align-items: center;    设置单行对齐方式

    align-content: flex-start;  设置多行对齐方式

    弹性元素的属性设置:

    align-self: flex-end; 弹性元素单独对齐

    order: 1;  弹性元素的排列顺序

    flex-grow: 2  元素扩展比例

    flex-shrink: 0;元素压缩比例

    space-between 两端对齐

    space-around  环绕对齐

space-evenly  平分对齐

四、响应式布局

 概念:在浏览器窗口尺寸变化时,是一个网页在不同宽度的窗口上显示不同的排版样式和内容

 使用场景:一般用于pc端网页

 实现原理:使用媒体查询

五、浏览器适配

  概念:在浏览器窗口尺寸变化时,是一个网页在不同宽度的窗口上显示相同的排版样式和内容

  

  使用场景:一般用于移动端

  实现原理:视口单位 vw / vh

六、浏览器兼容

  概念:在浏览器窗口尺寸变化时,使一个网页在不同浏览器的窗口上显示相同的排版样式和内容

  使用场景:在不同内核和不同版本浏览器上的兼容(兼容低版本浏览器)

  实现原理:代码优化

七、媒体查询

   css3新增的功能,可以限制css样式渲染的条件,当满足条件时渲染样式,从而达到响应式布局效果

   结构:

        @media  媒体类型 and (媒体特性){ 条件满足时,渲染的css样式 }

        媒体类型:此样式在什么设备上生效  all / screen

        媒体特性:此样式渲染的条件,min-width / max-height

        

八、适配

  在不同的设备上显示相同的样式

  viewwport: 视口,可视窗口,一般指移动端屏幕窗口

  

  移动端视口中有两个长度单位 vw 和vh

  

  vw: viewportWidth 视口宽度 100vw == 视口宽度

  vh: viewportHidth 视口高度 100vh == 视口高度

九、requestAnimationFrame

  requestAnimationFrame 和 setTimeout 类似, 都是一个短暂不重复的计时器

  setTimeout可自定义计时时间

  requestAnimationFrame 的计时时间是默认的, 一帧的时间,约等于16.67ms

  由于收到设备性能的影响, 网页的刷新率(帧率)不一定准确维持在60帧/s, 可能偏高或偏低, 所以16.67ms的帧时间是一个大概的值,不是定值

  requestAnimationFrame 优点: 在保证动画流畅运行的前提下, 最大限度的节约性能消耗

十、地理位置

 window.navigter.geolocation 是H5新增的API,用于浏览器获取位置的信息

 window.navigater.geolocation.getCurrentPostion(res=>{ console.log(res.coords) })

 accuracy 定位精度

 altitude 海拔高度

 altitudeAccuracy 海拔精确度

 heading   移动方向

 latitude  纬度

 longitude 经度

 speed     移动速度

十一、canvas

  css设置尺寸只能缩放画布,不能改变画布实际尺寸

  属性height/width设置的才是画布的实际尺寸

  

  获取canvas标签元素

  @type {HTML CanvasElement} 添加canvas  API语法提示

Canvas绘图API:

(一) 方法:

getContext("2d")    创建绘图对象

beginPath();       开始绘制路径

closePath(); 结束绘制路径,闭合线框

moveTo(x,y); 移动到绘制起点

lineTo(x,y); 画线段到指定点

arc(x,y,r,start,end); 绘制圆形(弧度单位)

quadraticCurveTo(x,y,endX,endY) 二次贝塞尔曲线

bezierCurveTo(x1,y1,x2,y2,endX,endY) 三次贝塞尔曲线

stroke(); 线条类型

fill(); 填充类型

fillRect(x,y,w,h) 填充矩形

strokeRect(x,y,w,h) 线框矩形

clearRect(x,y,w,h) 清除矩形

strokeText(string,x,y) 绘制线条文字(空心)

fillText(string,x,y) 绘制填充文字(实心)

drawImage(img,x,y,width,height)  绘制图片(需在img的load函数中)

save() 保存当前状态设定

restore() 恢复到保存之前的状态设定

rotate() 旋转画布角度(弧度制)

(二) 属性:

fillStyle 填充颜色(支持rgb(),#fff,red)

strokeStyle 线条颜色

lineWidth 线条宽度(整数值,默认单位px)

lineJoin 折线拐角类型 (round表示圆角)

font   支持多个值, 例如"10px 宋体"

textBaseline 文字基点(默认bottom左下为基准点, top为左上)

globalCompositeOperation 绘制合成(具体值参考附件)

十二、WebWoker多线程

   分线程使用的API:

         new Worker()   创建分线程

         postMessage()  线程之间发送数据

         onmessage      事件,接收线程发送的数据

         概念

         进程: 一个应用的代码执行流程, 一个应用有且仅有一个进程

         线程: 也叫分线程, 可以独立于主线程执行, 通过代码创建, 可以没有也可以个

         主线程: 同进程

         分线程: 同线程

注意事项:

         1, 分线程不能调用界面相关API,只有主线程可以操作界面

         2, 线程之能同源访问, 跨域无法引入分线程脚本, 网页不能使用file协议本开

         3, 分线程和主线程作用域相互隔离,不能直接调用数据, 需要使用postMessa和      onmessage发送和接收

         4, 分线程不能执行界面相关的alert()等API,但可以执行与界面无关的ajax请求

         5, 分线程无法读取本地文件, 分线程中的数据都要来源于网络

  

十三、块级作用域

ES5创建变量使用var

 var a=1; var b=2;

 function addd(){

   var c=3;

   console.log(a,b,c)

 }

  

var 关键字定义变量有两个作用域 全局作用域 和 局部作用域

let 关键字定义变量有三个作用域 全局作用域 和 局部作用域

  全局变量:在全局范围内定义的变量

  局部变量:在函数内部定义的变量

  块级变量:在语法块中定义的变量 比如循环判断语法块

举例:使用在语法块中定义的变量,只能在语法块中使用

总结: let和var的两点主要区别:

   1, var 在同一作用域可以重复定义同一个变量, let不行

   2, var 没有块级作用域, 在循环中定义的变量都是全局的, 会相互覆盖,  let在循环中定义的   变量都是独立的,互不影响

十四、const常量

 ES6新增了两个关键字  let 定义变量 const定义变量

 使用const定义的是常量,它只能/必须初始化一次,初始化之后不可修改

总结:

    const定义值类型数据,绝对不能改

    const定义引用类型数据,数据内容(对象/数组中的数据)可以改,引用类型本身(内存地址)不能改

十五、箭头函数

  如果箭头函数只有一个参数,可以省略小括号

  如果箭头函数的函数体中只有一句return返回,return和{}可同时省略

总结: 箭头函数用法:

  1, 在事件函数或计时器或异步回调函数中可以保留this上下文指向

  2, 箭头函数在参数和返回值处,满足条件时,都可以简化

  3, 在对象中有一个简化的函数写法

  在node环境下,this默认指向空对象

  console.log(1, this)  // {}

  可以修改这个对象

  this.name = "zhangsan"

  console.log(2, this)  // {name: "zhangsan"}

  setTimeout会把this指向修改为Timeout对象

  setTimeout(function(){

    console.log(3, this) // Timeout

  }, 1000);

  箭头函数会保留this的上下文指向, 使this指向和setTimeout外部相同

  setTimeout(() => {

    console.log(4, this) // {name: "zhangsan"}

  }, 1000);

十六、数组对象的结构赋值

 数组结构允许我们直接使用变量读取数组中的数据

 由于数组有顺序,在结构时,一般前边变量个数和数组中数据个数要一一对应

 可以使用 ...语法结构数组中的一部分数据

 总结:

   数组解构:  var [count1,count2,...count3] = array

   数组赋值1:  array.push(...array2)

   数组赋值2:  array = [...array, ...array2, 5,6,7]

   对象解构:  var { age } = student

   对象赋值:  {...student, height:120}

  

十七、参数的默认值

 js函数定义时有两个参数,调用时必须传入至少两个参数

 如果传入的实参少于形参的个数,为防止错误,可以给形参设置默认值

 ES5使用 || 设置默认值

 function add(a,b){

     a = a || 0

     b = b || 0

     console.log(a+b)

  }

  ES6使用 初始化形参 设置默认值

  function add3(a=0,b=0){

     console.log(a+b)

   }

关于函数的参数, 如果参数个数不确定, 如果获取所有参数

   ES5中通过arguments字段获取参数数组

  function add4(){

     // arguments是一个类数组, 里边放了所有参数

    console.log(arguments, Array.from(arguments))

  }

ES6中通过形参...arr获取参数数组

  function add5(...array){

     形参array是所有参数所在的数组

    console.log(array)

   }

十八、类的创建于继承

 ES6中把工作函数做了进一步封装和优化 叫做类

 类是构造函数的变体,它内部也是构造函数结构,都用于创建对象

 使用class关键字定义一个类

 class People1 {

    // 每一个类中都有一个构造器, 相当于构造函数

    constructor(name, age){

        this.name = name

        this.age = age

    }

    // age = 20  写这里是固定属性, 每一个对象的指都相同

    eat(){

        console.log(this.name+"是一个"+this.age+"岁的吃货")

    }

  }

   var lisi = new People1("李四", 30)

   lisi.eat()

  // 类的继承: 基于构造函数和原型的继承,但类的继承已经内部实现了原型继承, 所以使用类时,不必考虑原型,   使用extends实现类的继承

  // 定义一个新的类Student, 继承People1,  People1作为父类, Student为子类

  // 总结: 关于es5的构造函数和es6的类

  // 1, 类是基于构造函数,是对构造函数的一个封装

 // 2, 类可以像构造函数一样继承, 而且无需再考虑原型的继承

 // 3, 一个类只能继承一次, 只能有一个父类,  但可以拥有多个子类

十九、promise

 函数中有异步函数操作时,return是无效的

 js代码执行过程中,分为同步和异步

 同步:代码从上向下依次执行,上一句执行完,下一句,js通过

 异步:特殊情况下,异步代码可以和其它代码同时执行,互不影响,不 严格按照顺序执行,常见的异步执行逻辑有 计时器,js事件, ajax,promise调用

异步代码标志: 回调函数

  

使用new创建promise对象这个操作是同步的,then函数的调用时候异步的,简单说promise是异步的

  promise有一个类函数all,可以把多个promise对象合并一个,当所有promise对象都调用resolve后,才会调用合并后的then

   all合并后的then回调函数参数是一个数组,数组中按照合并顺序依次获取每一个promise对象的成功数据

 类函数:就是使用类名调用的函数 如all()

 实例函数:就是使用对象调用的函数 如then()

  总结: 说一下你对promise的理解?

  promise 是es6新增的一个类,主要用于解决项目开发中常见异步回掉地域问题,原理上是对回调函数的封装, 开发中经常用于多异步任务嵌套时和多异步任务并发时

二十、async await

  async 用于放在函数function前,修饰函数

  在函数前添加async标记可以使此函数变为异步函数

  箭头函数也可以定义为异步函数

   async异步函数的返回值总是一个promise对象

    await关键字一般放在promise对象前边, 等待promise对象成功的结 果,一旦成功, 无需调用then, 而是通过同步返回值的形式拿到   promise中的异步结果

  await的作用是让异步回调结构改成同步返回值结构,依然能拿到数据, 好处是简化代码结构, 减少嵌套, 优化语法结构

   await只能在async函数中使用

二十一、es6模块化

 把一个整体的js文件或代码块通过功能性分割多个js文件或代码块,这样每一个js文件称之为一个模块化

  模块化语法:

     导出:export default data

     导入:import data form "path"

  es6模块化一般用于vue框架或react框架中

  

 从模块myModule中导入数据

import count from "./myModule.js"

   Cannot use import statement outside a module  不识别import这个语法, 因为es6模块化语法是不能直接在node或浏览器执行的

二十二、多列布局

多列布局:

column-count:;分列

column-gap:;列间距

column-rule:大小 形态 颜色;分割线

column-fill:;列的高度是否统一

auto 列高度自适应内容

balance 所有列的高度以其中最高的一列统一

column-span:;是否横跨所有列

none 不跨

all 横跨所有

column-width:;列宽

 类似资料:

相关阅读

相关文章

相关问答