记录一个简单的全局引入scss(函数、变量、混合器)文件的问题 SCSS 的变量、函数或者混合器等内容是在编译阶段被解析的,而不是在运行时。因此,如果你想要在样式文件中使用这些内容,就需要在编译阶段将这些内容注入到每个样式文件中
事件循环解析 根据 W3C 官方的解释,每个任务有不同的类型,同类型的任务必须在同一个队列,不同的任务可以属于不同的队列。不同任务队列有不同的优先级,在一次事件循环中,由浏览器自行决定取哪一个队列的任务。所以浏览器采用异步的方式来避免。具体做法是当某些任务发生时,比如计时器、网络、事件监听,主线程将任务交给其他线程去处理,自身立即结束任务的执行,转而执行后续代码。在 Chrome 的源码中,它开启一个不会结束的 for 循环,每次循环从消息队列中取出第一个任务执行,而其他线程只需要在合适的时候将任务加入到队列末尾即可。
什么是 reflow、repaint、以及为什么 transform 的效率高? reflow 的本质就是重新计算 layout 树。当进行了会影响布局树的操作后,需要重新计算布局树,会引发 layout。为了避免连续的多次操作导致布局树反复计算,浏览器会合并这些操作,当 JS 代码全部完成后再进行统一计算。所以,改动属性造成的 reflow 是异步完成的。也同样因为如此,当 JS 获取布局属性时,就可能造成无法获取到最新的布局信息。浏览器在反复权衡下,最终决定获取属性立即 reflow。repaint 的本质就是重新根据分层信息计算了绘制指令。
浏览器是如何渲染页面的? 位置,会停止解析 HTML,转而等待 JS 文件下载好,并将全局代码解析执行完成后,才能继续解析 HTML。位置,此时外部的 CSS 文件还没有下载解析好,主线程不会等待,继续解析后续的 HTML。为了提高解析效率,浏览器在开始解析前,会启动一个预解析的线程,率先下载 HTML 中的外部 CSS 文件和 外部的 JS 文件。第一步完成后,会得到 DOM 树和 CSSOM 树,浏览器的默认样式、内部样式、外部样式、行内样式均会包含在 CSSOM 树中。例如节点的宽高、相对包含块的位置。
如何用html css js 画出曲线 或者斜线; 将图片全部定位至中心点,然后x轴就变动translateX ,y轴同理;这里有两个问题浏览器: 以左上角为原点0,0 越往下y越大数学坐标系:以中心点为原点0,0 越往下y越小;曲线函数:坐标确定了原点确定了,就需要对应的曲线函数来描述这条线段我们一个个来解决此时我们已经完成了准备工作,接着完成反向排序的准备工作,dy越大则在html中排列就越小,超越原点即为负数;原点在与你想让它在那个位置,它都可以排列到那个位置,这里我想让它在容器内渲染,所以我想设置在容器内的中心位置,那么这个中心位置,其实就是
Promise原理、以及Promise.race、Promise.all、Promise.resolve、Promise.reject实现; Promise、.all、.race、.resolve、.reject 实现,以及模拟微任务
HTML5 本地存储之IndexedDB封装及最详细教程 indexDB索引数据库,操作简便(目前主流浏览器正努力实现对index DB的支持),最主要的是我们可以很轻松的通过JS极其方便的对其调用;现今多数业务需要离线访问、或将大量数据储存在客户端,减少从服务器获取数据,直接从本地获取数据。目前做的业务中需要将图片及其他数据存储在本地、在有网时将其发送给服务器;考虑到手机图片过大、localStorage存储大小限制为5M、所以对indexDB做一封装、以便往后不再需要研究其中api、直接copy文件、调用其中方法;;本以为会有能说清楚的博客、发现大家都
webview嵌入umi开发的h5白屏 最近公司搞一个h5项目、又一个扫码的功能、要调用终端设备,因为对方的开发人员没在这边、所以让我来写一个rn的套壳app、跑一边流程;结果打包完、给我静态资源后、发现白屏;因为此项目也要能离线访问、所以需要将静态资源直接嵌入到webview中、所以让他们直接打包完之后,把文件发给我了;一开始白屏、我以为是我写的webview的问题做了一下工作;1、写了html嵌入进去没问题、2、写了node本地服务、把文件托管到静态服务上、嵌入对应地址,没问题;我想可能是h5有问题、于是我嵌入他们的本地开发地址、发
图片文件的离线缓存(base64存储、转File文件上传) 存储图片文件以localStorage为例、无法存储文件引用对象;即使我们存了,或者使用JSON.stringfy转化,在获取的时候,也只能获取到一个空对象;因为localStorage只能存储字符串、所以我们可以先把图片、转化为base64去存储;在需要使用的时候在转化base64为文件对象;其实存储图片这个需求、也不应该是通过localStorage去存储、因为对应浏览器都有相应大小的限制、只有5M左右;可以使用indexDB或其他存储手段转化图片为base64格式这里我做的业务时页面代码、
前端上传文件 设置请求头multipart/form-data 上传失败 上传文件总体来说前端上传文件一共有两种方式;1、使用base64;正常加参数上传给后台、这种方式在手机端会很慢、因为在手机在转化文件为base64时很慢;2、使用FormData 上传 设置请求头multipart/form-datacontent-type 作用是告诉服务器,浏览器发来了什么数据;在做项目时,一般会和后台协商、使用1、application/x-www-form-urlencoded传输2、application/json 传输但在上传文件时需要修改content-type