《Web前端开发最佳实践》——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样式的方式中,第一种方式是作为最佳实践的方式推荐使用,第二种方式可以在某些场合有选择地灵活使用,第三种方式应避免在页面中直接使用,第四种方式在任何场合都应该避免使用。

时间: 2024-10-05 07:16:07

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

《Web前端开发最佳实践》——第2章 高效Web前端开发2.1 前端代码的结构组织和文件的命名

第2章 高效Web前端开发 本章首先将概述Web前端开发中的相关最佳实践,如前端代码文件组织.前端代码重构.前端框架的选择,以及前端开发过程中实用的开发辅助工具等,帮助读者提高前端开发的效率.好的开发方式在项目中会起到事半功倍的效果,并且可确保开发过程中的代码结构清晰,易维护.本章然后会介绍前端代码的基本命名规范和格式规范,良好的命名规范和规整的格式让代码看起来干净整洁,也体现了开发者良好的职业素养,应该说命名规范.整齐的格式不仅是开发过程中的一种约定,而且是程序员之间良好沟通的桥梁. 2.1

《Web前端开发最佳实践》——导读

前 言 Web前端开发入门难度并不高,但是初学者如果没有一个很好的学习和编码习惯,则开发水平的提高速度会变得很慢.下面几点是影响Web前端开发者技术提高的主要因素. 其一是开发者缺乏良好的实践指导.Web前端兴起的时间不长,很多大学都还没有来得及开一门专门讲解Web前端的课程,因此,大部分的Web前端开发者都是通过自学的方式来了解Web前端相关的技术.开发者学习前端技术的渠道很多,其中很大一部分是通过查找网络资源的方式,而网络上充斥着大量的错误或者过时的实践方法,这些实践方法很容易误导初学者,使

《Web前端开发最佳实践》——2.5 Web前端代码开发和调试

2.5 Web前端代码开发和调试 2.5.1 Web前端集成开发环境 很多集成开发环境(IDE)都集成了前端代码IDE,如Visual Studio.Eclipse等,但在纯粹的前端开发中,这些IDE显得不够强大而且不够轻量.这里推荐两款强大的IDE:Aptana Studio和WebStorm. Aptana Studio是一个开源的Web开发工具,有非常强大的JavaScript编辑器和调试器(见图2-4).它的主要特性包括: JavaScript函数.HTML及CSS的Code Assis

《Web前端开发最佳实践》——2.2 前端代码重构

2.2 前端代码重构 代码重构是业内经常讨论的一个热门话题.重构指的是在不改变代码外部行为的情况下进行源代码修改,重构之前需要考虑的是重构后如何才能保证外部行为不改变.对于后端代码来说,可以通过大量的自动化测试来确保重构后的代码逻辑,可对于普遍缺乏自动化测试的前端代码来说,重构之前一定要考虑再三才能下手.我曾经有一次不算太成功的前端重构经历,所幸的是没有导致太大的问题,但教训是惨痛的.此次重构的项目本身没有足够的自动化测试,尤其是针对前端的自动化测试,其实在重构之前也预想到了重构的风险.先来介绍

《Web前端开发最佳实践》——1.2 Web前端开发现状

1.2 Web前端开发现状 前端开发虽然起步时间晚,但是发展势头迅猛,在各种新技术.新标准的推动下,各大互联网公司也开始重视Web产品的前端重构与开发,如淘宝.腾讯.新浪.百度.搜狐等都对自己的网站进行了重构并同时使用了HTML5中的新特性.现在开发的Web新产品的页面交互也越来越丰富,视觉效果也越来越绚丽.互联网公司除了重视前端开发之外,还在积极推动互联网技术的发展,2001-2012年,腾讯.百度及奇虎360公司先后加入了万维网联盟(W3C),共同参与互联网技术标准的研究和制定,促进了国内互

《Web前端开发最佳实践》——3.7 添加必要的&lt; meta&gt;标签

3.7 添加必要的< meta>标签 < meta >标签放置在HTML页面的head中,主要用于标识网站.其中基本上包含了网站的一些描述信息,如简介.作者等.这些信息有助于搜索引擎更准确地识别网页的内容,也有助于第三方工具抓取网站基本信息. 按照W3C的标准介绍,< meta>元素有4个属性:name.http-equiv.content和charset.< meta>标签通过name属性来表述页面文档的元信息,通过http-equiv属性设置HTTP请求

《Web前端开发最佳实践》——1.3 规范的Web前端代码:更易维护、更高性能和更安全

1.3 规范的Web前端代码:更易维护.更高性能和更安全 规范的代码,这是所有软件开发中对代码的基本要求,前端开发也是一样的,要求编写规范的HTML.CSS和JavaScript代码. 什么样的前端代码才能称得上规范的代码?探讨这个问题之前,首先需要强调的是规范不是标准,不是放之四海而皆准的,不同的项目中的代码规范是有可能有差异的,比如命名,有些项目规定HTML标签的id必须要以控件的缩写名作为前缀,如按钮的id名以"btn"作为前缀,有些只是规定命名有意义就可以.再比如有些项目规定J

《Web前端开发最佳实践》——第3章 标准的HTML代码3.1 验证代码是否符合标准

第3章 标准的HTML代码 标准的HTML代码指的是HTML代码符合W3C的最新标准,而在页面的HTML代码中包含有任何规范之外的或者是不推荐的标签和属性都是不符合标准的.W3C定义了所有规范的HTML标签及其属性,目前正式的版本是HTML5,HTML5中定义的大部分内容已经被所有的高级浏览器支持,所以并不妨碍在页面中使用这些已经广泛被支持的新标签和新属性.本章将贴近W3C标准,介绍如何构建标准的页面HTML代码. 3.1 验证代码是否符合标准 一个符合W3C标准的网页会有什么重要的意义呢?这是

《Web前端开发最佳实践》——2.3 合理使用前端框架

2.3 合理使用前端框架 JavaScript本身是一种很强大的脚本语言,但是JavaScript固有的灵活性和由于使用多浏览器而产生的复杂性,在使用时并不能得心应手.此种状况下,JavaScript框架的重要性就显现出来了.JavaScript框架是JavaScript代码的工具集和函数集,一般包括DOM元素操作.DOM事件的封装.AJAX操作.UI控件封装以及一些功能算法的扩展等,如string.array等的功能扩展.好的JavaScript框架已经经过了大量的功能测试.性能测试,也经过了