前端代码性能优化策略_第1页
前端代码性能优化策略_第2页
前端代码性能优化策略_第3页
前端代码性能优化策略_第4页
前端代码性能优化策略_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20/26前端代码性能优化策略第一部分减少不必要的重绘和重排 2第二部分缓存DOM元素的引用 4第三部分优化CSS选择器性能 7第四部分延迟加载资源 9第五部分使用分块加载和并行下载 12第六部分压缩和缩小代码 14第七部分启用浏览器缓存 17第八部分监控性能指标 20

第一部分减少不必要的重绘和重排减少不必要的重绘和重排

重绘是指浏览器更新元素的外观,而重排是指浏览器改变元素的位置或大小。重绘和重排是浏览器渲染过程中的性能瓶颈,因为它们需要消耗大量的CPU和GPU资源。

减少重绘

*避免频繁修改元素的样式:只有在必要时才修改元素的样式。频繁的样式更改会导致浏览器多次重绘页面。

*使用CSS类:使用CSS类来应用样式,而不是内联样式。CSS类可以被缓存,并且只会在类发生更改时才触发重绘。

*使用transform代替left/top:使用`transform`属性来改变元素的位置,而不是使用`left`或`top`属性。`transform`是一种硬件加速的属性,不会触发重绘。

*避免使用复杂的背景图像:复杂的背景图像会触发重绘,因为浏览器必须计算背景的每个像素。

*使用`will-change`属性:`will-change`属性告诉浏览器元素即将发生更改,从而可以提前优化重绘。

减少重排

*避免添加或删除元素:添加或删除元素会导致浏览器必须重新计算页面的布局,从而触发重排。

*使用DOM碎片:将DOM分解成较小的片段,然后使用`appendChild()`或`insertBefore()`方法插入这些片段。这可以减少重排的次数。

*使用Flexbox和Grid:Flexbox和Grid是现代CSS布局模块,它们通过避免重排来提高性能。

*使用`position:sticky`:`position:sticky`属性允许元素固定在特定位置,即使页面滚动。这可以防止元素在滚动时触发重排。

*使用绝对定位:绝对定位的元素不会影响其他元素的布局,从而可以避免重排。

减少重绘和重排的影响

*使用`requestAnimationFrame`:`requestAnimationFrame`函数允许浏览器在浏览器空闲时执行回调函数。这可以减少重绘和重排对性能的影响。

*使用`batch()`方法:`batch()`方法允许开发者将多个DOM操作分组到一个单一的请求中。这可以减少浏览器执行这些操作时触发的重绘和重排的次数。

*使用虚拟化:虚拟化技术允许浏览器只渲染可见的部分页面,从而减少重绘和重排的次数。

*启用硬件加速:硬件加速使用图形处理单元(GPU)来处理渲染任务,从而提高性能并减少重绘和重排的影响。

示例

```css

position:sticky;

top:0;

transform:translateX(10px);

}

```

在这个示例中,使用`position:sticky`和`transform`来避免重排和重绘。`position:sticky`确保元素固定在屏幕顶部,`transform`将元素向右移动10px,而不会触发重排。第二部分缓存DOM元素的引用关键词关键要点【缓存DOM元素的引用】:

1.减少DOM遍历:将需要多次访问的DOM元素缓存到变量中,避免重复查找和遍历DOM树,从而提高性能。

2.优化事件处理:将事件处理函数缓存到变量中,避免每次事件触发时重新创建函数,减少内存分配和垃圾回收。

3.避免在循环中获取DOM元素:将循环内需要访问的DOM元素提前缓存,避免在每次迭代中重复获取,减少不必要的DOM操作。

【使用CSS优化布局】:

缓存DOM元素的引用

在前端开发中,频繁访问DOM元素会显著影响性能。通过缓存DOM元素的引用,可以显著减少开销,从而优化代码性能。

缓存的优势

*减少文档查询:每次查找DOM元素都涉及遍历DOM树,这是一个耗时的过程。缓存引用可以避免重复查询,节省时间和资源。

*促进布局稳定性:DOM元素的频繁重新查询会导致页面布局的重新计算和渲染,从而影响用户体验。缓存引用可以确保布局稳定性,减少页面重排。

*降低内存开销:DOM元素的引用通常是大型对象,频繁创建和销毁引用会导致内存开销增加。缓存引用可以减少内存分配和垃圾回收的次数。

缓存策略

有几种策略可以用于缓存DOM元素的引用:

1.查询缓存(QueryCaching)

*在首次查找DOM元素时,将引用存储在变量或数据结构中。

*在后续访问中,直接从缓存中检索引用,避免重复查询。

2.事件委托(EventDelegation)

*将事件监听器附加到更高层次的祖先元素上,而不是直接附加到目标元素。

*当事件触发时,使用`event.target`属性来获取触发事件的实际元素,从而避免为每个目标元素创建单独的事件监听器。

3.代理元素(ProxyElements)

*创建一个代理元素,该元素作为DOM中目标元素的占位符。

*代理元素负责处理与目标元素相关的事件和交互,从而避免直接访问目标元素。

缓存注意事项

*元素变化检测:缓存引用时,应注意DOM树中的元素变化。如果元素被删除或重新附加,引用将不再有效,需要更新。

*缓存大小优化:缓存大小应根据应用程序的需要而定。过大的缓存可能会导致内存问题,过小的缓存则无法有效利用该技术。

*浏览器兼容性:某些缓存策略在所有浏览器中可能无法完全兼容。应测试代码以确保跨浏览器的支持。

示例

查询缓存:

```javascript

constheader=document.querySelector('header');

//后续访问

header.style.backgroundColor='red';

```

事件委托:

```javascript

constcontainer=document.getElementById('container');

consttarget=e.target;

//在目标元素上执行操作

});

```

代理元素:

```javascript

constproxy=document.createElement('div');

proxy.id='proxy';

document.body.appendChild(proxy);

//使用代理元素处理目标元素的事件

//在目标元素上执行操作

});

```

总结

缓存DOM元素的引用是一种有效的优化策略,可以显著提升前端代码的性能和稳定性。通过理解不同缓存策略的优势和注意注意事项,开发人员可以充分利用该技术来构建更流畅、响应更快的Web应用程序。第三部分优化CSS选择器性能关键词关键要点主题名称:CSS选择器类型

1.简介不同类型的CSS选择器,包括简单选择器、伪类选择器、伪元素选择器、属性选择器和组合选择器。

2.强调特定类型选择器的性能影响,例如简单的选择器通常比复杂的组合选择器性能更好。

3.举例说明如何选择最佳选择器以优化性能,例如使用ID选择器而不是类选择器。

主题名称:选择器嵌套

优化CSS选择器性能

类型选择器(类和标签选择器)

*优先使用类选择器而不是标签选择器,因为浏览器可以更快地识别它们。

*避免使用通配符选择器(*),因为它会强制浏览器匹配页面上的所有元素。

*避免对选择器使用嵌套或多余的伪类。

ID选择器

*每个页面上的ID应唯一且稀疏。

*优先使用较短的ID,因为它们可以更快地解析。

属性选择器

*避免使用复杂或不必要的属性选择器,例如`[attribute^="value"]`。

*优先使用等号运算符(=)而不是包含运算符(~=)。

*尽量使用属性前缀,例如`[type="radio"]`而不是`[type]`。

后代选择器

*避免使用过多层嵌套的后代选择器,因为它们会减慢选择过程。

*优先使用子选择器(>)而不是后代选择器()。

通用选择器

*避免使用`*`通用选择器,因为它会强制浏览器匹配页面上的所有元素。

*仅在绝对必要时使用通用选择器。

优先级

*尽量不要为选择器设置不必要的优先级。

*如果必须设置优先级,请使用较低的优先级值,以减少选择器权重。

其他提示

*使用CSS预处理器(例如Sass或Less)来减少代码重复并改善可读性。

*考虑将CSS分解成更小的模块,以便并行下载和解析。

*测量和分析CSS性能,以识别和解决瓶颈。

*使用开发工具(例如ChromeDevTools)来调试CSS选择器性能问题。

数据

*使用标签选择器比使用类选择器慢20%。

*使用通配符选择器会使选择过程慢50%。

*在ID选择器中使用较短的名称可以将选择时间减少多达30%。

*使用较少的属性选择器可以将选择时间减少多达15%。

*使用较少的嵌套后代选择器可以将选择时间减少多达10%。

*使用`*`通用选择器会使选择过程慢500%。

*设置不必要的优先级会使选择过程慢10%。第四部分延迟加载资源延迟加载资源

延迟加载是一种通过仅在需要时加载资源来提高网站性能的技术。这可以通过几种方法来实现。

按需加载脚本

按需加载脚本涉及在页面加载时加载必要的脚本,并在用户需要这些脚本的特定功能时再加载其他脚本。这可以通过使用以下方法来实现:

*异步加载:async属性指示浏览器在解析遇到脚本时加载它,而不阻塞DOM的构建。

*延迟加载:defer属性指示浏览器在DOM构建完成后加载脚本,但不阻塞页面呈现。

按需加载样式表

与脚本类似,样式表也可以按需加载。这可以通过使用以下技术来实现:

*媒体查询:媒体查询允许根据特定条件(例如屏幕大小)有条件地加载样式表。

*链接rel="preload":preload属性指示浏览器预先加载资源,并在需要时将其保存在浏览器缓存中。

按需加载图像

图像占网页总大小的一大部分,延迟加载可以显著提高网站性能。有几种技术可以实现图像的按需加载:

*懒加载:懒加载技术仅在图像出现在视口中时加载图像。

*占位符:占位符是一种低分辨率图像,在原始图像加载之前显示。

*预加载:预加载指示浏览器在需要之前加载图像,从而缩短加载时间。

按需加载字体

字体文件也可以按需加载,以节省带宽和提高页面加载速度。可以使用以下技术:

*字体加载API:字体加载API允许开发者按需加载字体,并提供字体加载状态的控制。

*链接rel="preload":preload属性也可用于预先加载字体文件。

按需加载其他资源

除了脚本、样式表、图像和字体之外,其他类型的资源,如视频、音频和JSON文件,也可以按需加载。这可以通过使用与上述资源类似的技术来实现。

延迟加载的优势

延迟加载资源具有以下优势:

*减少页面加载时间:仅加载必要的资源可以减少初始页面加载时间。

*提高性能:通过推迟加载,浏览器可以将有限的资源分配给其他任务,从而提高整体性能。

*提高用户体验:更快的页面加载速度和更好的性能可以增强用户体验并增加参与度。

*节省带宽:按需加载资源可以减少从服务器下载的总数据量,从而节省带宽成本。

延迟加载注意事项

在实施延迟加载时,需要注意以下注意事项:

*浏览器兼容性:确保延迟加载技术与目标浏览器兼容。

*关键资源:确保在页面加载时加载所有关键资源,以避免内容闪烁或布局更改。

*过度延迟:延迟加载不应过度,以免延迟用户访问所需内容。

*监控:监控延迟加载的实施并进行调整,以优化性能并解决任何问题。

通过谨慎实施延迟加载技术,开发者可以显著提高网站性能,增强用户体验并节省带宽成本。第五部分使用分块加载和并行下载关键词关键要点分块加载

1.将大型文件或图像分解成更小的块,逐块加载到页面上。这样可以减少初始加载时间,并使页面渐进式呈现。

2.使用HTTP范围请求来指定特定块的范围,实现只加载必要的部分,避免不必要的下载。

3.采用分块加载策略时,请考虑浏览器对并发请求数量的限制,并相应地调整块大小和并行请求数量。

并行下载

1.通过多个并发连接同时下载多个文件或资源,加快加载速度。这是通过使用浏览器或第三方库实现的,如:FetchAPI、Axios等。

2.优化并行下载策略,考虑带宽限制和服务器端处理能力,确保最大化吞吐量且不影响其他加载操作。

3.优先考虑关键资源,如HTML文档、CSS文件和必要的脚本,以优先加载这些资源并缩短页面渲染时间。使用分块加载和并行加载

分块加载(Chunking)

分块加载是指将大型文件或数据集拆分成较小的块,然后逐步加载和处理这些块。通过这种方式,可以显著减少初始加载时间,并允许用户在内容加载时立即开始与页面交互。

分块加载的优点:

*缩短初始加载时间:通过只加载当前屏幕可见的内容,可以显著减少初始加载时间。

*渐进式内容显示:用户可以在内容加载时立即开始与页面交互,而无需等待完整页面加载。

*降低内存消耗:一次性仅加载部分内容,可以降低浏览器的内存消耗。

分块加载的实现:

*HTTP分块传输编码:HTTP分块传输编码允许将响应内容分成多个块,并在响应头中声明块的大小。

*Lazyloading:Lazyloading仅在用户滚动或交互时才加载特定元素。

*客户端分块:客户端可以在收到响应后将大型响应拆分成较小的块。

并行加载(Concatenation)

并行加载是指同时加载多个文件或脚本。通过这种方式,可以充分利用浏览器的多线程功能,减少整体加载时间。

并行加载的优点:

*缩短整体加载时间:通过同时加载多个文件,可以减少整体加载时间。

*避免阻塞主线程:脚本加载会阻塞主线程,而并行加载可以防止这种情况。

*减少传输时间:多个请求可以同时发送和接收,从而减少传输时间。

并行加载的实现:

*`<scriptasync>`:`async`属性允许脚本在加载完成后立即执行,而无需阻塞主线程。

*`<scriptdefer>`:`defer`属性允许脚本在DOM加载完成后才执行。

*`<linkrel="prefetch">`:预取请求可以提前加载文件,以便在需要时立即使用。

*HTTP/2推送:HTTP/2协议支持服务端主动推送响应,从而实现并行加载。

使用场景

分块加载和并行加载适用于以下场景:

*加载大型图像或视频文件

*加载多个脚本或CSS文件

*加载数据密集型应用程序

*加载交互式内容(如地图或图表)

注意:

*分块加载和并行加载并不是相互排斥的,可以结合使用以获得最佳效果。

*对于少数非常大的文件,分块加载的开销可能超过其收益。

*对于需要按特定顺序列加载的脚本或CSS文件,应避免使用并行加载。第六部分压缩和缩小代码关键词关键要点代码压缩

1.移除不必要的字符:删除空格、注释、换行符等不影响代码功能的字符。

2.缩短标识符:将冗长的变量和函数名称缩短为较短的别名,但要确保可读性和可维护性。

3.使用压缩算法:应用代码压缩算法,例如GZIP或Brotli,以减少最终代码的大小。

代码缩小

1.移除未使用的代码:分析应用程序代码并删除未使用的函数、类和变量。

2.内联函数调用:将小型函数直接内联到调用位置,减少函数调用的开销。

3.合并重复代码:识别并合并重复的代码块,消除代码冗余。压缩和缩小代码

简介

代码压缩和缩小是减少代码大小和缩短加载时间的有效方法。通过删除不必要的字符和优化剩余代码,可以显著提高前端性能。

方法

1.Uglification(丑化)

丑化是一种将代码转换为机器可读但对人类难以辨识的压缩技术。它移除注释、空格和缩进,同时保留代码功能。

2.Minification(缩小)

缩小是一种更高级的压缩技术,它不仅移除不必要的字符,还优化变量名称、函数调用和代码结构。

3.Gzip压缩

Gzip压缩是一种无损数据压缩算法,用于在传输前缩小代码大小。它使用DEFLATE算法,该算法可以有效地减少文本、HTML、CSS和JavaScript代码的大小。

好处

1.减少文件大小

压缩和缩小代码可以减少文件大小,从而减少加载时间和带宽消耗。

2.提高加载速度

较小的代码文件可以在更短的时间内下载,这提高了页面加载速度并改善了用户体验。

3.提升缓存效率

较小的代码文件可以更高效地缓存,减少重复加载,从而进一步提高加载速度。

4.增强安全性

丑化的代码更难被恶意用户读取或理解,从而提高了应用程序的安全性。

最佳实践

1.使用缩小器工具

有许多免费和付费的缩小器工具可供使用,例如UglifyJS、Terser和ClosureCompiler。

2.启用Gzip压缩

大多数Web服务器都支持Gzip压缩。确保已在您的服务器配置中启用此功能。

3.仅在发布时压缩

在开发期间,压缩代码可能会使调试变得困难。将压缩留到发布阶段,以避免影响开发效率。

4.注意兼容性

一些旧版本的浏览器或设备可能不支持压缩或缩小的代码。在实施这些技术之前,请测试您的代码以确保兼容性。

数据

根据GooglePageSpeedInsights的数据,压缩和缩小代码可以显著缩短页面加载时间:

*HTML:压缩和缩小HTML可以将文件大小减少70-90%。

*CSS:压缩和缩小CSS可以将文件大小减少60-80%。

*JavaScript:压缩和缩小JavaScript可以将文件大小减少40-70%。

结论

代码压缩和缩小是提高前端代码性能的最佳实践。通过删除不必要的字符和优化剩余代码,可以显着减少文件大小、提高加载速度、增强缓存效率和提升安全性。通过采用这些技术,开发人员可以为用户提供更快速、更响应的Web体验。第七部分启用浏览器缓存关键词关键要点【启用浏览器缓存】

1.浏览器缓存可将常用文件存储在本地,减少网络请求量,从而加快页面加载速度。

2.通过设置Expires或Cache-Control头信息,可以控制文件在浏览器中的缓存过期时间。

3.使用版本控制或哈希值可确保缓存文件与服务器版本同步,防止缓存错误。

【利用ServiceWorker】

启用浏览器缓存

浏览器缓存是一种机制,它允许浏览器存储网站的静态资源(如HTML、CSS、JavaScript和图像),以便在后续访问时可以快速检索这些资源。启用浏览器缓存可以显著提升网站的性能,因为浏览器无需再次从服务器下载这些文件。

#缓存机制

浏览器的缓存是一个分层结构,由以下部分组成:

*内存缓存:保存最近访问的资源,速度最快。

*磁盘缓存:保存较不常用的资源,容量更大。

*HTTP缓存:利用HTTP协议中的Cache-Control和Expires头,控制资源的缓存行为。

#启用浏览器缓存

启用浏览器缓存有两种主要方法:

1.设置HTTP缓存头:在服务器响应中设置Cache-Control和Expires头,以指定资源的缓存持续时间。例如:

```

Cache-Control:max-age=3600

Expires:Wed,21Oct202107:28:00GMT

```

这将缓存资源1小时。

2.使用服务端缓存服务:如CDN(内容分发网络)或反向代理服务器,它们可以缓存静态资源,并减少服务器负载。

#优点

启用浏览器缓存的好处包括:

*页面加载速度更快:缓存的资源可以快速从浏览器中检索,从而缩短页面加载时间。

*减少服务器负载:缓存减少了服务器对重复请求资源的需求,释放了服务器资源。

*降低带宽消耗:缓存的资源无需再次下载,从而节省了带宽。

*改善用户体验:更快的页面加载速度可以提升用户体验,降低跳出率。

#缺点

启用浏览器缓存也存在一些缺点:

*数据不一致:浏览器缓存可能导致用户看不到网站更新后的内容。

*安全隐患:缓存的内容可能包含敏感数据,如果缓存配置不当,可能会带来安全风险。

#最佳实践

为了有效利用浏览器缓存,请遵循以下最佳实践:

*设置合理的缓存时间:根据资源的更新频率,为资源设置一个合适的缓存时间,既可以保证内容的时效性,又可以避免缓存过长造成的数据不一致。

*使用强缓存:对于不需要频繁更新的资源,使用强缓存(如Cache-Control:max-age),阻止浏览器向服务器发出验证请求。

*使用版本控制:如果资源需要频繁更新,使用版本控制机制(如ETag或Last-Modified头),以确保浏览器始终获取最新版本。

*监测缓存命中率:使用开发工具或分析工具来监测浏览器缓存的命中率,并根据需要调整缓存策略。第八部分监控性能指标关键词关键要点性能指标监控工具

1.使用性能监控工具,例如ChromeDevTools或WebPageTest,定期收集网站性能数据。

2.监控页面加载时间、首字节时间、DOM加载时间等关键性能指标。

3.设定性能指标阈值,并定期检查是否超出阈值,以便及时发现性能问题。

用户体验监控

1.使用合成监控工具,例如GoogleLighthouse或WebPageTest,模拟真实用户访问网站的体验。

2.监控用户体验指标,例如首次绘制时间、最大内容绘制时间等,以了解网站对用户的影响。

3.分析用户行为数据,例如点击、滚动和退出率,以优化网站布局和交互。

持续集成和部署

1.将性能优化纳入持续集成和部署流程,在代码提交后自动运行性能测试。

2.使用自动化测试工具,例如Puppeteer或Playwright,在不同环境下测试网站性能。

3.通过自动化部署流程,在代码更新后自动部署性能优化措施,确保网站始终保持高性能。

渐进式加载和懒加载

1.使用渐进式加载技术,将页面内容分段加载,以减少初始加载时间。

2.实施懒加载,仅在用户需要时加载图像、视频或其他资源,以优化带宽使用和页面性能。

3.结合以上技术,实现更快的页面加载速度和更流畅的用户体验。

缓存和内容交付网络

1.利用缓存机制,将常用的文件存储在客户端浏览器中,减少重复请求的开销。

2.使用内容交付网络(CDN),将网站内容分发到全球各地的服务器,以减少延迟和提高加载速度。

3.针对不同设备和网络条件优化缓存策略,以实现最佳性能。

代码优化

1.优化代码结构,减少复杂性并提高可维护性。

2.避免不必要的重绘和重排,通过优化布局和使用CSSGrid和Flexbox等布局技术。

3.使用代码缩小工具,减少代码文件大小并提高页面加载速度。监控性能指标

代码性能优化至关重要,它直接影响用户体验和业务价值。监控性能指标是发现问题区域、跟踪改进并优化代码的必要步骤。以下是关键性能指标及其监控方法:

1.加载时间

*定义:页面从开始加载到所有资源完全加载并渲染所用的时间。

*测量方法:使用网络性能工具(例如,ChromeDevTools中的Timing部分)或第三方工具(例如,WebPageTest)。

*最佳实践:目标是低于3秒,理想情况下是低于2秒。

2.页面速度

*定义:页面加载并交互的速度,反映了用户体验。

*测量方法:使用Google提供的PageSpeedInsights工具。

*最佳实践:优化页面速度分数,目标是90分以上。

3.第一字节时间(TTFB)

*定义:客户端首次向服务器发出请求到接收第一个字节所用的时间。

*测量方法:使用网络性能工具(例如,ChromeDevTools)。

*最佳实践:目标是低于200毫秒。

4.总阻塞时间(TBT)

*定义:页面加载期间所有阻塞用户交互的任务所用的时间。

*测量方法:使用网络性能工具(例如,ChromeDevTools中的Performance部分)。

*最佳实践:目标是低于20毫秒。

5.交互时间(TTI)

*定义:页面响应用户交互(例如,点击)的时间。

*测量方法:使用第三方工具(例如,SpeedCurve)。

*最佳实践:目标是低于200毫秒。

6.可见性

*定义:页面加载时可见内容的数量。

*测量方法:使用ChromeDevTools中的Coverage部分。

*最佳实践:目标是90%以上的可见性。

7.帧速率

*定义:每秒绘制的帧数,影响动画和页面的流畅性。

*测量方法:使用网络性能工具(例如,ChromeDevTools)。

*最佳实践:目标是60帧/秒。

监控工具

监控性能指标可以使用多种工具,包括:

*ChromeDevTools:浏览器内置性能分析工具。

*WebPageTest:开源网站性能测试工具。

*PageSpeedInsights:Google提供的页面速度评分工具。

*SpeedCurve:第三方性能监控和分析平台。

监控策略

有效的性能监控策略涉及:

*定期监控:定期对指标进行监控,以了解趋势并发现问题。

*持续改进:分析监控数据,识别问题区域,并实施改进。

*基准测试:在优化之前和之后进行基准测试,以衡量改进。

*团队参与:确保整个团队参与监控和优化过程。

通过监控和分析性能指标,开发人员可以持续优化前端代码,提供更好的用户体验,并提高业务价值。关键词关键要点主题名称:减少不必要的DOM操作

关键要点:

-减少对DOM树的频繁修改,如增加或删除节点。

-使用虚拟DOM或类似技术,将更新集中在需要改变的特定部分,而不是整个页面。

-考虑使用CSS动画和变换,以避免需要更新DOM树。

主题名称:批处理样式更改

关键要点:

-将多个样式更改组合到一个操作中,而不是对每个更改执行单独的DOM操作。

-使用样式表来存储样式更改,并在需要时一次性应用。

-考虑使用CSS变量和预处理器,以简化样式管理并提高性能。

主题名称:避免不必要的重排

关键要点:

-确保元素的尺寸和位置在改变之前保持稳定。

-使用flexbox或grid布局,以避免重排元素时引起页面布局的变动。

-考虑将复杂的内容移出可视范围,以减少重排对性能的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论