前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • JavaScript Part 1

    • Ajax总结篇
    • Canvas 绘制八大行星
    • Canvas 绘制动画时钟
    • Canvas 绘制粒子动画背景
    • DOM编程之API学习总结篇
    • JS 中的 call、apply、bind 方法
    • JS 中的事件绑定、事件监听、事件委托
    • JS常用的内置函数整理
    • JS继承的几种方法总结
    • JS计算字符串所占字节数
    • JavaScript-DOM事件
    • JavaScript事件机制
    • JavaScript代码片段100个
    • JavaScript作用域分析总结
    • JavaScript原型链回顾
    • JavaScript原生数组及高阶函数
    • JavaScript及jQuery中的各种宽高属性图解
    • JavaScript启示录阅读笔录
    • JavaScript对象
    • JavaScript工程项目的一系列最佳实践
    • JavaScript常用API合集
    • JavaScript常用的代码片段
    • JavaScript数组、字符串、对象常用方法
    • JavaScript数组方法总结篇
    • JavaScript深浅拷贝
    • JavaScript继承的几种方式
    • JavaScript词法分析和作用域闭包
    • JavaScript运动框架之速度时间版本
    • JavaScript运行机制Event Loop
    • JavaScript防抖节流原理
    • Javascript中的复制粘贴功能
    • Javascript常用方法函数收集
    • Javascript数组详解
    • OOP之原型与原型链
    • OOP之类与对象
    • OOP之面向对象
    • Object.defineProperty详解
    • V8源码浅析JS数组常见方法
    • arguments详解
    • await 在 forEach 中不生效解决方案
    • iframe+表单跨域提交POST请求
    • javascript 下常用的字符串操作
    • javascript常用积累
    • javascript笔记总结篇
    • parsetInt parsetFloat与eval isNaN用法
    • 业务中处理数据结构常用的JS方法
    • 作用域
    • 你真的掌握变量和类型了吗
    • 前后端分离之数据Mock
    • 原型与原型链
    • 原生JS与jQuery操作DOM对比
    • 原生JS补给(上)
    • 如何写出一个惊艳面试官的深拷贝
    • 带你填一些JS容易出错的坑
    • 彻底弄懂 JavaScript 执行机制
    • 执行上下文 执行栈
    • 梳理常用的正则表达式
    • 正则回顾总结
    • 正则基础知识
    • 正则完整篇
    • 正则表达式
    • 浅析JSON stringify
    • 浅析Promise原理
    • 浅谈JavaScript中的异步处理
    • 浅谈闭包
    • 深拷贝 vs 浅拷贝
    • 编写可维护的JavaScript
    • 聊一聊typeof instanceof 实现原理.
    • 聊一聊闭包
    • 高阶函数map reduce filter
  • JavaScript Part 2

  • CSS

  • HTML

  • Jquery

  • ES6

  • 小程序

  • Vue

  • React

  • 深入React

  • React Native

  • NodeJS

  • Angular

  • TypeScript

  • Webpack

  • 浏览器

  • 移动端

  • 前端工程化

  • Electron

  • HTTP

  • Nginx

  • Linux

  • 数据结构与算法

  • LeetCode算法题

  • 综合

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

# 一、Canvas API


canvas API是H5标准中最复杂的部分, 它提供几种属性和方法,可以在canvas元素上创建图形应用

# 方法


以下方法专门用于调用canvas API

  • getContext(context)创建可绘制图形的画布上下文,接受两个值,2d和3d

  • fillRect(x,y,width,height) 绘制实心矩形

  • strokeRect(x,y,width,height)绘制矩形轮廓

  • clearRect(x,y,width,height)清除画布指定区域内容

  • createLinearGradient(x1,y1,x2,y2)创建一个线性渐变效果

  • createRadialGradient(x1,y1,r1,x2,y2,r2)创建一个放射渐变效果

  • addColorStop(position,color)用于声明渐变颜色 position范围是0.0-1.0 用于确定颜色开始变化位置

  • beginPath() 开始一条新路径

  • closePath()在路径最后实现封闭该路径,它会生成一条直线,连接笔触的最后一个位置与路径的起点。如想要保持路径开放,使用fill()绘图,不用这个方法

  • stroke() 用于创建路径轮廓

  • fill()用于绘制实心形状

  • clip()用于创建一个由路径定义的裁剪区域,只有在落入形状内的内容才绘制到画布上

  • moveTo(x,y)将虚拟笔触移到新位置,下一个方法会从改点的开始继续设置路径

  • lineTo(x,y)在新路径上添加一条直线

  • rect(x,y,width,height)在路径为(x,y)位置上添加width和height矩形

  • arc(x,y,radius,startAngle,endAngle,direction)在路径上添加一条弧线 ,x,y指定弧线的中心,角度单位为弧度,direction是一个表示顺时针或逆时针的布尔值。使用公式 Math.PI/180x角度,将角度转换为半径

  • strokeText(text,x,y,max) 直接在画布上绘制文字轮廓。可选参数,max声明文字最大尺寸

  • fillText(text,x,y,max)直接在画布上绘制实心文字。可选参数,max声明文字最大尺寸

  • translate(x,y) 将画布原点移到点(x,y)处,原点(0,0)初始位置位于canvas所在区域的左上角

  • rorate(angle) 这个方法可以使画布原点为中心发生旋转,角度必须是弧度。使用公式 Math.PI/180x 将角度转换为弧度

  • scale(x,y) 改变画布比例 默认值是(1.0,1.0)这些值可以是负值

  • transform(m1,m2,m3,m4,dx,dy)修改画布的转换矩阵。新矩阵是基于之前的矩阵得到的

  • setTransform(m1,m2,m3,m4,dx,dy)修改画布的转换矩阵。重置之前的值,声明新的值

  • save()保存画布状态,包括转换矩阵、样式属性、裁剪遮罩

  • restore() 恢复上一次保存的状态

  • drawImage() 在画布上绘制图像

# 属性


canvas API专用属性列表

  • rect( x, y, width, height ) 绘制矩形

  • fillRect( x, y, width, height ) 绘制被填充的矩形

  • strokeRect( x, y, width, height ) 绘制矩形(无填充)

  • clearRect( x, y, width, height ) 清除指定的矩形内的像素

  • fill() 填充当前绘图(路径)

  • stroke() 绘制已定义的路径

  • beginPath() 起始(重置)当前路径

  • moveTo( x, y ) 将笔触移动到指定的坐标(x,y)

  • lineTo( x, y ) 绘制一条从当前位置到指定的坐标(x,y)的直线

  • clip() 从原始画布剪切任意形状和尺寸的区域

  • quadraticCurveTo() 创建二次贝塞尔曲线

  • bezierCurveTo() 创建三次贝塞尔曲线

  • arc( x, y, radius, startAngle, endAngle, anticlockwise) 绘制圆或圆弧

  • arcTo( x1, y1, x2, y2, radius) 根据给定点画圆弧,再以直线连接两个点

  • isPointInPath( x, y ) 检测指定的点是否在当前路径中,在则返回true。

  • fillStyle 设置或返回用于填充绘画的颜色、渐变或模式

  • strokeStyle 设置或返回用于笔触的颜色、渐变或模式

  • shadowColor 设置或返回用于阴影的颜色

  • shadowBlur 设置或返回用于阴影的模糊级别

  • shadowOffsetX 设置或返回阴影与形状的水平距离

  • shadowOffsetY 设置或返回阴影与形状的垂直距离

  • lineCap 设置或返回线条的结束点样式(butt、round、square)

  • lineJoin 设置或返回当两条线交汇时,边角的类型(bevel、round、miter)

  • lineWidth 设置或返回当前的线条宽度

  • miterLimit 设置或返回最大斜接长度

  • createLinearGradient( x0, y0, x1, y1 ) 创建线性渐变

  • createPattern( image/canvas/video, repeat ) 在指定的方向内重复绘制指定的元素

  • createRadialGradient( x0, y0, r0, x1, y1, r1 ) 创建径向渐变

  • addColorStop( stop, color ) 规定渐变对象中的颜色和停止位置

  • font 设置或返回文本内容的当前字体属性(和css的font一样)

  • textAlign 设置或返回文本内容的当前对齐方式

  • textBaseline 设置或返回在绘制文本时使用的当前文本基线

  • fillText( text, x, y ) 在画布上绘制“被填充”的文本

  • fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • JavaScript Part 1

    • Ajax总结篇
    • Canvas 绘制八大行星
    • Canvas 绘制动画时钟
    • Canvas 绘制粒子动画背景
    • DOM编程之API学习总结篇
    • JS 中的 call、apply、bind 方法
    • JS 中的事件绑定、事件监听、事件委托
    • JS常用的内置函数整理
    • JS继承的几种方法总结
    • JS计算字符串所占字节数
    • JavaScript-DOM事件
    • JavaScript事件机制
    • JavaScript代码片段100个
    • JavaScript作用域分析总结
    • JavaScript原型链回顾
    • JavaScript原生数组及高阶函数
    • JavaScript及jQuery中的各种宽高属性图解
    • JavaScript启示录阅读笔录
    • JavaScript对象
    • JavaScript工程项目的一系列最佳实践
    • JavaScript常用API合集
    • JavaScript常用的代码片段
    • JavaScript数组、字符串、对象常用方法
    • JavaScript数组方法总结篇
    • JavaScript深浅拷贝
    • JavaScript继承的几种方式
    • JavaScript词法分析和作用域闭包
    • JavaScript运动框架之速度时间版本
    • JavaScript运行机制Event Loop
    • JavaScript防抖节流原理
    • Javascript中的复制粘贴功能
    • Javascript常用方法函数收集
    • Javascript数组详解
    • OOP之原型与原型链
    • OOP之类与对象
    • OOP之面向对象
    • Object.defineProperty详解
    • V8源码浅析JS数组常见方法
    • arguments详解
    • await 在 forEach 中不生效解决方案
    • iframe+表单跨域提交POST请求
    • javascript 下常用的字符串操作
    • javascript常用积累
    • javascript笔记总结篇
    • parsetInt parsetFloat与eval isNaN用法
    • 业务中处理数据结构常用的JS方法
    • 作用域
    • 你真的掌握变量和类型了吗
    • 前后端分离之数据Mock
    • 原型与原型链
    • 原生JS与jQuery操作DOM对比
    • 原生JS补给(上)
    • 如何写出一个惊艳面试官的深拷贝
    • 带你填一些JS容易出错的坑
    • 彻底弄懂 JavaScript 执行机制
    • 执行上下文 执行栈
    • 梳理常用的正则表达式
    • 正则回顾总结
    • 正则基础知识
    • 正则完整篇
    • 正则表达式
    • 浅析JSON stringify
    • 浅析Promise原理
    • 浅谈JavaScript中的异步处理
    • 浅谈闭包
    • 深拷贝 vs 浅拷贝
    • 编写可维护的JavaScript
    • 聊一聊typeof instanceof 实现原理.
    • 聊一聊闭包
    • 高阶函数map reduce filter
  • JavaScript Part 2

  • CSS

  • HTML

  • Jquery

  • ES6

  • 小程序

  • Vue

  • React

  • 深入React

  • React Native

  • NodeJS

  • Angular

  • TypeScript

  • Webpack

  • 浏览器

  • 移动端

  • 前端工程化

  • Electron

  • HTTP

  • Nginx

  • Linux

  • 数据结构与算法

  • LeetCode算法题

  • 综合