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

在JS中使用强大的CSS选择器来定位页面元素

接着就发生了奇怪的现象,重新生成站代码发布完成后,自测是没有问题的,但是有网友反馈说站点访问加载不出来内容。听完自己也甚是一惊,难道是服务器出问题啦?...然后又切换到火狐浏览器进行测试,结果还真是加载不出来内容,通过 F12 也快速定位到了的问题,是因为关闭了谷歌在线翻译功能后,按钮的注册事件失败,影响到了后续 JS 脚本的执行。...熟悉 JS 代码的小伙伴应该都清楚这里发生了啥,最简单的修复方式就是在注册点击事件前,加个 if 条件判断,当元素不存在时不进行事件注册。...于是便想到了使用 CSS 的选择器语法来支持,首先定位到这些按钮的父元素上,然后再逐一对子元素(即按钮本身)进行事件注册,这样当某个按钮被删除后也就无须 if 条件判断,同样也不用调整 JS 代码。...相比于 JS 中使用 ID 或名称来定位页面元素的方式,这种使用 CSS 选择器的模式,操作起来会更的加简便和灵活。

6210

浏览器原理

确定了每个DOM元素的样式规则后,计算每个DOM元素最终在屏幕上显示的大小和位置。Web页面中元素的布局是相对的,因此一个元素的布局发生变化,会联动地引发其他元素的布局发生变化。...解析过程 获取请求文档的内容后,呈现引擎将开始解析 HTML 文档,并将各标记逐个转化成“内容树”上的 DOM 节点。 解析外部 CSS以及style元素中的样式数据形成呈现树。...渲染树 html、css、js解析完成后,浏览器引擎会通过DOM Tree 和 CSS Rule Tree 来构造 Rendering Tree(渲染树)。...某个节点Reflow时会重新计算节点的尺寸和位置,而且还有可能触其后代节点reflow。重排后,浏览器会重新绘制受影响的部分到屏幕,该过程称为重绘。...再说回来,在样式发生变化时,浏览器会尽可能做出最小的响应。因此,元素的颜色改变后,只会对该元素进行重绘。元素的位置改变后,只会对该元素及其子元素(可能还有同级元素)进行布局和重绘。

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

    渲染树2.1 CSS样式计算2.2 构建渲染树3. 布局(重要)4. 重绘与重排(重要)5. paint(绘制)6. composite(重要)7. 浏览器加载

    确定了每个DOM元素的样式规则后,计算每个DOM元素最终在屏幕上显示的大小和位置。Web页面中元素的布局是相对的,因此一个元素的布局发生变化,会联动地引发其他元素的布局发生变化。...解析过程 获取请求文档的内容后,呈现引擎将开始解析 HTML 文档,并将各标记逐个转化成“内容树”上的 DOM 节点。 解析外部 CSS以及style元素中的样式数据形成呈现树。...渲染树 html、css、js解析完成后,浏览器引擎会通过DOM Tree 和 CSS Rule Tree 来构造 Rendering Tree(渲染树)。...某个节点Reflow时会重新计算节点的尺寸和位置,而且还有可能触其后代节点reflow。重排后,浏览器会重新绘制受影响的部分到屏幕,该过程称为重绘。...再说回来,在样式发生变化时,浏览器会尽可能做出最小的响应。因此,元素的颜色改变后,只会对该元素进行重绘。元素的位置改变后,只会对该元素及其子元素(可能还有同级元素)进行布局和重绘。

    5.2K41

    【react-dnd使用总结一】拖放完成后获取放置元素在drop容器中的相对位置

    工具函数-根据元素的起始位置和最终位置,计算相对于某元素的位置 export interface IPosition { left: number; top: number; } /** *...根据元素的其实位置和最终位置,计算相对于某元素的位置 * @param initialPosition 拖动元素相对于屏幕左上角的起始位置(偏移量) * @param finalPosition 拖放完成后当前节点相对于屏幕左上角的位置...finalX) - dropTargetPosition.left; return { left: newXposition, top: newYposition, }; }; 在drop...const position = getCorrectDroppedOffsetValue( monitor.getInitialSourceClientOffset(), // 拖动元素相对于屏幕左上角的起始位置...(偏移量) monitor.getSourceClientOffset(), // 拖放完成后当前节点相对于屏幕左上角的位置 document.querySelector('#container

    4.3K10

    JavaScript是如何工作的:渲染引擎和优化其性能的技巧

    engine):用来查询及操作渲染引擎的接口 渲染引擎 (Rendering engine):用来显示请求的内容,例如,如果请求内容为 html,它负责解析 html 及 css,并将解析后的结果显示出来...样式计算 — 这是根据匹配选择器确定哪个 CSS 规则适用于哪个元素的过程。 定义规则后,将应用它们并计算每个元素的最终样式。...优化你的 CSS 通过添加和删除元素,更改属性等来修改 DOM 将使浏览器重新计算元素样式,并且在许多情况下,重新计算整个页面的布局或至少部分布局。...本质上,直接对一些元素进行样式更改,而不是使整个页面无效。 优化布局 浏览器的布局重新计算可能非常繁重。 考虑以下优化: 尽可能减少布局的数量。...但是,如果你在访问 box 之前更改了它的样式(例如,通过动态地向元素添加一些 CSS 类),浏览器必须先应用样式更改并执行布局过程,这是非常耗时和耗费资源的,所以尽可能避免。

    1.6K30

    【云+社区年度征文】面试官问我Chrome浏览器的渲染原理(6000字长文)

    HTML,css,JavaScript数据经过中间渲染模块的处理,最终显示在页面上(其中HTML超文本标记语言,CSS层叠样式表,JS为JavaScript,大家一般都知道是什么,写过网页的朋友,学习者大都知道的...当你修改网页的默认字体时 重绘Repaint 重绘的定义,当各种盒子的位置,大小以及其他属性,例如颜色,字体大小等都确定下来后,浏览器于是便把这些元素都按照各自的特性绘制了一遍,于是页面的内容出现了,这个过程称为...呈现引擎 呈现引擎的作用是“呈现”,用于在浏览器的屏幕上显示请求的内容。 一般情况下,呈现引擎可显示HTML和xml文档与图片,通过插件或浏览器扩展程序,可以显示其他类型的内容。...同时也会解析外部CSS文件以及样式元素中的样式数据。呈现树构建完后,会进入“布局”处理阶段,也就是为每个节点分配一个应出现在屏幕上的确切坐标。 解析 解析是呈现引擎中重要的环境,什么是解析呢?...每个页面至少需要一次回流,就是在页面第一次加载的时候。 在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。

    1.4K211

    面试官问我Chrome浏览器的渲染原理(6000字长文)

    HTML,css,JavaScript数据经过中间渲染模块的处理,最终显示在页面上(其中HTML超文本标记语言,CSS层叠样式表,JS为JavaScript,大家一般都知道是什么,写过网页的朋友,学习者大都知道的...当你修改网页的默认字体时 重绘Repaint 重绘的定义,当各种盒子的位置,大小以及其他属性,例如颜色,字体大小等都确定下来后,浏览器于是便把这些元素都按照各自的特性绘制了一遍,于是页面的内容出现了,...呈现引擎 呈现引擎的作用是“呈现”,用于在浏览器的屏幕上显示请求的内容。 一般情况下,呈现引擎可显示HTML和xml文档与图片,通过插件或浏览器扩展程序,可以显示其他类型的内容。...同时也会解析外部CSS文件以及样式元素中的样式数据。呈现树构建完后,会进入“布局”处理阶段,也就是为每个节点分配一个应出现在屏幕上的确切坐标。 解析 解析是呈现引擎中重要的环境,什么是解析呢?...每个页面至少需要一次回流,就是在页面第一次加载的时候。 在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。

    2.1K30

    CSS 20大酷刑

    「border-radius」:border-radius属性用于设置元素的圆角边框。当更改此属性时,元素的形状会发生变化,可能会影响元素的周围元素的位置和排列,从而引起重新计算。...「box-shadow」:box-shadow属性用于添加元素的阴影效果。更改此属性会影响元素的可视外观,可能导致元素的尺寸和位置发生变化,从而引起重新计算。...「opacity」:opacity属性用于设置元素的透明度。更改此属性会影响元素的可视外观,可能会导致元素的尺寸和位置发生变化,从而引起重新计算。...由于这会影响元素的定位,所以更改此属性可能会影响周围元素的位置和布局,从而引起重新计算。 ---- 13....将这些样式添加到HTML的元素中的元素中。 使用JavaScript异步加载主要的CSS文件(可以在页面加载后加载)。

    22830

    浏览器渲染页面与DOM相关常见的面试题以及问题

    中的对象,在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签,这时,浏览器会发送一个获取请求来重新获得这些文件,这些文件就包括CSS/JS/图片等资源,这些资源的地址都要经历一个和HTML读取类似的过程...浏览器从服务端拿到html文件后,首先开始解析html文件,构建DOM tree,并且同时构建Render Tree; 遇到js文件的话,阻塞DOM tree的构建;因为js可能会改变dom和css,因此浏览器会先解析...如果将css文件放在底部,render tree在之前就已经构建完了,因此用户可能会看到无样式的页面,或者闪屏。 重排意味着重新计算节点的位置大小等信息,重新在草稿本上画了草图,所以一定会重绘。...另外,如果它要输出动态的dom节点,就无法保证节点的位置,因为它添加的节点,是在html已解析的节点下顺序添加的。...DOM的作用 DOM 将HTML文档呈现为带有元素、属性和文本的树结构(节点树)。 它允许运行在浏览器中的代码访问文件中的节点并与之交互。节点可以被创建,移动或修改。

    1.2K30

    Dom树 CSS树 渲染树(render树) 规则、原理

    下面是渲染引擎在取得内容之后的基本流程:   1.解析html为dom树,解析css为cssom。渲染引擎开始解析html,并将标签转化为内容树中的dom节点。   2....在这一过程中,浏览器得递归 CSSOM 树,然后确定具体的元素到底是什么样式。   注意:CSS匹配HTML元素是一个相当复杂和有性能问题的事情。...布局流程的输出是一个“盒模型”,它会精确地捕获每个元素在视口内的确切位置和尺寸,所有相对测量值都将转换为屏幕上的绝对像素。  ...Gecko 将视觉格式化元素组成的树称为“框架树”。每个元素都是一个框架。WebKit 使用的术语是“呈现树”,它由“呈现对象”组成。...有一个细微的非语义差别,就是 Gecko 在 HTML 与 DOM 树之间还有一个称为“内容模块(Content Model)”的层,用于生成 DOM 元素。

    4.5K40

    第99天:CSS3中透视perspective

    理解浏览器的坐标系:浏览器平面为 Z=0的平面,坐标原点默认为图片的中心,可以通过更改透视原点进行更改。 perspective:视距,表示视点距离屏幕的长短。视点,用于模拟透视效果时人眼的位置。...当元素向后移动的时候,透视点与元素所处位置的连线和屏幕的焦点,就是元素在屏幕上的投影。与原来的头像大小相比变小了。 ?...与之前的过程相同,视点与移动后的元素的连线与屏幕的焦点就是在屏幕上的呈现的元素的大小,与元素相比较变大了。 ?...当元素沿着Z轴移动的距离大于视距后。元素移动到视点后方,固无法投影在屏幕上,所以屏幕上没有呈现。translateZ>perspective 屏幕上无法呈现图像。...写在transform中的perspective会根据transform动画的变化来进行重新的渲染。所以当使用js或Css3进行动画时,尽量选择后一种定义方式。

    1.2K20

    10分钟实现Typora(markdown)编辑器

    index.html-包含所有为UI提供结构的HTML标记 main.js-包含我们的主进程的代码 renderer.js-包含UI的所有交互代码 style.css-包含样式的CSS...--我们的应用程序允许使用.raw-markdown类编写和编辑文本区域中的内容,并使用.rendered-html类在div元素中呈现该内容。...对于初学者,我们希望在左窗格中的Markdown发生更改时更新右窗格中呈现的HTML视图(参见图3.7)。这就是我们唯一的依赖—Marked—发挥作用的地方。 ?...列表3.9 当Markdown更改时重新呈现HTML: ....基本功能已经就绪,我们准备开始研究只有在Electron应用程序中才可能实现的特性,首先从文件系统中读写文件开始。当所有这些都完成后,应用程序的呈现程序流程应该是这样的。

    2.8K50

    前端资源浏览器渲染原理

    的解析过程 解析CSS 规则树 在解析的过程中,如果遇到CSS的link元素,那么会由浏览器负责下载对应的CSS文件: PS: 这里下载 CSS 是不会影响到 DOM树的解析的 下载完成后...渲染树会表示显示哪些节点以及其他样式,但是不表示每个节点的尺寸、位置等信息; 布局是确定呈现树中所有节点的宽度、高度和位置信息; 将每个节点绘制(Paint)到屏幕上 在绘制阶段,浏览器将布局阶段计算的每个...frame转为屏幕上实际的像素点; 包括将元素的可见部分进行绘制,比如文本、颜色、边框、阴影、替换元素(比如img) 渲染的流程可以参考下图 : 完成以上五步 成功在浏览器渲染出 对应的 xx.html...回流的性能并不好 也很明显 重新渲染整个DOM 很浪费性能 总结 修改样式 尽可能减少回流次数 也就是设计好之后,非必要不去改动样式和DOM的结构 避免频繁使用 JS 去操作DOM 尽可能减少函数获取储存位置的信息...在渲染html的时候 js 没有继续构造DOM的能力 如果需要需要的部分 会先停止构建,下载js 执行脚本 把需要构建的东西构建完成后 继续执行构建 DOM 这么做有什么好处?

    57520

    作为程序员,你必须学会如何优化前端性能

    页面上呈现的内容,你在 html 源文件里里找不到——这正是它的特点。...服务端渲染 在服务端渲染的模式下,当用户第一次请求页面时,由服务器把需要的组件或页面渲染成HTML字符串,然后把它返回给客户端。页面上呈现的内容,我们在 html 源文件里也能找到。...处理 CSS 构建 CSSOM 树 将 DOM 与 CSSOM 合并成一个渲染树。 根据渲染树来布局,计算每个节点的位置。 调用 GPU 绘制,合成图层,显示在屏幕上。...我们将 CSS 放在 head 标签里 和尽快 启用 CDN 实现静态资源加载速度的优化。 JS的阻塞 JS 引擎是独立于渲染引擎存在的。我们的 JS 代码在文档的何处插入,就在何处执行。...DOM渲染优化 先了解回流和重绘 回流:当我们对 DOM 的修改引发了 DOM 几何尺寸的变化(比如修改元素的宽、高或隐藏元素等)时,浏览器需要重新计算元素的几何属性(其他元素的几何属性和位置也会因此受到影响

    54430

    你必须懂的前端性能优化

    它是指需要服务器在页面之外作额外计算的 HTML 页面。具体来说,当我打开某一网站之前,该网站需要通过权限认证等一系列手段确认我的身份、进而决定是否要把 HTML 页面呈现给我。...页面上呈现的内容,你在 html 源文件里里找不到——这正是它的特点。 服务端渲染 在服务端渲染的模式下,当用户第一次请求页面时,由服务器把需要的组件或页面渲染成HTML字符串,然后把它返回给客户端。...页面上呈现的内容,我们在 html 源文件里也能找到。服务端渲染解决了一个非常关键的性能问题——首屏加载速度过慢,也解决了SEO搜索引擎的问题。...我们将 CSS 放在 head 标签里 和尽快 启用 CDN 实现静态资源加载速度的优化。 JS 的阻塞 JS 引擎是独立于渲染引擎存在的。我们的 JS 代码在文档的何处插入,就在何处执行。...DOM渲染优化 先了解回流和重绘 回流:当我们对 DOM 的修改引发了 DOM 几何尺寸的变化(比如修改元素的宽、高或隐藏元素等)时,浏览器需要重新计算元素的几何属性(其他元素的几何属性和位置也会因此受到影响

    68020

    你必须懂的前端性能优化

    页面上呈现的内容,你在 html 源文件里里找不到——这正是它的特点。...服务端渲染 在服务端渲染的模式下,当用户第一次请求页面时,由服务器把需要的组件或页面渲染成HTML字符串,然后把它返回给客户端。页面上呈现的内容,我们在 html 源文件里也能找到。...处理 CSS 构建 CSSOM 树 将 DOM 与 CSSOM 合并成一个渲染树。 根据渲染树来布局,计算每个节点的位置。 调用 GPU 绘制,合成图层,显示在屏幕上。...我们将 CSS 放在 head 标签里 和尽快 启用 CDN 实现静态资源加载速度的优化。 JS的阻塞 JS 引擎是独立于渲染引擎存在的。我们的 JS 代码在文档的何处插入,就在何处执行。...DOM渲染优化 先了解回流和重绘 回流:当我们对 DOM 的修改引发了 DOM 几何尺寸的变化(比如修改元素的宽、高或隐藏元素等)时,浏览器需要重新计算元素的几何属性(其他元素的几何属性和位置也会因此受到影响

    74920

    三分钟让你了解什么是Web开发?

    相反,我们可以使用CSS在一个位置存储我们的样式定义,并将每个HTML页面引用到该位置。通过改变CSS文件,我们可以改变每个页面的背景颜色,样式定义的样式表。...CSS不仅仅是设置背景颜色,当然,它还允许我们为各种元素、字体、页面布局等等设置颜色。 我们使用CSS设计了前面的示例。假设我们在不同的页面上使用表,但是使用相同的CSS样式。...使用JS,我们可以通过几种方式操作DOM树: JS可以通过添加、更改和删除页面中的所有HTML元素和属性来修改DOM树。 JS可以改变页面上的所有CSS样式。...在技术术语中,我们使用附加到web元素的click事件(锚标记),并更改web元素的现有文本,换句话说就是操作DOM。要做到这一点,我们必须使用浏览器所接受的脚本语言,它始终是JavaScript。...与CSS和JS一起将数据插入到HTML模板中。 以上所有代码都可以写在一个文件中。这是早期的做法,但是发展联盟意识到这不是最优的。要添加任何新特性,需要更改整个代码,在多开发环境中工作并不容易。

    5.8K30

    【优化】356- 你必须懂的前端性能优化

    它是指需要服务器在页面之外作额外计算的 HTML 页面。具体来说,当我打开某一网站之前,该网站需要通过权限认证等一系列手段确认我的身份、进而决定是否要把 HTML 页面呈现给我。...页面上呈现的内容,你在 html 源文件里里找不到——这正是它的特点。 服务端渲染 在服务端渲染的模式下,当用户第一次请求页面时,由服务器把需要的组件或页面渲染成HTML字符串,然后把它返回给客户端。...页面上呈现的内容,我们在 html 源文件里也能找到。服务端渲染解决了一个非常关键的性能问题——首屏加载速度过慢,也解决了SEO搜索引擎的问题。...我们将 CSS 放在 head 标签里 和尽快 启用 CDN 实现静态资源加载速度的优化。 JS的阻塞 JS 引擎是独立于渲染引擎存在的。我们的 JS 代码在文档的何处插入,就在何处执行。...DOM渲染优化 先了解回流和重绘 回流:当我们对 DOM 的修改引发了 DOM 几何尺寸的变化(比如修改元素的宽、高或隐藏元素等)时,浏览器需要重新计算元素的几何属性(其他元素的几何属性和位置也会因此受到影响

    60020

    性能优化之reflow和repaint

    一.首先对浏览器渲染引擎下网页呈现过程简要说一下: 浏览器的渲染引擎开始解析html构建成DOM树,DOM树是以document对象为根节点,包含所有的html标签, 包括display: none隐藏的...,也包括js动态添加的元素。...解析html的同时, 将css文件或者样式元素中的样式解析成CSS Rule Tree,解析时会去掉浏览器不能识别的样式。 根据DOM树和CSSOM来构造Rendering Trre。...生成布局(layout),计算各节点元素在屏幕上所在位置和几何结构。 绘制(paint),将布局绘制到屏幕上。 以上5步中,主要耗时的是后2步,后两步合称为渲染(render)。...以下情况会导致reflow: 增加货移除css样式 改变字体大小 改变窗口大小 操作class属性 激活css伪类 内容变化,如在input内输入文字 js操作DOM 获取offsetTop, offsetLeft

    1.4K80
    领券