《Web前端开发最佳实践》——3.5 样式与结构分离

简介:

本节书摘来自华章计算机《Web前端开发最佳实践》一书中的第3章,第3.5节,作者:党 建 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.5 样式与结构分离

网页的结构、表现和行为分离是W3C制定的Web页面标准的精髓,一般的页面结构和表现对应着代码中的HTML和CSS,这意味着在页面中HTML和CSS分离是符合标准的做法。在讨论页面中HTML和CSS组合的最佳实践之前,先来简单说明一下HTML和CSS所有的组合方式。
把CSS样式应用于HTML总共有4种方式。
(1)在HTML页面中链接一个CSS文件
文件以link的形式添加到

部分,在link中可以设置media 属性来表明样式使用的场景。例如,media设置为screen表示正常浏览时的CSS样式,设置为print则表示页面打印时的CSS样式。
示例代码:
<link rel="stylesheet" href="default.css" />
<link rel="stylesheet" href="print.css" media="print" />

这种模式是最佳实践模式,做到了CSS和HTML的完美分离。如果需要修改页面的样式,则只需要修改CSS文件。此方式最大的优点是提高了性能。当多个页面共用一个相同的样式时,只会在首个页面访问时需要下载CSS文件,随后其他页面访问则只需要下载页面本身,CSS文件可直接从缓存中取得,不用再次从服务器端下载,从而提高了页面加载的速度。
(2)在HTML页面中内嵌CSS样式
此方式是把CSS样式直接内嵌到HTML页面

中,所有的CSS样式放置在style标签中,示例代码:
<style>
    body { }
</style>

此方式虽然也做到了CSS和HTML的分离,但是因为CSS和HTML放置到了同一个文件中,不利于样式的重用,也不利于多人维护。如果CSS样式用在多个页面时,CSS样式和HTML分离,可以利用CSS文件的缓存,提高多个页面整体的加载速度。当然,此方式也有一些优点,如果CSS样式只是用到单一的页面,则当CSS和HTML放置在同一个页面,会减少加载CSS样式文件的请求数量,加快页面加载速度。此外,在一些动态生成页面的场合,比如,在博客系统的自定义页面部分,将CSS和HTML放置在一起,方便输出和生成自定义页面。新浪网的首页正是把脚本和样式直接放置到了页面中,提高了页面加载速度。如果要合并CSS和HTML代码,一种好的实践是:在开发阶段,将CSS和HTML放置于单独的页面中,方便后续开发和维护。当代码发布时,通过工具合并CSS和HTML代码,提高页面实际运行时的性能。
(3)在HTML标签中添加内联CSS样式
此方式是样式直接添加到元素的style属性中。
示例代码:

<span style="color: green; background: transparent">green</span>

此种方式非常不利于页面的维护和样式的重用。很多糟糕的页面都是因为这种样式内嵌在元素中而导致页面代码庞大,难以维护。这种方式也降低了页面的可用性,并且也不利于搜索引擎对页面的识别。当然,此方式方便于通过JavaScript代码动态更改元素样式,如通过JavaScript代码给元素设置display样式值为none来控制元素的隐藏。jQuery框架中也通过大量利用此方式来给元素动态设置样式,从而实现一些动态效果。
(4)在CSS样式文件中加载CSS样式文件
示例代码:

@import "mystyle.css";
@import url("mystyle.css");

这种方式是使用得较少的一种方式。每当看到前端性能相关的最佳实践时,总能看到一条:不要使用@import。此方式最大的缺点是引用的CSS文件不能同时并行下载,这样延长了整个页面的下载过程,影响了页面加载性能。
以上4种引用CSS样式的方式中,第一种方式是作为最佳实践的方式推荐使用,第二种方式可以在某些场合有选择地灵活使用,第三种方式应避免在页面中直接使用,第四种方式在任何场合都应该避免使用。

相关文章
|
25天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
38 3
|
21天前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
25天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
42 2
|
26天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
25 3
|
26天前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
32 2
|
26天前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
37 2
|
26天前
|
测试技术 持续交付 PHP
PHP在Web开发中的应用与最佳实践###
【10月更文挑战第25天】 本文将深入探讨PHP在现代Web开发中的应用及其优势,并分享一些最佳实践来帮助开发者更有效地使用PHP。无论是初学者还是有经验的开发者,都能从中受益。 ###
56 1
|
27天前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
42 0
|
2月前
|
前端开发 JavaScript API
前端的全栈之路Meteor篇(完):关于前后端分离及与各框架的对比,浅析分离之下的潜在耦合
本文探讨了Meteor.js这一全栈JavaScript框架的特点与优势,特别是在前后端分离架构中的应用。Meteor通过共享数据结构和简化全栈开发流程,实现了前后端的紧密协作。文章还对比了其他全栈框架,如Next.js、Nuxt.js等,分析了各自的优势与适用场景,最后讨论了通过定义文档归属者和用户专有数据集简化后端构建及端云数据同步的方法。
|
2月前
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
182 0
下一篇
无影云桌面