当前位置: 首页 > news >正文

【架构师(第五十二篇)】 几个前端工具的基本使用

前端截图

html2canvas 基本用法

import html2canvas from 'html2canvas'
const screenshot = () => {// 获取需要截图的 dom 节点const el = document.getElementById('target-id')// 第一个参数是节点,第二个参数是一些配置// 默认是不对跨域资源做处理, 需要添加额外的配置 useCORS,并且需要资源本身支持跨域// scale 默认使用 window.devicePixelRatio 导致图片尺寸可能和设置的不同, 这里手动改为1html2canvas(el, { width: 375, useCORS: true, scale: 1 }).then(canvas => {// 获取要显示的节点const image = document.getElementById('show-id')// 调用 canvas 的 toDataUrl 方法转成 base64 的图片赋值给 srcimage.src = canvas.toDataUrl()})
} 

踩坑1

在截图的时候,虽然设置了 width,但是会出现实际尺寸和设置的值不一样的情况。

设备像素/物理像素

设备像素也被称为物理像素,是显示设备中一个最微小的物理部件,在同一设备中,物理像素的总数是固定的。

独立像素/CSS像素

CSS 像素是一个抽象的单位,主要使用在浏览器上,用来精确的度量 Web 页面上的内容,CSS 像素被称为与设备无关的像素(device-independent像素),简称为 DIPs

window.devicePixelRatio

返回当前显示设备的物理像素分辨率与CSS像素分辨率之比,简单来说,它告诉浏览器应该使用多少屏幕实际像素来绘制单个 CSS 像素。

所以在标准屏幕下,devicePixelRatio 应该为 1

特例

视网膜(Retina)显示屏,它会使用更多的屏幕像素绘制相同的对象,从而获得更清晰的图像,devicePixelRatio2

所以虽然我们设置的元素 css 尺寸是 375px,但是因为 Apple 是视网膜屏幕,所以使用了两倍于 css 尺寸的设备像素来渲染它,这就是最后图片尺寸为 750px 的原因。

踩坑2

html2canvas 在截图的时候, 无法渲染 box-shadow 属性,哪怕是初始值,会渲染出一块黑色的东西。

需要把 box-shadow 属性的值给设置为 none

另外,无法截取隐藏部分的内容。

生成二维码

qrcode

TS 需要单独安装类型文件

npm install --save qrcode
npm install --save-dev @types/qrcode 

基础用法

// 需要一个 canvas 节点
<canvas id='canvas-qrcode'></canvas>

import QRCode from 'qrcode'

const qrCode = () => {// 获取需要生成二维码的 dom 节点const ele = document.getElementById('canvas-qrcode')// 生成二维码QRCode.toCanvas(ele, 'www.baidu.com', { width: 100 }).then(() => {console.log('success')})
} 

复制到剪切板

TS 不需要单独安装类型文件

npm install --save clipboard 

基础用法

// 需要一个目标元素, 拥有唯一的 id
<div id='target-id'>我是被复制的内容</div>
// 需要一个进行复制操作的元素 ,需要添加自定义属性 data-clipboard-target, 需与目标 id 相同
// data-clipboard-action 属性是要进行的操作, 默认是 copy 复制, 也支持 cut 剪切
<div data-clipboard-target="#target-id" class="copy-btn" data-clipboard-action="cut">点我进行复制</div>

import Clipboard from 'clipboard'

// 参数是复制元素的选择器
const clipboard = new Clipboard(".copy-btn")

// 基于事件的回调
clipboard.on('success', (e) => {console.log('复制成功');e.clearSelection()
})
clipboard.on('error', (e) => {console.log('复制失败');
}) 

下载文件

FileSaver.js

TS 需要单独安装类型文件

npm install --save file-saver
npm install --save-dev @types/file-saver 

基础用法

import { saveAs } from 'file-saver'

// 第一个参数是文件, 字符串或blob类型, 第二个参数是文件名
saveAs(file, filename) 

最后

整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

相关文章:

  • 关于为什么要做量化白皮书这件事
  • 韩顺平java-枚举和注解异常包装类
  • Web3中文|可判115年监禁的FTX创始人SBF即将被引渡到美国
  • 【蓝桥杯】第10届Scratch国赛第6题程序1 -- 捉迷藏
  • 【语义感知:IVIF:实时:高级视觉任务循环】
  • 154. SAP UI5 Smart Table 和 Smart Filter Bar 的联合使用方法介绍
  • 倒在转“码”路上的文科生,文科生也能转行做IT吗?
  • 百果园通过港交所上市聆讯:八成营收来自加盟店,余惠勇为董事长
  • [含文档+PPT+源码等]基于SSM框架图书借阅管理系统开发与设计
  • K8S——存储ConfigMap
  • C++:类和对象:运算符重载
  • 现在转行计算机如49年入国军?
  • 小哥用Python兼职月入过万,用Python做项目有多赚钱?
  • 【架构师(第五十一篇)】 服务端开发之技术方案设计
  • 系统架构设计师教材改版,2023年软考考试难度上升
  • 【C语言进阶】进来抄作业,完善你的通讯录(软工期末大作业可用)
  • WebMagic
  • 必须要学习的源码--ConcurrentHashMap
  • 常见的数据通信方式有哪些?
  • 刷题记录:牛客NC16544简单环