CSS Reset 回顾与前瞻:掌握最佳实践

在前端开发中,CSS(层叠样式表)是非常重要的一环。而 CSS Reset,也称为 CSS 重置,是指一种将所有 HTML 元素的默认样式归零的技术,从而使在不同浏览器中呈现的样式更加一致。在这篇文章中,我们将回顾 CSS Reset 的历史,讨论最新的实践,并提供示例代码。

CSS Reset 的起源

早期的网站开发者常常遇到一个问题——在不同的浏览器上,同一个 HTML 元素(如按钮或表格)所呈现的样式不同。这是因为浏览器厂商为不同元素定义了不同的默认样式。 于是,为了消除浏览器之间的差异,网站开发者们开始创建所谓的 CSS Reset。

最早的 CSS Reset 叫做 Eric Meyer’s Reset CSS,它由 Eric Meyer 创造,于 2000 年发布。这个 CSS Reset 能够消除浏览器内置样式,使得所有 HTML 元素在不同浏览器中的呈现基本一致。Eric Meyer’s Reset CSS 由于其实用性和实用性,在当时的前端开发者当中十分流行。

CSS Rest 的问题

虽然 CSS Reset 可以消除浏览器厂商的默认样式,统一各种元素的外观表现,看起来是一个很好的解决方案,但它并没有完全解决所有问题,其中存在一些问题,这些问题是:

1. 代码量过大

CSS Reset 消耗了大量的开发资源,在逐个定义每个 HTML 元素的样式时,会增加大量的代码和工作量。

2. 过于笨重

对于那些已经有自己的 CSS 样式的开发者来说,直接给 HTML 元素定义新的样式,只会使代码变得笨重,从而引发新的问题。

3. 不一定符合我们的需求

构建 Web 应用程序的目的是为了满足我们自己的需求。而 CSS Reset 可能会完全替换我们原本自己定义的 CSS 样式,从而让我们的代码被压缩,而这与我们的初衷是相驳的。

CSS Rest 最佳实践

1. Normalize.css

为了解决 CSS Reset 的问题,Nicolas Gallagher 和 Jonathan Neal 设计了一个新的 CSS Reset 工具,名叫 Normalize.css。它采用了一种更为智能的重置方案,针对所有浏览器的一般规则做出了更好地取舍,尤其是最终输出的 CSS 不会完全覆盖已有的代码。

Normalize.css 是一种优秀的重置保留解决方案,具有以下特性:

  • 适应 HTML5 的所有元素,并显示出最好的默认外观。
  • 标准化后的元素显示方式大多接近 Web 标准,避免了某些元素的默认样式存在疑问。
  • 不会覆盖我们自己编写的样式。
  • 解决了大部分 Firefox 的新版本出现的问题。

2. 使用时机

在项目开发时,CSS Reset 是必不可少的。在这一点上,Normalize.css 提供了一个很好的解决方案。Normalize.css 的设计可以较好地消除浏览器之间的差异,做到更好地跨浏览器呈现。Normalize.css 相对于其他 Reset 工具,易于使用,代码简洁。

不过,如果你选择不使用 CSS Reset,只需明确你的项目的需求和目标。在一些比较小的项目中,直接编写样式很可能更容易快捷;你可以直接将元素样式定义为最重要的元素样式所关注的东西。

示例代码

下面是一个使用 Normalize.css 的示例代码:

--------- -----
------
------
  ----- ----------------
  ----- --------------- ---------------------------- -----------------
  ---------- ----- -------------
  ---- -- ------------- ---
  ----- -------------------------------------------------------------------------- -----------------
  ---- --- --- ---
  ----- ----------------- -----------------
-------
------
  --------
    ----- ---- ---------
  ---------
  -----
    ----
      ------ ------------- ------------
      ------ ------------- ------------
    -----
  ------
  ---------
    ------- -------------
    ----- ------- --- --------- -------------
    ----
      ----------- --------
      ----------- --------
      ----------- ----------
    -----
  ----------
  --------
    ------------ ------ --------
  ---------
-------
-------

这个示例展示了 HTML 结构,包括头部、导航、内容部分以及底部。通过将 Normalize.css 插入 HTML 中,我们可以消除不同浏览器之间的样式差异,使网站的外观在各个浏览器中表现一致。

-- ---------- --
---- -
  ------------ ---------- ------ -----------
  ------------ ----
  ------ -----
-
------- ---- -------- ------ -
  -------- ----
  ------- --- ----- -----
  ------- ----- --
-
------ -- -
  ---------- ----
-
--- -- -
  ----------- -----
  ------- --
  -------- --
-
--- -- -
  -------- -------------
  ------------- ----
-
--- - -
  ------ -----
-
--- ------- -
  ---------------- ----------
-
------- -- -
  ---------- ------
  ------------ -----
  ----------- --
-
------- - -
  ------- --
  ------ -----
-
------- -- -
  ----------- -----
  ------- --
  -------- --
-
------- -- -
  -------------- ------
-
------ -
  ---------- ------
  ----------- -------
-

这是自己编写的 CSS 样式,通过在 head 中引入该文件,即可将样式应用到 HTML 元素中。

总结

CSS Reset 是前端开发中必不可少的一部分,因为不同的浏览器会导致样式的差异,因此消除浏览器默认样式是一项重要的任务。尽管 Eric Meyer’s Reset CSS 可以消除浏览器的默认样式,但这种方法存在一些问题。相较之下,Normalize.css 更为智能、易用且代码更简洁,更胜一筹。判断是否该使用 CSS Reset 需要根据项目的规模和要求,以及开发者的能力和经验,做出正确的决策。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64716ce9968c7c53b0f4a622


猜你喜欢

  • ES7 的异步函数带来 Infinite Possibility

    随着 Web 应用程序的复杂性和用户对应用程序性能和响应速度的期望不断提高,异步编程成为了现代 Web 开发的必备技能。 想要更高效地进行异步编程,我们需要实时掌握新出现的技术和工具。

    1 年前
  • ES11 中的 Optional Chaining 运算符:高级用法

    在现代的前端开发中,我们经常会遇到需要访问多层嵌套对象或数组的数据,但是有些时候这些嵌套的数据可能是未知或者不存在的,这时候我们就需要使用 Optional Chaining 运算符来优雅地处理这些问...

    1 年前
  • Koa2 性能调优经验

    Koa2 是一个 Node.js 的 Web 框架,它的特点是轻量、简单和灵活,因此在 Node.js 社区中广受欢迎。本文章将介绍一些 Koa2 的性能调优经验,让你的 Koa2 应用更加高效、快速...

    1 年前
  • Vue.js 中 Vuex 使用详解

    什么是 Vuex Vuex 是一个 Vue.js 应用程序开发的状态管理库。它针对单页应用程序的共享状态进行设计。这个库集中于管理应用程序的各种组件之间的共享数据,避免了用多年眼泪痛苦地将数据从父组件...

    1 年前
  • CSS Reset 如何处理表单控件

    在前端开发中,CSS Reset 是一项非常重要的技术,其作用是消除不同浏览器之间可能存在的样式差异,以便开发者能够更加精准地控制网站样式。表单控件是表单页面中最重要的元素之一,是用户与网站进行交互的...

    1 年前
  • 使用 ES6 的 Symbol 和 Reflect 实现元编程

    随着 JavaScript 语言的不断发展,越来越多的开发者意识到了元编程(Metaprogramming)在框架开发、代码复用等方面的重要性。JavaScript 语言提供了一些元编程技术,其中最常...

    1 年前
  • 使用 SSE 实现服务器消息推送时的跨域问题解决

    前言 在 Web 应用程序中,服务器推送消息是很常见的需求。而 Server-Sent Events(SSE)是一种 Web 技术,可以通过简单的 HTTP 连接从服务器推送消息到客户端。

    1 年前
  • Hapi 框架中的日志处理及实现方法总结

    在前端开发中,日志是一个非常重要的部分。它记录了系统的运行状况和异常情况,对于排查问题、运行监控和数据分析都具有重要的作用。而在 Hapi 框架中,日志处理也有非常独特的实现方法和特点。

    1 年前
  • 在 Vue.js 中使用 TypeScript

    在前端开发中,TypeScript 已经成为了一种非常流行的静态语言。Vue.js 作为一款流行的前端框架,也可以使用 TypeScript 作为编程语言。在本文中,我们将介绍如何在 Vue.js 中...

    1 年前
  • .tsx 文件使用 Babel 编译 "XXXX.externals" 报错,解决办法是配置 exclude 和 include

    tsx 文件使用 Babel 编译 "XXXX.externals" 报错解决指南 在前端开发中,我们常常会使用 TypeScript 或者 JavaScript 进行开发,而 Babel 则是一个很...

    1 年前
  • 如何使用 ECMAScript 2021 中的 Promise 对象

    Promise 是一种异步编程的解决方案,可以有效地避免 JavaScript 中的回调地狱。该对象最初由社区提出,后来被 ES6 引入并成为 ES2021 语言规范的一部分,目前已成为常用的前端开发...

    1 年前
  • 如何为 React 应用程序添加单元测试

    React 作为目前最流行的前端框架,具有很强的灵活性和可扩展性。但是,为了确保代码的可靠性和稳定性,我们需要添加单元测试,以避免在维护或更新应用程序时出现错误和问题。

    1 年前
  • Docker Compose 配置详解:如何快速搭建多个容器应用

    前言 在当今的云原生时代,使用容器技术来运行和管理应用程序已经成为了常态。而 Docker 作为最受欢迎的容器化平台之一,已经被广泛应用于生产环境中。但是,手动创建和启动多个 Docker 容器来运行...

    1 年前
  • PM2 在 Ubuntu 系统下的部署及使用方法

    简介 PM2 是一个开源的 Node.js 应用程序生态系统,在生产环境中管理 Node.js 应用程序的进程和集群。它可以在服务器上自动重启应用程序并监控应用程序的运行状况,确保应用程序始终处于运行...

    1 年前
  • 利用 LESS 实现页面排版

    在前端开发中,页面的排版是一个重要的环节。为了让页面看起来更加美观、规范,我们通常会采用一些 CSS 框架或者自定义样式来完成页面的排版。而在这个过程中,LESS 可以为我们提供帮助。

    1 年前
  • ES8 新特性:Object.entries() 方法详解

    在 JavaScript 的不断发展过程中,ECMAScript (简称 ES)不断推出各种新的语法和 API,为前端开发提供了更多更便捷的操作方式。其中,ES8 新增的 Object.entries...

    1 年前
  • Sass 中如何实现 @mixin 指令的分离编写

    Sass 中如何实现 @mixin 指令的分离编写 前端开发中,Sass 是一种非常流行的 CSS 预处理器。它提供了许多方便的语言特性,能够让我们更加高效地编写样式。

    1 年前
  • Mongoose 中的 MongoDB 数据库权限管理方法

    在使用 MongoDB 数据库时,权限管理是十分重要的。Mongoose 是 Node.js 中一个非常流行的 ODM 库,提供了方便的 MongoDB 操作接口。

    1 年前
  • 在 Jest 单测环境中使用 enzyme-to-json 插件

    前言 在前端开发的过程中,单元测试是一个非常重要的环节。而在 React 项目中,Enzyme 是最常用的测试工具之一,它提供了简单易用的 API 来帮助我们测试 React 组件。

    1 年前
  • 如何使用 Koa 和 Chai-Http 进行 Koa API 测试

    在前端开发过程中,API 测试是不可避免的一部分。在本文中,我们将介绍如何使用 Koa 和 Chai-Http 进行 Koa API 测试,让你的 API 更加健壮和稳定。

    1 年前

相关推荐

    暂无文章