前端面试基础知识题 1.如何实现单行/多行文本溢出的省略样式?...webkit的CSS属性扩展,所以兼容浏览器范围是PC端的webkit内核的浏览器,由于移动端大多数是使用webkit,所以移动端常用该形式。...: 使用CDN(因为CDN会根据你的网络状况,替你挑选最近的一个具有缓存内容的节点为你提供资源,因此可以减少加载时间) 对css进行压缩(可以用很多打包工具,比如webpack,gulp等,也可以通过开启...Web浏览器先会把获取到的HTML代码解析成一个DOM树,HTML中的每个标签都是DOM树中的一个节点,包括display: none隐藏的标签,还有JavaScript动态添加的元素等。...,并不会加载图片,而会构建样式规则树 加载JavaScript,执行JavaScript代码,如果代码中有创建img元素之类,会添加到DOM树中;如查有 - 添加background-image规则,将会添加到样式规则树中
你可以创建自己的Javascript CSS加载器,也可以通过在页面中包含样式表时使用标记来延迟非关键CSS。...12、使用速记 有时你想指定 padding-top 或 border-right ,但根据经验,我经常回到这些来添加更多,所以,我习惯于总是使用速记,以便在不指定很多属性的情况下更容易更改,代码更少。...18 、使用“will-change”作为最后的手段 “will-change”被用作性能提升来告诉浏览器一个属性将如何改变。...48 、 在你寻求 Javascript 帮助之前先找到 CSS 解决方案 我一直在分享如何在我的 Youtube UI/UX 库中尽可能多地使用 CSS 构建通用组件,我想让你明白的是,在你尝试添加...Javascript 之前,你应该尝试找到一个 CSS 解决方案(不要太老套),甚至,当你添加 Javascript 时,请考虑让 CSS 完成大部分样式并使用 Javascript 来处理触发器和副作用之类的事情
先来看看Chrome浏览器的架构图: 通常,我们编写的HTML、CSS、JavaScript等文件,经过浏览器运行之后就会显示出页面,那他们是如何转化为页面的?这背后的原理是什么?...; 「页面布局」:渲染树构建完毕之后,元素的位置关系以及需要应用的样式就确定了,这时浏览器会计算出所有元素的大小和绝对位置; 「页面绘制」:页面布局完成之后,浏览器会将根据处理出来的结果,把每一个页面图层转换为像素...,获取样式信息,用于渲染树的构建; 「JavaScript解释器」:使用JavaScript可以修改网页的内容、CSS规则等。...下面就来看看,浏览器是如何把CSS样式应用到DOM节点上的。 同样,浏览器也是无法直接理解CSS代码的,需要将其浏览器可以理解的CSSOM树。实际上。...以下操作都会导致页面重排: 页面首次渲染; 浏览器窗口大小发生变化; 元素的内容发生变化; 元素的尺寸或者位置发生变化; 元素的字体大小发生变化; 激活CSS伪类; 查询某些属性或者调用某些方法; 添加或者删除可见的
HTML元素的默认外观是通过浏览器的默认样式实现的:Firefox,Internet Explorer和Opera均不一样。例如,在Chrome中默认h1元素呈现为32px的大小。 ...三个基本原则: 使用HTML表示结构,CSS用来表现不同样式的风格和主题。JavaScript来响应用户行为。 使用HTML,必要时借助CSS,并且在不得己时再添加JavaScript。..."/css/global.css"> css/local.css"> 这样,浏览器就可以在解析HTML前预先加载样式而不会呈现一个混乱的页面布局。 ...浏览器还有一些如何呈现无效代码的标准化规则。 但是,这不你放任的理由。有效的HTML更容易调试,往往文件更小,速度更快,占用资源更少,因为它们渲染更快。无效的HTML让响应式设计难以实施。 ...使用元素代表文本,而不是用来布局。 避免使用来换行,使用块级元素和CSS来代替。 避免使用水平分隔线。使用CSS的border样式来控制。 不要使用不必要的DIV。
渲染引擎首先解析HTML文档,生成DOM树构建Render树 - 接下来不管是内联式,外联式还是嵌入式引入的CSS样式会被解析生成CSSOM树,根据DOM树与CSSOM树生成另外一棵用于渲染的树-渲染树...当renderer构造出来并添加到Render树上之后,它并没有位置跟大小信息,为它确定这些信息的过程,接下来是布局(layout)。...浏览器进行页面布局基本过程是以浏览器可见区域为画布,左上角为(0,0)基础坐标,从左到右,从上到下从DOM的根节点开始画,首先确定显示元素的大小跟位置,此过程是通过浏览器计算出来的,用户CSS中定义的量未必就是浏览器实际采用的量...CSS渲染与布局优化添加或移除一个DOM元素、修改元素属性和样式类、应用动画效果等操作,都会引起DOM结构的改变,从而导致浏览器要repaint或者reflow。...每个元素都有一个显式或隐式的大小信息,决定于其CSS属性的设置、或是元素本身内容的大小、抑或是其父元素的大小。在Blink/WebKit内核的浏览器和IE中,这个过程称为布局。
table布局(Avoid tables for layout) 避免使用CSS的JavaScript表达式 (仅 IE 浏览器)(Avoid JavaScript expressions in the...自动布局, CSS 2.1 规范 避免使用CSS的JavaScript表达式 这项规则较过时,但确实是个好的主意。主要的原因,这些表现是如此昂贵,是因为他们每次重新计算文档,或部分文档、回流。...因为回流(reflow)在浏览器中属于一种用户主导的模块化操作,所以知道如何去改进回流(reflow)时间以及知道各种文档属性(DOM节点深度,css的渲染效率,各种各样的样式改变)对回流(reflow...例如,改变浏览器窗口的大小,使用一些JavaScript方法,包括计算样式,对DOM进行元素的添加或删除,或是改变元素的class等。...从上边的表格我们可以清晰的看到并不是所有JavaScript改变的样式都会在浏览器中产生回流(reflow),所花费的回流(reflow)时间也是多样的。
前言 对于HTML,css和JavaScript是如何变成页面的,这个问题你了解过吗?浏览器究竟在背后都做了些什么事情呢?...HTML,css,JavaScript数据经过中间渲染模块的处理,最终显示在页面上(其中HTML超文本标记语言,CSS层叠样式表,JS为JavaScript,大家一般都知道是什么,写过网页的朋友,学习者大都知道的...下图为浏览器的渲染过程图: image.png 重排Reflow 重排的定义:DOM结构中的各个元素都有自己的盒子模型,这些都需要浏览器根据各种样式来计算并根据计算结果将元素放到它该出现的位置,这个过程称之为...了解渲染机制,主要还是为了性能的优化: 了解浏览器如何进行加载,引用外部样式文件,JS文件时,将它们放到合适的位置,是浏览器最快的速度让文件加载完毕;了解浏览器如何进行解析,选择最优的写法,构建DOM结构...,组织CSS选择器的时候,是为了提高浏览器的解析速率;了解浏览器如何进行渲染,是可以减少“重绘”,“重新布局”的消耗。
是针对DOM应用的所有CSS规则; 使用async和defer属性很容易使JavaScript无阻塞; CSS不容易异步; 所以要记住的一个好的经验法则是,您的页面会在你最慢的样式表加载完成之后才展示。...使用关键CSS 如果你有能力,减少Start Render时间的最有效方法之一就是使用Critical CSS模式:识别Start Render所需的所有样式(通常是首屏所需的样式), 将它们内联到文档的...避免在CSS文件中使用@import。 @import,根据它的工作原理,很慢。 对于Start Render性能来说真的非常糟糕。...不要在Async 脚本之前放置 上一节讨论了如何通过其他资源减慢CSS,本节将讨论CSS如何无意中延迟下载资源的下载,主要是使用异步加载代码段插入的JavaScript...注: 您必须根据自己的特定用例测试此模式:根据您之前的CSS JavaScript文件与CSS本身之间的文件大小和执行成本是否存在巨大差异,可能会有不同的结果。 测试,测试,测试。
如果图片展示区域小于图片的真实大小,则应在服务器端根据业务需要先行进行图片压缩,图片压缩后,图片大小与展示的就一致了。 3、谈谈性能优化问题。 可以在以下层面优化性能。...(1)减少HTTP请求次数,控制CSS Sprite、JavaScript与CSS源码、图片的大小,使用网页Gzip、CDN托管、data缓存、图片服务器 (2)通过前端模板 JavaScript和数据...(7)尽量使用id、 class选择器设置样式(避免使用 style属性设置行内样式) (8)尽量使用CSS3动画。 (9)减少重绘和回流。 12、针对HTML,如何优化性能? 具体方法如下。...(3)减少 cookie头信息的大小,头信息越大,资源传输速度越慢。 (4)图片或者CSS、 JavaScript文件均可使用CDN来加速。 15、如何优化服务器端的接口? 具体方法如下。...重设图片大小是指在页面、CSS、 JavaScript文件等中多次重置图片大小,多次重设图片大小会引发图片的多次重绘,影响性能 (4)图片尽量避免使用 DataURL。
Combined files Combined files也就是合并文件,将多个CSS文件或者JavaScript文件合并成一个CSS文件或者JavaScript文件,可以有效减少HTTP请求数量,并且可以通过压缩算法减小文件的大小...,当然全部由外部文件引入的方式会增加HTTP请求数量,所以外部引用的关键问题就在于如何权衡相对于HTML文档数量而言,缓存外部JavaScript与CSS文件的数量,尽管难以量化,但可以使用各种度量标准来衡量此因素...优化资源加载 样式表位置 根据浏览器渲染的顺序,将CSS在中引入或者嵌入,相对于将CSS放到或者页面底部来说,可以使页面渲染速度加快,这对于页面内容比较丰富的网站或者网络链接较慢时相当重要...压缩外部文件 压缩JavaScript和CSS文件,从代码中删除不必要的字符以减小其大小,从而缩短加载时间,当代码最小化时,所有注释以及不需要的空白字符都将被删除,由于减小了下载文件的大小,因此可以提高响应时间性能...配置ETag 实体标签ETag是Web服务器和浏览器用来确定浏览器缓存中的资源是否与原始服务器上的资源匹配的一种机制,添加了ETag,以提供一种比上次修改日期更灵活的验证实体的机制。
从HTML和CSS开始 首先考虑如何使用HTML和CSS生成PDF版本。 CSS确实有一个处理打印CSS的规范,就是 Paged Media module。...当然如果你有一个样式表,它也会根据打印样式表进行格式化。 用浏览器直接打印的一个问题是浏览器对片断规范(fragmentation )的支持不足。这可能意味着你的页面内容以不同寻常的方式中断。...与wkhtmltopdf一样,如果有浏览器支持,添加了一些CSS 提供的功能。...当将页面发送到正在使用的工具时,通常会使用一个用于打印的特定样式表。与常规打印样式表一样,我在站点上使用的CSS并不都适合PDF版本。...为这些工具创建样式表与创建常规打印样式表非常相似,可能使用不同的字体大小或颜色来决定显示或隐藏什么。
结束化结束之后,这些标记紧接着就会被转换为Node,这些Node会根据不同Node之前的联系生成DOM树(Document Object Model)。 除了HTML文件还有CSS文件和JS文件。...构建CSSOM树 构建CSSOM树(CSS Object Model)的过程与构建DOM树是极其相似的。 ? 在这个过程中,浏览器会确定下一个节点的样式,并且这个过程是非常消耗资源的。...不完整的CSSOM是无法使用的,JavaScript想要访问CSSOM并更改它,就必须得到完整的CSSOM。所以导致浏览器在未完成CSSOM的构建的时候想要运行JavaScript。...会导致性能问题的操作: 改变window大小 改变字体 添加和删除样式 文字改动 定位或者浮动 盒模型 因为很多操作都会消耗GPU,所以我们需要规避一些操作减少重绘和回流的次数: 使用transfrom...总结 知道了这么多东西,我们会选择一些优化策略: 1、从文件大小考虑 2、将css放在头部,将js放在尾部 3、减少资源请求数量 4、下载的内容是否要在首屏上使用 5、script标签的使用加defer
HTML 原始字节,并根据文件的指定编码将它们转成字符。...总的优化原则就是减少关键资源个数,降低关键资源大小,降低关键资源的 RTT 次数: 如何减少关键资源的个数?...另一种方式,如果 JavaScript 代码没有 DOM 或者 CSSOM 的操作,则可以改成 sync 或者 defer 属性 如何减少关键资源的大小?...可以压缩 CSS 和 JavaScript 资源,移除 HTML、CSS、JavaScript 文件中一些注释内容 如何减少关键资源 RTT 的次数?...可以通过减少关键资源的个数和减少关键资源的大小搭配来实现。除此之外,还可以使用 CDN 来减少每次 RTT 时长。 交互阶段 接下来我们再来聊聊页面加载完成之后的交互阶段以及应该如何去优化。
样式设置接下来,我们使用CSS为图片容器添加样式,并设置3D变换效果。...交互增强为了增加交互性,我们可以使用JavaScript来监听用户的鼠标事件,并根据鼠标位置动态调整图片的旋转角度。...这里简单演示如何使用JavaScript实现这一功能。...在实际应用中,你可能需要根据具体需求对效果进行微调,例如调整旋转速度、添加过渡效果等。为了兼容不同的浏览器和设备,还需要考虑使用浏览器前缀和响应式设计等技术。...四、总结本文介绍了如何使用CSS3和JavaScript实现3D环绕效果的图片展示。通过这种方法,我们可以为网站添加富有创意和吸引力的视觉效果,提升用户体验和互动性。
如果你的 JS 脚本中,没有使用到类似document.write()这样的方法,你可以在 script标签中添加 async 或defer标记,然后浏览器会异步加载和运行此 JS 脚本,不会阻断解析。...如果需要,也可以使用 JavaScript Modules,还可以通过 标签向浏览器明确标记此为重要的资源,将在页面加载完成之后被立刻使用,对于这类资源,它会在页面加载生命周期的早期...[image.png] 上图中,主线程解析 CSS 并添加渲染样式。 即使你不使用任何 CSS 样式,每个 DOM 节点依然存在默认的渲染样式。...计算页面布局是一个很复杂的工作,即使最简单的从上到下的块流结构,也必须考虑字体的大小以及如何划分每一块,因为它们会影响当前段落的大小和形状,然后影响下一块所在的位置。...现在浏览器知道文档的结构,每个元素的样式,页面的形状和绘制顺序,它是如何绘制页面的?将此信息转换为屏幕上的像素称为光栅化(rasterizing)。
em的值不是固定的,它是相对单位,em是指当前默认字号大小(继承父元素默认字号)的倍数,可根据父元素字号的改变而自动调整。...list-item 像块类型元素一样显示,并添加样式列表标记。...Reset重置浏览器的css默认属性浏览器的品种不同,样式不同,然后重置,让他们统一。...提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等。 如何判断当前脚本运行在浏览器还是node环境中?...此外保持好的编码习惯,避免重复和css、JavaScript代码,多余的HTML标签和属性。 Flash、Ajax各自的优缺点,在使用中如何取舍?
根据httparchive.org的页面重量报告,CSS在平均70个请求和2MB的网页上占7个HTTP请求和70Kb的代码。...开发人员采取简单的方法,向不断增长的样式表添加更多属性。文件越大,下载和处理时间就越长。 CSS影响渲染:浏览器分三个阶段呈现页面:布局(元素尺寸)、绘画(文本、颜色、边框、阴影等)、和复合(定位)。...所有这些都更易于开发,使用更少的代码,渲染更快,并且可以适应不同的屏幕大小,而无需媒体查询。 非常旧的浏览器不支持这些属性,它们将每个元素显示为一个标准块。...将这段代码添加到样式表中,看看滚动是如何变得不稳定的!...CSS-in-JS框架通常在构建时创建随机类名,因此组件样式不会冲突。 最后,使用CSS级联比使用CSS级联更好。例如,你可以设置默认字体、颜色、大小、边框等。它们是普遍应用的,然后在必要时覆盖它们。
在网页开发中,可以使用CSS的视口单位(viewport units)来设置元素的尺寸,这些单位根据网页视口的大小进行调整。...结果,浏览器将在不需要预先执行JavaScript的情况下加载它们。 ---- 7. 缩小JS、CSS和HTML文件 文件缩小是一种通过减少文件中的代码行数来减小文件大小的方法。...消除阻塞渲染的JavaScript和CSS 如何识别关键资源 减少阻塞渲染资源影响的第一步是确定哪些是关键资源,哪些是非关键资源。...---- 如何减少阻塞渲染的CSS 类似于将代码内联到标签中,将首次渲染所需的关键样式内联到HTML页面头部的块中。然后,使用preload异步加载剩余的样式。...考虑使用Critical工具[10]自动提取和首屏可见内容的CSS样式。 消除阻塞渲染样式的另一种方法是将这些样式「拆分为不同的文件」,按媒体查询进行组织。然后,为每个样式表链接添加media属性。
浏览器的渲染过程 浏览器渲染主要有以下步骤: 首先解析收到的文档,根据文档定义构建一颗DOM树,DOM树是由DOM元素及属性节点组成的 然后对CSS进行解析,生成CSSOM规则树 根据DOM树和CSSOM...当渲染对象被创建并添加到树中,它们并没有位置和大小,所以当浏览器生成渲染树以后,就会根据渲染树来进行布局(又称回流)。这一阶段浏览器要做的事情就是要弄清各个节点在页面中的确切位置和大小。...多个带defer属性的标签,按照顺序执行 (2) 针对CSS:使用CSS有三种方式:使用link,@import,内联样式 link:浏览器会派发一个新等线程(HTTP线程)去加载资源文件、与此同时GUI...,浏览器为了用户体验,会使用浏览器默认样式,确保首次渲染的速度。...所以CSS一般写在header中,让浏览器尽快发送请求去获取CSS样式 所以在开发过程中,导入外部样式使用link,而不用@import。
领取专属 10元无门槛券
手把手带您无忧上云