首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端性能优化 常见面试题速查

比较长网页或者应用,如果图片很多,所有的图片都被加载出来,而用户只能看到可是窗口哪一部分图片数据,对性能有浪费。 滚动屏幕之前,可视区域之外图片不会进行加载,滚动屏幕才加载。...:对渲染树某部分或者一个渲染对象进行重新布局 # 重绘 当页面某些元素样式发生变化,但是不会影响其文档流位置,浏览器就会对元素进行重新绘制,即重绘。...可以修改类名,而不是样式 使用 absolute 或 fixed 使元素脱离文档流,这样他们发生变化就不会影响其他元素 避免频繁操作 DOM,可以创建一个文档片段 documentFragment,然后把需要操作元素添加到文档片段...,当队列操作到了一定数量或者到达一定时间间隔,浏览器就会对队列进行批处理,这会让多次回流、重绘合并成一次 # 如何优化动画 通常,动画需要频繁地操作 DOM,就会导致页面的性能问题。...频繁 DOM 操作,就可以将 DOM 元素插入 DocumentFragment,之后一次性地将所有的子孙节点插入文档

42520

JavaScript(十二)

事件流 ---- 最早两大浏览器厂商(IE 及 Netscape)如何在看待浏览器事件方面还是一致。比如说,如果你单击了某个按钮,他们都认为单击事件不仅仅发生在按钮上。...事件对象 ---- 触发 DOM某个事件,会产生一个事件对象 event,这个对象包含着所有与事件有关信息。...JavaScript 错误时 window 上面触发,当无法加载图像 img 元素上面触发 scroll: 当用户滚动带滚动条元素内容该元素上面触发 resize: 当窗口或框架大小变化时...在用户双击主鼠标按钮(一般是左边按钮)触发 mousedown: 在用户按下了任意鼠标按钮触发 mouseup: 在用户释放鼠标按钮触发 mouseenter: 鼠标光标从元素外部首次移动到元素范围之内触发...文本插入文本框之前会触发 textInput 事件 内存和性能 ---- JavaScript 添加到页面上事件处理程序数量将直接关系到页面的整体运行性能。 导致这一问题原因是多方面的。

2.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

js如何控制一次只加载一张图片,加载完成后再加载下一张

通过onload事件判断Img标签加载完成 实现逻辑:新建一个Image对象实例,为实例对象设置src属性等,onload事件添加此实例对象到父元素,然后将图片地址数组第一个元素剔除,继续调用此方法直到存储图片地址数组为空...动态创建img标签,设置src属性,即使这个img标签没有添加到dom元素,也会立即发送一个请求。...如图: image.png 再看一个例子:创建了一个div元素,然后将存放img标签元素变量添加到div元素内,而div元素此时并不在dom文档,页面不会展示该div元素,那么浏览器会发送请求吗?...; } dom文档不存在test元素,即使设置了背景图片,也不会发送请求...,只有test元素存在才会发送请求。

7510

CSS遮罩过渡效果有趣幻灯片

在下面的教程,我们将向您展示如何在简单幻灯片上应用现代过渡效果新属性。我们将使用步骤()计时功能应用动画,并将掩模PNG移动到图像上以实现有趣过渡效果。...希望我们很快就能欢迎所有现代浏览器支持。请注意,我们正在添加Modernizr来检查支持。 所以让我们开始吧! 创建蒙版图像 本教程,我们将通过第一个示例(演示1)。...标记 对于我们演示,我们将创建一个简单幻灯片来显示蒙版效果。我们幻灯片会填满整个屏幕,我们会添加一些箭头来触发幻灯片切换。这个想法是叠加幻灯片,然后动画结束更改传入幻灯片z-index。...CSS 在这一部分,我们将为我们效果定义CSS。 我们将设置一个经典全屏滑块布局,一些居中标题和导航页面的左下角。此外,我们将定义一些媒体查询以适应移动设备风格。.../img/nature-4.jpg);} 这当然是你会动态实现,但是我们对这个效果感兴趣,所以让我们保持简单。 我们定义了一个名为hide类,只要我们想隐藏它就会添加到幻灯片中。

3.2K90

浅谈JavaScript事件(事件类型)

DOM3级事件类型主要包括:UI事件,用户与页面上元素交互触发;焦点事件,元素获得或失去焦点触发;鼠标事件,用户通过鼠标页面上执行操作触发;滚轮事件,使用鼠标滚轮触发;文本事件,当在文档输入文本触发...UI事件   UI事件触发并不一定是由用户操作触发,包括:load,页面完全加载后window上触发该事件、当所有框架都加载完毕触发、当图片加载完毕img上触发、当嵌入元素加载完成object...需要注意是,unload事件不能dom元素进行操作,因为当unload事件执行时候,所有的页面元素都已经不存在。   当浏览器大小发生改变时候会触发resize事件。...DOM3级定义了9个鼠标事件:click事件,用户单击鼠标左键触发事件或者按下enter键触发;dbclick事件,用户双击鼠标左键时候触发;mousedown事件,用户按下鼠标按钮触发;mouseenter...当双击img时候,依次输出:mousedown、mouseup、click、mousedown、mouseup、click、dblclick。

1.8K50

接上一篇事件详解

事件类型: DOM3级事件规定了以下几类事件;如下: UI事件: 当用户与页面上元素交互触发; load事件:当页面加载完后(包括所有图像,所有javascript文件,css文件等外部资源),就会触发...= "event.png"; }); 图像加载完成后,会弹出图片地址了; 同样功能,我们可以使用DOM0级Image对象来实现,DOM出现之前,开发人员经常使用Image对象客户端预加载图像...鼠标事件:当用户通过鼠标页面操作触发; click事件:在用户单击鼠标按钮或者按下回车键触发; dblclick事件:在用户双击鼠标按钮被触发; mousedown事件:在用户按下了任意鼠标按钮被触发...,也是鼠标滚轮滚动触发,与mousewheel事件一样,但是他有关鼠标滚轮信息保存在detail属性,当鼠标向前滚动,这个属性值是-3倍数,当鼠标滚轮向后滚动,这个属性值是3倍数;也可以给...),Ajax应用,开发人员经常使用url参数列表保存状态或导航信息; 我们必须把hashchange事件添加到window对象,然后当url参数列表只要发生变化就会调用此事件,此事件对象event

1.8K60

方法调用方式动态创建全局通用组件

本文介绍以方法调用方式去创建一个全局通用组件,如下通知类组件 如果按照以前方式我们会将组件存到一个公共目录,然后入口文件引入注册,全局就可以引用,然后相应页面进行各种逻辑使其显示或隐藏...++ instance.id = id instance.vm = instance....$el)//添加到节点 //计算每个notification高度 let verticalOffset = 0 //第一个最下面,每次增加自动往上叠加...3000:autoClose } })//创建组件 此时组件可以自动消失了,但是还要解决一个问题,我们只是让该组件展示不显示,其实该组件节点还是dom 我们组件消失时要删除节点...$el)//节点插入dom instance.vm.visible = true//解决after-enter不触发 添加鼠标悬停,鼠标移动到组件上使组件不触发消失定时器 notification.vue

1.1K20

试试使用 Vitest 进行组件测试,确实很香。

如何使用 Vitest 来测试组件 安装 Vitest 项目中使用 Vitest 需要 Vite >=v2.7.10 和 Node >=v14 才能工作。...当 message 为空,通知就会逐渐消失。 当关闭按钮被点击,该组件会发出一个事件。 为了测试这些功能,项目中添加一个 notification.test.js 用于测试。...notification.test.js import { mount } from "@vue/test-utils"; 测试,我们还需要能够模拟 DOM。.../** * @vitest-environment happy-dom */ .或者将此添加到 vite/vitest 配置文件,以避免在有多个需要 happy-dom 工作测试文件出现重复情况...它接受我们存根组件和所有的选项(我们例子,我们把它命名为wrapper以方便参考)。

2.2K20

再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载

也就是说,DOM解析工作不完成,用户与页面的很多(并不是所有)事件交互就无法进行。这时候浏览器忙指示(那个页面上方烦人旋转圆圈)不会消失。 DOMContentLoaded什么时候触发?...注:现代浏览器会并发预加载CSS、JS、IMG(例如:当 HTML 解析器(HTML Parser)被脚本阻塞,解析器虽然会停止构建 DOM,但仍会识别该脚本后面的资源,并进行预加载)。...,不确定图片样式到底如何,牵扯到重绘资源问题),js不会阻塞img解码、paint(估计chrome做了优化,具体本人还不知,希望客官补充)。...这就意味着:执行内容,浏览器会切换到JavaScript引擎所在线程,此时渲染引擎所在线程会阻塞,故其后元素解析和渲染会暂停。...而 DOMContentLoaded 只有 defer 脚本执行结束后才会被触发。

1.6K20

WDC2023 — Web 开发者划重点

img 大家感兴趣可以观看 WWDC23 Keynote 和 Meet Safari for spatial computing 来确切了解 Vision Pro 上 Web 浏览器是如何工作。...select 分割 Safari 17 添加了对 支持,这是 WebKit 团队添加到 HTML 标准一项功能。...Safari 16.4 ,提供了对 font-size-adjust 初始支持,可以轻松地使不同字体视觉大小保持一致,甚至在所有可能备选字体组合也是如此。...HEIC 也是应用程序中使用 WKWebView 显示图像理想选择。...img viewport 使用模拟器是测试我们 iOS、iPadOS和即将推出 visionOS 上体验好方法 — 包括特定于设备行为,例如字体渲染大小、元标记效果、双击缩放,甚至是 iOS

37140

深入JavaScript之BOM、DOM和事件

创建(获取):html dom模型可以使用window对象来获取 方法: Element:元素对象 获取/创建:通过document来获取和创建 方法 Node:节点对象,其他5个父对象...如何绑定事件 案例1:电灯开关 BOM 概念 BOM全称Browser Object Model浏览器对象模型,将浏览器各个组成部分封装成对象。...forward() 加载 history 列表下一个 URL。 go(参数) 加载 history 列表某个具体页面。...:文档对象 创建(获取):html dom模型可以使用window对象来获取 1. window.document 2. document 方法: 获取Element对象: getElementById...如何绑定事件 直接在html标签上,指定事件属性(操作),属性值就是js代码 事件:onclick— 单击事件 通过js获取元素对象,指定事件属性,设置一个函数 代码: <img

2.9K30

再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载

也就是说,DOM解析工作不完成,用户与页面的很多(并不是所有)事件交互就无法进行。这时候浏览器忙指示(那个页面上方烦人旋转圆圈)不会消失。 DOMContentLoaded什么时候触发?...注:现代浏览器会并发预加载CSS、JS、IMG(例如:当 HTML 解析器(HTML Parser)被脚本阻塞,解析器虽然会停止构建 DOM,但仍会识别该脚本后面的资源,并进行预加载)。...,不确定图片样式到底如何,牵扯到重绘资源问题),js不会阻塞img解码、paint(估计chrome做了优化,具体本人还不知,希望客官补充)。...这就意味着:执行内容,浏览器会切换到JavaScript引擎所在线程,此时渲染引擎所在线程会阻塞,故其后元素解析和渲染会暂停。...而 DOMContentLoaded 只有 defer 脚本执行结束后才会被触发。

4.8K150

使用 shadow DOM

结构: Shadow DOM允许将隐藏DOM添加到常规DOM——它以shadow root为起始根节点,在这个根节点下方,可以是任意元素,和普通DOM元素一样。...你所能看到只是一个 标签,实际上,Shadow DOM,包含来一系列按钮和其他控制器。...如果你想将一个Shadow DOM添加到 custom element上,可以 custom element构造函数添加如下实现(这往往也是最有用做法): let shadow = this.attachShadow...编写简单示例 现在,让我们着手实现一个示例——(也可以查看在线示例),来说明 Shadow DOM custom element 实际运用。...它包含一个图片 icon和一段文字,这个图片 icon用于页面上显示。每当 icon获取到焦点,文字会在一个弹框显示,以提供更加详细信息。

1.8K90

html2canvas实现ArcGIS API for JavaScript 4.X截图功能

目前ArcGIS API for JavaScript其实已经提供了地图截图API,但是该API对地图底图和一些自定义需求支持度并不高,所以我们平时项目开发建议使用第三方截图模块,今天就给大家介绍下关于地图截图两种方式...html2canvas这个插件模块,选择它主要是参考文档较多,而且它github活跃量较高,所以不担心一半会出现停止维护情况,其中最主要就是它提供了npm下载引入方式,接下来就看看如何去实现。...,然后方法then()回调里面我们就可以拿到截取之后元素,此时元素是一个canvasDOM节点,我们可以直接将它添加到所要展示区域或者将它转成图片直接打印输出。...(img); //将png图片添加到页面验证 console.log(png) }); 通过上述方式我们拿到了截图,然后将其添加到了页面上,但是当我们去查看页面的时候发现底图并没有截到,只有这样一个空白界面...,其实还有另一种思路:既然传入html2canvas()方法元素包含有另一个canvas元素导致底图空白,那我们可以截图之前先将这个canvas转换为一个img标签DOM节点替换掉现有的canvas

2.2K30

加点JavaScript魔法

使用“悬停”模式,只要你将鼠标指针放在目标元素,弹出窗口就会保持可见状态。当你移开鼠标,弹出窗口将消失。这具有糟糕副作用,即如果用户想要将鼠标指针移动到弹出窗口中,弹出窗口将消失。...你必须非常仔细地考虑DOM元素如何相互作用,并使其行为方式提供良好用户体验。 03 页面加载完成后执行函数 很明显,我将需要在每个页面加载后立即运行一些JavaScript代码。...我可以将它添加到app/templates/base.html模板,以便它可以应用程序每个页面上运行: app/templates/base.html:页面加载完毕后运行函数 ......本处,返回值将是具有该类所有元素集合 05 弹窗和 DOM 元素 通过使用Bootstrap文档弹出窗口示例并在浏览器调试器检查DOM,我确定Bootstrap将弹出窗口组件创建为DOM...我要发送到服务器请求将具有类似 /user//popup 模式URL,本章开始我已经将该URL添加到应用程序。这个请求响应将包含我需要在弹出窗口中插入HTML。

3.9K10

知识整理之CSS篇

并且,为了满足用户操作DOM产生DOM结构改变,伪类也可以是动态。 其实第一段话就囊括CSS3伪类全部定义了,这段话中指出CSS3伪类功能有两种: 获取不存在与DOM信息。...通过伪类实现了常规CSS无法实现逻辑。 CSS3对于伪元素定义 伪元素DOM创建了一些抽象元素,这些对象不存在与常文档流。 伪元素由两个冒号::开头,然后是伪元素名称。...区别在于: display: none;,会让元素完全从渲染树消失,渲染不占据任何空间。visibility: hidden;,元素仍存在渲染树,渲染仍占据空间,只是内容不可见。...filter: blur(0); CSS3属性,将一个元素模糊度设置为0,从而让元素消失“”页面上。 position: absolute; 设置left值负值定位,使元素可视范围内。...为了使用方便,用em,我们通常在CSSbody选择器声明font-size=62.5%(使em值变为:16px*62.5%=10px),之后,你只需要将你使用px值除以10,即可得到em值,如

1.5K20
领券