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

chrome对页面重绘和回流以及优化进行优化

而如何去观察页面的绘制时间,找到性能瓶颈,可以借助Chrome的开发者工具。回流与重绘1. 当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。...当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘。...注意:回流必将引起重绘,而重绘不一定会引起回流。回流何时发生:当页面布局和几何属性改变时就需要回流。...下述情况会发生浏览器回流:页面渲染初始化;调整窗口大小(Resizing the window),浏览器窗口尺寸改变——resize事件发生时增加或者移除样式表(Adding or removing a...因为在display属性为none的元素上进行的DOM操作不会引发回流和重绘。避免频繁读取会引发回流/重绘的属性,如果确实需要多次使用,就用一个变量缓存起来。

90510

前端开发必备之Chrome开发者工具(上篇)

通过 DOM 更新实时修改页面的内容和结构 隐藏 DOM 两种方式: 右键选择某个元素,然后选择 Hide element 选中某个元素,然后使用快捷键 H 设置 DOM 断点 设置 DOM 断点以调试复杂的...移除或移动子元素时将触发子树修改断点。...设置节点移除断点:右键选择某个元素,然后选择 Break on --> node removal 从 DOM 中移除有问题的节点时将触发节点移除修改: document.getElementById(...交互 消息堆叠 如果一条消息连续重复,而不是在新行上输出每一个消息实例,控制台将“堆叠”消息并在左侧外边距显示一个数字。...DOM更改断点 当您想要更改DOM节点或其子节点的代码时,使用DOM更改断点 设置DOM更改断点: 切换到 Elements 面板。 找到您想设置断点的元素并右键单击该元素。

8.3K111
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    jQuery选择器、Dom操作、样式、事件处理

    jQuery将JavaScript的代码进行了封装,处理了兼容性问题,提供API进行调用, 让我们实现功能时不用再为兼容性而困扰,少写了许多代码。...Paste_Image.png unbind() 方法移除被选元素的事件处理程序。该方法能够移除所有的或被选的事件处理程序,或者当事件发生时终止指定函数的运行。...Paste_Image.png delegate:用于事件代理,为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数;适用于当前或未来的元素(比如由脚本创建的新元素...Paste_Image.png //当点击按钮时,隐藏或显示 p 元素: $("button").live("click",function(){ $("p").slideToggle(); });...当该方法用于返回属性值时:返回第一个匹配元素的值。 当该方法用于设置属性值时:为匹配元素设置一个或多个属性/值对。

    2K30

    前端入门6-JavaScript客户端api&jQuery

    但有一点需要注意下,元素修饰的文本内容也会被创建成一个节点,作为这个元素的子元素加入 DOM 树中。 这种 DOM 树的概念跟 Android 中的视图树很类似。...并且,并不是一个元素的所有文本内容作为一个 Text 对象,如果文本内容被其他元素标签分割开了,那么这些文本内容会被分割成多份节点,都作为元素的子元素拼接在 DOM 树中。...onunload 在文档从窗口或浏览器中卸载时触发 鼠标事件 click 单击,释放时触发 dblclick 双击,释放时触发 mousedown 点击鼠标键时触发 mouseenter 在光标移入元素或某个后代元素所占据的屏幕区域时触发...切换 class $(selector).toggleClass("liItem"); //为指定元素切换类 className,该元素有类则移除,没有指定类则添加 应用场景 当 js 动态修改的样式较少时...当 js 动态修改的样式比较多时,选择 class 操作较方便,事件将需要的样式写在 css 中,在 js 里直接添加或移除指定 class 实现。

    6.1K40

    急速 debug 实战一(浏览器-基础篇)

    最近在写代码的时候越发觉得不是代码有多难,而是当代码出了问题该如何调试,如何追溯本源,这才是最难的。 响应这个要求,我决定写一个关于调试实战系列。本来不打算写这个基础篇章,为了整个的完整性。...条件代码行 在确切的代码区域中,且仅当其他一些条件成立时。 DOM 在更改或移除特定 DOM 节点或其子级的代码中。 XHR 当 XHR 网址包含字符串模式时。...事件侦听器 在触发 click 等事件后运行的代码中。 异常 在引发已捕获或未捕获异常的代码行中。 函数 任何时候调用特定函数时。 代码行断点 在知道需要调查的确切代码区域时,可以使用代码行断点。...代码中的代码行断点 在代码中调用 debugger 可在该行暂停。 此操作相当于使用代码行断点,只是此断点是在代码中设置,而不是在 DevTools 界面中设置。...DOM 更改断点的类型 Subtree modifications: 在移除或添加当前所选节点的子级,或更改子级内容时触发这类断点。

    3.3K10

    前端知识点总结vue篇(下)

    v-on:用于监听指定元素的DOM事件,比如点击事件。绑定事件监听器。 v-model:实现表单输入和应用状态之间的双向绑定 v-pre:跳过这个元素和它的子元素的编译过程。...Vue常用的修饰符 .prevent 提交事件不再重载页面 .stop 阻止单击事件冒泡 .self 当事件发生在该元素本身而不是子元素时会触发 .capture 事件侦听,事件发生时会调用 .once...8. v-if和v-show的区别 v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果。 v-show修改display的css属性控制元素的显示与隐藏。...,触发钩子函数activated,当组件被移除时,触发钩子 函数 deactivated。...在开发中可能有多个子组件依赖于父组件的某个数据,假如子组件可以修改父组件数据的话,一个子组件变化会引发所有依赖这个数据 的子组件发生变化,所以 vue 不推荐子组件修改父组件的数据 21. vue如何动态添加属性

    36320

    【Web动画】CSS3 3D 行星运转 && 浏览器渲染原理

    元素自身层的创建 因为上面的页面十分简单,所以并没有产生层,但是在很复杂的页面中,譬如我们给元素设置一个 3D CSS 属性来变换它,我们就能看到当元素拥有自己的层时是什么样子。...换句话说,就是一个元素拥有一个子元素,该子元素在自己的层里) 元素有一个 z-index 较低且包含一个复合层的兄弟元素(换句话说就是该元素在复合层上面渲染) 层的重绘 对于静态 Web 页面而言,...总结 那么浏览器是如何从 DOM 元素到最终动画的展示呢?...回流(reflow) 当渲染树(render Tree)中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流(reflow),也就是重新布局(relayout)。...重绘(repaint) 当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如 background-color 。则就叫称为重绘。

    2.6K70

    Vue面试核心概念

    MV(从Model到View)是由数据驱动视图,而VM(从view到model)则是由视图通过事件更新数据。...当我们需要经常切换某个元素的显示/隐藏时,使用v-show会更加节省性能上的开销;当只需要一次显示或隐藏时,使用v-if更加合理。 5....我们在父组件中做了两件事,一是给子组件传入props,二是监听事件并用子元素的变化更新父元素传入props的模型数据。 7....讲述Vue的组件生命周期(vue的钩子函数) Vue组件从创建到销毁整个过程中不同时机会引发不同的事件,我们可以使用钩子函数在对应的事件中添加处理代码,这些组件不同时机引发的钩子事件称为“Vue组件生命周期...减少Reflow,如果需要在DOM操作时添加样式,尽量使用增加class属性,而不是通过style操作样式。

    21210

    前端一面react面试题指南_2023-03-01

    通过 diff 算法,React 能够精确制导哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染。...如果该节点不存在时,则该节点及其子节点会被完全删除,不会再进一步比较。 只需遍历一次,就能完成整棵DOM树的比较。 图片 那么问题来了,如果DOM节点出现了跨层级操作,diff会咋办呢?...图片 如上图所示,以A为根节点的整棵树会被重新创建,而不是移动,因此 官方建议不要进行DOM节点跨层级操作,可以通过CSS隐藏、显示节点,而不是真正地移除、添加DOM节点 component diff...diff的不足与待优化的地方 尽量减少类似将最后一个节点移动到列表首部的操作,当节点数量过大或更新操作过于频繁时,会影响React的渲染性能 在使用 React Router时,如何获取当前页面的路由或浏览器中地址栏中的地址...组件从DOM树中被移除的过程; 1)组件挂载阶段 挂载阶段组件被创建,然后组件实例插入到 DOM 中,完成组件的第一次渲染,该过程只会发生一次,在此阶段会依次调用以下这些方法: constructor

    1.3K10

    前端经典react面试题(持续更新中)_2023-03-15

    当不想在构建环境中配置有关 JSX 编译时,不在 React 中使用 JSX 会更加方便。...扩展一下,如果是根据用权限来判断是否隐藏组件该怎么做呢?...通过 diff 算法,React 能够精确制导哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染。...key 是 React 用来追踪哪些列表元素被修改、被添加或者被移除的辅助标志。在开发过程中,我们需要保证某个元素的 key 在其同级元素中具有唯一性。...当发现节点不存在时,则该节点及其子节点会被完全删除掉,不会用于进一步的比较。这样只需要对树进行一次遍历,便能完成整个 DOM 树的比较。

    1.3K20

    jQuery 教程

    该事件方法在 jQuery 语法 章节中已经提到过。 click() click() 方法是当按钮点击事件被触发时会调用一个函数。 该函数在用户点击 HTML 元素时执行。...在下面的实例中,当点击事件在某个 元素上触发时,隐藏当前的 元素: $("p").click(function(){ $(this).hide(); }); dblclick() 当双击元素时...; } ); focus() 当元素获得焦点时,发生 focus 事件。 当通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点。...","#cccccc"); }); blur() 当元素失去焦点时,发生 blur 事件。...() 移除下一个排队函数,然后执行函数 fadeIn() 逐渐改变被选元素的不透明度,从隐藏到可见 fadeOut() 逐渐改变被选元素的不透明度,从可见到隐藏 fadeTo() 把被选元素逐渐改变至给定的不透明度

    17K20

    React核心原理与虚拟DOM

    React实战视频讲解:进入学习State&生命周期setState(updater,[callback])在React中,如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用...:UNSAFE_componentWillUpdate() UNSAFE_componentWillReceiveProps()卸载当组件从 DOM 中移除时会调用如下方法:componentWillUnmount...并且,它会渲染出备用 UI,而不是渲染那些崩溃了的子组件树。...Diff算法当对比两颗树时,React 首先比较两棵树的根节点。当根节点为不同类型的元素时,React 会拆卸原有的树并且建立起新的树。...所以,我更倾向于说,VitrualDom帮助我们提高了开发效率,在重复渲染时它帮助我们计算如何更高效的更新,而不是它比DOM操作更快。

    2K30

    zepto 基础知识(4)

    类型:self   添加一个事件监听器,当页面DOM加载完毕,“DOMContentLoaded”事件触发时触发,   建议使用 $()来代替这种用法 66.reduce   reduce(function...72.show   show() 类型:self   回复对象集合中每一个元素默认的display值,如果你用hide将元素隐藏,用该属性可以将其显示。...类型;self     获取或者设置所有对象集合中元素的文本内容,当没有给定content参数时,返回当前对象集合中第一个元素的文本内容(包含子节点中的文本内容)当给定content     参数时,...79.unwrap   unwrap()    类型:self   移除集合中每个元素的直接父节点,并把他们的子元素保留在原来的位置,基本上,这种方法删除   上一的祖先元素...,同时保持DOM 中的当前元素。

    775100

    Angular2 之 结构型指令几个概念

    NgIf案例分析 该指令接受一个布尔值,并据此让一整块DOM树出现或者消失。 注意:这里是出现或者消失,并不是隐藏。 隐藏元素的利弊 当我们隐藏元素时,组件的行为还在继续。...它仍然附加子啊它所属于的DOM元素上,它仍然在监听事件。angular会继续检查哪些能影响数据绑定的变更。组件原本要做的哪些事情仍然在进行!它还是占用着那么多的资源。...angular会从DOM中移除该元素,停止相关组件的变更检测,把它从DOM事件中移除,并且销毁组件。组件会被垃圾回收,并释放内存。...当ngIf重新变成true的时候,angular会重新创建该组件及其子树。angular会重新运行每个组件的初始化逻辑。...而在Angular应用中,Angular会移除 标签及其子元素。 我们可以通过把短语"Hip! Hip! Hooray!"

    3K20

    JavaScript事件

    例: (2)onChange改变事件   当利用text或texturea元素输入字符值改变时发该事件,同时当在select表格项中一个选项状态改变后也会引发该事件。...(3)选中事件onSelect   当Text或Textarea对象中的文字被加亮后,引发该事件。...(5)失去焦点onBlur   当text对象或textarea对象以及select对象不再拥有焦点、而退到后台时,引发该文件,他与onFocas事件是一个对应的关系。...(7)卸载文件onUnload   当Web页面退出时引发onUnload事件,并可更新Cookie的状态。 ? 事件流 事件流:描述的是从页面中接收事件的顺序。...文档中元素存在事件,通过一些DOM节点操作(removeChild、replaceChild等方法),移除了这个元素,但是DOM节点的事件没有被移除。

    2K60

    JavaWeb(八)JQuery

    dom 里面的属性和方法, 不能调用jQuery 对象里面的属性和方法 jQuery对象:jquery 对象是通过jQuery 包装页面上面的元素或者dom 而产生的一个新的 对象,jquery 对象时...event.target 触发该事件的 DOM 元素。 event.timeStamp 该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。 event.type 描述事件的类型。...trigger() 所有匹配元素的指定事件 triggerHandler() 第一个被匹配元素的指定事件 unbind() 从匹配元素移除一个被添加的事件处理器 undelegate() 从匹配元素移除一个被添加的事件处理器...clone() 创建匹配元素集合的副本。 detach() 从 DOM 中移除匹配元素集合。 empty() 删除匹配的元素集合中所有的子节点。...prependTo() 向目标开头插入匹配元素集合中的每个元素。 remove() 移除所有匹配的元素。 removeAttr() 从所有匹配的元素中移除指定的属性。

    1.8K40

    AngularDart4.0 指南- 模板语法二 顶

    当指令没有合适的宿主元素时如何对元素进行分组。 如何编写自己的结构指令。 为什么你只能应用一个结构指令到一个元素。 本节介绍常见的结构指令: NgIf:有条件地从DOM中添加或删除元素。...NgFor:为列表中的每个项目重复一个模板。 NgSwitch:只显示多个可能元素中的一个。 NgIf  您可以通过向该元素应用NgIf指令(称为宿主元素)来添加或移除DOM中的元素。...当表达式为false时,NgIf从DOM中删除HeroDetailComponent,销毁该组件及其所有子组件。 在Dart模式下,Dart期望布尔值(类型为bool的)为true或false。...'none' : 'block'">Hide with style 隐藏一个元素与用NgIf去除一个元素是完全不同的。 当你隐藏一个元素时,该元素及其所有的后代仍然保留在DOM中。...当NgIf为false时,Angular从DOM中删除元素及其后代。 它摧毁了他们的组件,潜在地释放了大量的资源,从而带来了更加快速的用户体验。 展示/隐藏技术适合少数几个后代的元素。

    30K20

    JavaScript 编程精解 中文第三版 十四、文档对象模型

    应用节点常常包含子节点,而标识符、值则是叶子节点,也就是没有子节点的节点。 DOM中也是一样。元素(表示 HTML 标签)的节点用于确定文档结构。这些节点可以包含子节点。...修改文档 几乎所有 DOM 数据结构中的元素都可以被修改。文档树的形状可以通过改变父子关系来修改。 节点的remove方法将它们从当前父节点中移除。...若我们从列表头开始遍历,移除掉第一个图像会导致列表丢失其第一个元素,第二次循环时,因为集合的长度此时为 1,而i也为 1,所以循环会停止。...最后一个标签完全不会显示出来,因为display:none会阻止一个元素呈现在屏幕上。这是隐藏元素的一种方式。更好的方式是将其从文档中完全移除,因为稍后将其放回去是一件很简单的事情。...若position设置为absolute,会将元素从默认文档流中移除,该元素将不再占据空间,而会与其他元素重叠。

    1.4K20

    在 React 中实现 keep alive(可参与文末讨论哦)

    什么是 keep alive 在 Vue 中,我们可以使用 keep-alive 包裹一个动态组件,从而「缓存」不活跃的实例,而不是直接销毁他们: 时,Vue 会将这个组件“「失活」”并缓存起来,而不是直接卸载掉。...{display: 'none'} : {}}> 但这种方案其实只是在“「视觉上」”将元素隐藏起来了,并没有真正的移除,那有没有可能把 DOM 树真的移除掉,同时又让组件不被销毁呢...因此,我们可以先通过 document.createElement 在内存中创建一个元素,然后再通过 React.createPoral 把 React 子节点渲染到这个元素上,这样就实现了“空渲染”。...最后,当 active 为 true 时,我们会把 targetElement 手动添加到 containerRef.current 的内部,反之,则会从其内部移除掉 targetElement 。

    1.8K31
    领券