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

每天10个前端小知识 【Day 18】

在绝对定位布局中,元素会整体脱离普通流,因此绝对定位元素不会对其兄弟元素造成影响,而元素具体的位置由绝对定位的坐标决定。...具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。...当然,以后的事情谁都说不准,说不定以后网速都是每秒几个G的,网页加载速度完全就忽略不计,说不定就会支持了。 8.js和css是如何影响DOM树构建的?...9.Js 动画与 CSS 动画区别及相应实现 CSS3 的动画的优点 在性能上会稍微好一些,浏览器会对 CSS3 的动画做一些优化 代码相对简单 缺点 在动画控制上不够灵活 兼容性不好 JavaScript...根据前面介绍的浏览器加载和渲染机制,我们可以归纳为: 、和设置background-image的元素遇到display:none时,图片会加载但不会渲染 、和设置background-image的元素祖先元素设置

14710

前端基础知识整理汇总(下)

如果不通过setState,直接修改this.state 的值,则不会放入状态队列,当下一次调用 setState 对状态队列进行合并时,之前对 this.state 的修改将会被忽略,造成无法预知的错误...,而且不会对像动画和用户交互这些延迟触发但关键的事件产生影响。...因为所有元素的事件将无法冒泡到document上,所有的 React 事件都将无法被注册。 合成事件的事件池 合成事件对象池,是 React 事件系统提供的一种性能优化方式。...最后浏览器绘制各个节点,将页面展示给用户。 replaint:屏幕的一部分重画,不影响整体布局,比如某个CSS的背景色变了,但元素的几何尺寸和位置不变。...当需要更新静态资源的时候,同时也会更新html中的引用。 如果同时改了页面结构和样式,也更新了静态资源对应的url地址,现在要发布代码上线,是先上线页面,还是先上线静态资源?

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

    content-visibility 缩短页面加载速度

    当容器的内容发生变化时,浏览器考虑到其他元素可能也会发生变化,于是就会去检查页面中所有的元素。一直以来浏览器都是这么做的,大家都习以为常了。...但是从另一方面说,开发者很清楚当前修改的元素是否独立、是否影响其他元素。因此如果开发者能把这个信息通过 CSS 告诉浏览器,那么浏览器就不需要再去考虑其他元素了,这将是非常完美的事情。...size: 表示元素盒子的大小是独立于其内容,也就是说在计算该元素盒子大小的时候是会忽略其子元素 layout: 该值表示元素的内部布局不受外部的任何影响,同时该元素以及其内容也不会影响到上级 style...设置content-visibility 跳过渲染 一般很难清楚明白使用哪个contain属性,因为只有在指定了适当的值后,浏览器才开始优化。...但是,当处理完全不在屏幕上的内容使,浏览器将跳过渲染工作,仅样式化和布局元素框本身。 加载页面的性能好像它只包含完整的屏幕上的内容以及每个非屏幕上的内容的空白框。

    1.8K10

    浅析YSlow-23条规则

    于是,人们想出来一个解决方法:既然浏览器是根据域来区分这些内容资源的,那么是否可以将这些内容都放在统一的一个域里面呢?...所以浏览器依然会发起一个HTTP 请求,虽然它是一个空值。 雅虎的团队指出,如果你将img的src留空,可能你的本意是暂时不要显示任何图片,但在不同的浏览器其实还是会有一些额外的请求发生。...解决留空src属性的问题: 你可以将初始图片设置为一个很小的默认图片(这个图片设置永不过期),而不是留空。...在HTML文件中指定外部样式表和内联样式块可能对浏览器的渲染性能产生不利影响。 1)浏览器阻塞渲染网页直到所有外部的样式表都已被下载。...看不到的影响:有时候,404错误发生了,用户可能根本没有感觉到。例如 例如请求favicon.ico文件,或者请求了某个不存在的脚本文件、样式表、图片文件,页面还是会按照正常的方式进行呈现。

    2K81

    浅析YSlow-23条规则

    于是,人们想出来一个解决方法:既然浏览器是根据域来区分这些内容资源的,那么是否可以将这些内容都放在统一的一个域里面呢?...所以浏览器依然会发起一个HTTP 请求,虽然它是一个空值。 雅虎的团队指出,如果你将img的src留空,可能你的本意是暂时不要显示任何图片,但在不同的浏览器其实还是会有一些额外的请求发生。...解决留空src属性的问题: 你可以将初始图片设置为一个很小的默认图片(这个图片设置永不过期),而不是留空。...在HTML文件中指定外部样式表和内联样式块可能对浏览器的渲染性能产生不利影响。 1)浏览器阻塞渲染网页直到所有外部的样式表都已被下载。...看不到的影响:有时候,404错误发生了,用户可能根本没有感觉到。例如 例如请求favicon.ico文件,或者请求了某个不存在的脚本文件、样式表、图片文件,页面还是会按照正常的方式进行呈现。

    1.3K30

    HTML和CSS

    有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo!...你的页面是否对爬虫容易理解非常重要,因为爬虫很大程度上会忽略用于表现的标记,而只注重语义标记....它没有重置所有的样式风格,但仅提供了一套合理的默认样式值。既能让众多浏览器达到一致和合理,但又不扰乱其他的东西(如粗体的标题)。 在这一方面,无法做每一个复位重置。...由于浏览器兼容的问题,不同的浏览器对标签的默认样式值不同,若不初始化会造成不同浏览器之间的显示差异 但是初始化CSS会对搜索引擎优化造成小影响 34. BFC是什么?...它没有重置所有的样式风格,但仅提供了一套合理的默认样式值。既能让众多浏览器达到一致和合理,但又不扰乱其他的东西(如粗体的标题)。   在这一方面,无法做每一个复位重置。

    5.4K30

    浏览器渲染机制

    访问每个元素并找到适用于该元素的所有规则,CSS 引擎遍历 DOM 节点,进行选择器匹配,并为匹配的节点执行样式设置。...结合层叠规则和其他信息为节点生成最终的计算样式,这些样式的值可以通过 window.getComputedStyle() 获取。...在大型网站中,会存在大量的 CSS 规则,如果为每个节点都保存一份样式值,会导致内存消耗过大。作为替代,CSS 引擎通常会创建共享的样式结构,计算样式对象一般有指针指向相同的共享结构。...某些不可见节点(例如 script、head、meta 等),它们不会体现在渲染输出中,会被忽略。 某些通过设置 display 为 none 隐藏的节点,在渲染树中也会被忽略。...CSS Triggers 中仅触发 Composite 的属性就是最优的选择。 2.2 优化影响渲染的资源 在浏览器解析 HTML 的过程中,CSS 和 JS 都有可能对页面的渲染造成影响。

    1.1K31

    一年前端面试打怪升级之路_2023-02-27

    1、首先创建了一个新对象 2、设置原型,将对象的原型设置为函数的prototype对象 3、让函数的this指向这个对象,执行构造函数的代码(为这个新对象添加属性) 4、判断函数的返回值类型,如果是值类型...使用absolute或者fixed,使元素脱离文档流,这样他们发生变化就不会影响其他元素 避免频繁操作DOM,可以创建一个文档片段documentFragment,在它上面应用所有DOM操作,最后再把它添加到文档中...将元素先设置display: none,操作结束后再把它显示出来。...因为在display属性为none的元素上进行的DOM操作不会引发回流和重绘。 将DOM的多个读操作(或者写操作)放在一起,而不是读写操作穿插着写。这得益于浏览器的渲染队列机制。...浏览器针对页面的回流与重绘,进行了自身的优化——渲染队列 浏览器会将所有的回流、重绘的操作放在一个队列中,当队列中的操作到了一定的数量或者到了一定的时间间隔,浏览器就会对队列进行批处理。

    47120

    前端开发面试题自测

    如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。...当 link 标签的 rel 属性值为“dns-prefetch”时,浏览器会对某个域名预先进行 DNS 解析并缓存。...性能受场景的影响是非常大的,不同的场景可能造成不同实现方案之间成倍的性能差距,所以依赖细粒度绑定及 Virtual DOM 哪个的性能更好还真不是一个容易下定论的问题。...综上,Virtual DOM 在性能上的收益并不是最主要的,更重要的是它使得 Vue 具备了现代框架应有的高级特性。...渲染引擎将 CSS 样式表转化为浏览器可以理解的 styleSheets,计算出 DOM 节点的样式。创建布局树,并计算元素的布局信息。对布局树进行分层,并生成分层树。

    37520

    一年前端面试打怪升级之路

    插件进程:主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。...而 Post 不是一个幂等的请求,一般用于对服务器资源会产生影响的情景,比如注册用户这一类的操作。是否缓存: 因为两者应用场景不同,浏览器一般会对 Get 请求缓存,但很少对 Post 请求缓存。...浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。flex属性是flex-grow,flex-shrink和flex-basis的简写,默认值为0 1 auto。...简单来说: flex布局是CSS3新增的一种布局方式,可以通过将一个元素的display属性值设置为flex从而使它成为一个flex容器,它的所有子元素都会成为它的项目。...async 函数调用不会造成阻塞,它内部所有的阻塞都被封装在一个 Promise 对象中异步执行。

    378100

    reflow和repaint(摘录自张鑫旭的翻译)

    这也导致了祖先的回流(div.error和body – 视浏览器而定)。此外,h5和ol也会有简单的回流,因为其在DOM中在回流元素之后。就Opera而言,大部分的回流将导致页面的重新渲染。...面向对象的CSS始终尝试获得它们影响的类对象(DOM节点或节点),但在这种情况下,它已尽可能的减少了回流的影响,增加性能优势。 避免设置多层内联样式 我们都知道与DOM交互很慢。...避免设置多级内联样式,因为每个都会造成回流,样式应该合并在一个外部类,这样当该元素的class属性可被操控时仅会产生一个reflow。...动画效果应用到position属性为absolute或fixed的元素上 动画效果应用到position属性为absolute或fixed的元素上,它们不影响其他元素的布局,所它他们只会导致重新绘制,而不是一个完整回流...想象一下,因为表格最后一个单元格的内容过宽而导致纵列大小完全改变。这就是为什么所有的浏览器都逐步地不支持table表格的渲染(感谢Bill Scott提供)。

    1.1K40

    浏览器层面优化前端性能(2):Reader引擎线程与模块分析优化点

    通常我们都无法预估浏览器到底会 reflow 哪一部分的代码,它们都彼此相互影响着。...因为会对每个DOM元素维护一个独有的样式规则小集合,如果这个集合发生改变,才重新计算该元素的样式。所以,样式计算一般是直接对那些目标元素执行。因此我们应该尽可能减少需要执行样式计算的元素的个数。...因为对每个元素最少需要检查一次所有的样式,以确认是否Web Components中的样式计算不会跨越Shadow DOM范围,仅在单个的Web Component中进行,而不是在整个页面的DOM树上进行避免大规模...避免强制同步布局事件的发生将一帧画面渲染到屏幕上的处理顺序如下所示: 在JavaScript脚本运行的时候,它能获取到的元素样式属性值都是上一帧画面的,都是旧的值。...大多数情况下,都不需要先修改然后再读取元素的样式属性值,使用上一帧的值就足够了。过早地同步执行样式计算和布局是潜在的页面性能的瓶颈之一避免快速连续的布局比强制同步布局更糟:连续快速的多次执行它。

    1.2K20

    前端硬核面试专题之 CSS 55 问

    } (3)多个块状元素解决方案将元素的 display 属性设置为 inline-block,并且把父元素的 text-align 属性设置为 center 即可: .parent { text-align...float float:left (或 right),向左(或右)浮动,直到它的边缘碰到包含框或另一个浮动框为止。且脱离普通的文档流,会被正常文档流内的块框忽略。不占据空间,无法将父类元素撑开。...初始化样式会对 SEO 有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。...两种匹配规则的性能差别很大,是因为从右向左的匹配在第一步就筛选掉了大量的不符合条件的最右节点(叶子节点),而从左向右的匹配规则的性能都浪费在了失败的查找上面。...这个方法看起来很完美,只要我们记得清除浮动(这里我用了最简单的方法),那 footer 也不会错位。而且无论 main 和 sidebar 谁更长,都不会对布局造成影响。

    2K20

    玩转CSS3动画

    首先,需要理解的是,CSS animations仍处在Working Draft阶段,这也意味着并非所有的浏览器都支持CSS animations,在使用该特性之前,请确定所面向的平台是否支持。...CSS3动画就是让元素逐渐从一种风格变为另一种风格。您可以根据需要更改任意数量的CSS属性,次数没有限制。要使用CSS动画,您必须首先为动画指定一些关键帧。关键帧保存元素在特定时间具有的样式。...动画的主要组成部分 CSS动画由两个基本部分组成: 关键帧 - 定义动画的阶段和样式。 动画属性 - 将@keyframes分配给一个特定的CSS元素并定义它如何动画。...可能的值是: 代表循环次数的数字 (缺省值是1) infinite - 无限次循环 initial - 设置循环次数为缺省值 inherit - 从父元素继承该值 ?...默认情况下,在动画开始之前(如果存在animation-delay)或动画完成后,动画不会影响元素的样式。

    69720

    浏览器原理0. 前言1. 解析过程2. 渲染树2.1 CSS样式计算2.2 构建渲染树3. 布局(重要)4. 重绘与重排(重要)5. paint(绘制)6. composite(重要)7. 浏览器加载

    定位坐标和大小,是否换行,position, overflow之类的属性。确定了每个DOM元素的样式规则后,计算每个DOM元素最终在屏幕上显示的大小和位置。...但是有些情况,如果我们的程序需要某些特殊的值,那么浏览器需要返回最新的值,而会有一些样式的改变,从而造成频繁的reflow/repaint。...所以元素重绘由这个元素和绘制层级的关系,来决定的是否会很大程度影响你的性能-,如果这个元素盖住的多层元素都被重新绘制,性能损耗当然大。...再说回来,在样式发生变化时,浏览器会尽可能做出最小的响应。因此,元素的颜色改变后,只会对该元素进行重绘。元素的位置改变后,只会对该元素及其子元素(可能还有同级元素)进行布局和重绘。...这就造成CSS阻塞了js,js阻塞了DOM树构建。所以我们只要设置link的preload来预加载css文件,解决了js执行时CSSOM树还没构建好的阻塞问题。

    5.2K41

    前端面试总结与思考

    (如下图) 重绘(Repaint ) 最终,我们通过构造渲染树和回流阶段,我们知道了哪些节点是可见的,以及可见节点的样式和具体的几何信息(位置、大小),那么我们就可以将渲染树的每个节点都转换为屏幕上的实际像素...解构进行分层 计算样式:分解图层完毕后,将所有的图层批量进行样式计算。...,浏览器只需要找到页面中所有的 span 标签然后设置颜色,但是对于第二种设置样式的方式来说,浏览器首先需要找到所有的 span 标签,然后找到 span 标签上的 a 标签,最后再去找到 div 标签...所以我们应该尽可能的避免写过于具体的 CSS 选择器,然后对于 HTML 来说也尽量少的添加无意义标签,保证层级扁平 将动画效果应用到position属性为absolute或fixed的元素上,避免影响其他元素的布局...,但在性能面前它还是可以提升的 css3硬件加速的缺点 当然,css3硬件加速还是有坑的: 如果你为太多元素使用css3硬件加速,会导致内存占用较大,会有性能问题。

    93820

    浏览器原理

    定位坐标和大小,是否换行,position, overflow之类的属性。确定了每个DOM元素的样式规则后,计算每个DOM元素最终在屏幕上显示的大小和位置。...但是有些情况,如果我们的程序需要某些特殊的值,那么浏览器需要返回最新的值,而会有一些样式的改变,从而造成频繁的reflow/repaint。...所以元素重绘由这个元素和绘制层级的关系,来决定的是否会很大程度影响你的性能-,如果这个元素盖住的多层元素都被重新绘制,性能损耗当然大。...再说回来,在样式发生变化时,浏览器会尽可能做出最小的响应。因此,元素的颜色改变后,只会对该元素进行重绘。元素的位置改变后,只会对该元素及其子元素(可能还有同级元素)进行布局和重绘。...这就造成CSS阻塞了js,js阻塞了DOM树构建。所以我们只要设置link的preload来预加载css文件,解决了js执行时CSSOM树还没构建好的阻塞问题。

    2K21

    画了20张图,详解浏览器渲染引擎工作原理

    比如在 HTML 上设置“font-size:20px;”,那么页面里基本所有的标签都可以继承到这个属性了。...为了构建渲染树,浏览器上大致做了如下工作:遍历DOM树中所有可见节点,并把这些节点加到布局中,而不可见的节点会被布局树忽略掉,如 head 标签下面的全部内容,再比如 p.p 这个元素,因为它的属性包含...如果给元素设置了visibility: hidden;属性,那这个元素会出现在渲染树中,因为具有这个样式的元素是需要占位的,只不过不需要显示出来。...(2)重绘 当对 DOM 的修改导致了样式的变化、但未影响其几何属性(比如修改颜色、背景色)时,浏览器不需重新计算元素的几何属性、直接为该元素绘制新的样式(会跳过重排环节),这个过程叫做重绘。...将元素先设置display: none,操作结束后再把它显示出来。

    2.6K21

    我们应该如何编写高质量的前端代码

    小结: 不过现在我们似乎不会关注这些东西了,因为有了高颜值组件库的出现,需要什么直接cv过来使用。...这里的reset是指我们把浏览器默认的基本样式都重置一下,尽量满足所有的浏览器样式看起来是一致的。还记得我们之前说过通配符*吗?那是一个及其暴力的样式重置,但也是很危险的一个操作符。...危险是因为需要遍历页面所有的元素节点,给他加上样式。...所以第一个问题就是我们一定要避免选择器的嵌套过深,因为很耗费性能。假如可以使用ID匹配到唯一的元素就不用使用其他的选择器了。...团队合作避免冲突 我们把自己的代码写在一个匿名函数里面,如(function(){})(),这样代码里面的变量就不会是全局的了,而是属于这个函数的内部变量,不会对他人的代码造成影响。

    66831

    谈谈前端面试经常遇到的一些题目

    插件进程:主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。...因为没有认证,所以中间人也向第三方认证机构进行申请,然后拦截后把所有的信息都替换成自己的,客户端仍然可以解密,并且无法判断这是服务器的还是中间人的,最后造成数据泄露。5....浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。flex属性是flex-grow,flex-shrink和flex-basis的简写,默认值为0 1 auto。...简单来说: flex布局是CSS3新增的一种布局方式,可以通过将一个元素的display属性值设置为flex从而使它成为一个flex容器,它的所有子元素都会成为它的项目。...(10)正确使用display的属性,由于display的作用,某些样式组合会无效,徒增样式体积的同时也影响解析性能。(11)不滥用web字体。

    70330
    领券