怎么做好 CSS Reset?

什么是 CSS Reset?

当浏览器解析 HTML 时,会给一些 HTML 元素添加默认的样式。这是因为各种浏览器对 HTML 元素的默认样式不一样,为了保证每个浏览器展示的页面尽量一致,CSS Reset 出现了。CSS Reset 是一个将所有 HTML 元素的默认样式设置为一致的基础 CSS 文件。

为什么需要 CSS Reset?

使用 CSS Reset 可以让我们在样式设计时避免因浏览器默认样式差异导致的兼容性问题。同时,CSS Reset 也可以让我们更好的控制样式,使代码更加规范化、易于维护。

如何做好 CSS Reset?

1.选择合适的 CSS Reset

常见的 CSS Reset 有 Eric Meyer Reset、Normalize.css 等。这些 CSS Reset 均有其特点,我们需要选择适合项目的 CSS Reset。

Eric Meyer Reset:是一个很早的 CSS Reset,它将大部分元素的 margin 和 padding 设置为 0,同时将部分表单元素还原为一致的状态。该 Reset 的特点是清空了所有的样式,适用于对浏览器默认样式的严格控制。

Normalize.css:与 Eric Meyer Reset 不同,它尝试保留一些有用的浏览器默认样式。Normalize.css 主要处理了一些常见的浏览器的样式差异,例如表单元素不能完全的一致化,不同浏览器宽度、行高的差异性等。Normalize.css 可以作为一个生产环境下的 CSS Reset 选择。

2.详细阅读 CSS Reset 的源代码

不同的 CSS Reset 可能针对不同的浏览器默认样式进行设置,因此一定要详细阅读 CSS Reset 的源代码。查看每一个元素默认样式被设置为了什么,以及这种设置的影响。这样可以更好的理解,在项目中如何使用 Reset。

3.结合项目实际需要进行二次定制

CSS Reset 不是适用所有场景,我们需要结合项目实际需要进行二次定制。在二次定制时,需要清楚的了解项目哪些部分需要 Reset,哪些部分不需要进行 Reset。

4.避免传统 Reset 导致的一些问题

传统的 CSS Reset 会将所有 HTML 元素的默认样式清除掉,这会导致一些影响性能的问题。例如在页面中使用大量的标签时,清除后不仅浏览器渲染速度变慢,而且页面代码也变得难以阅读,给开发和维护带来了不必要的困扰。

因此,在 CSS Reset 时我们要保持谨慎,不要修改过多的默认样式。应该在实际开发中,根据项目需要去选择修改哪些默认样式。

示例代码

Eric Meyer Reset

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

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

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

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

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

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

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

Normalize.css

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

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

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

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

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

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

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

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

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

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

结论

CSS Reset 对于前端工程师来说是一项必备的技能。使用合适的 CSS Reset 可以提高开发效率、降低维护成本。当我们选择一个 CSS Reset 时,需要仔细阅读 Reset 的源码,了解其中的实现细节,并根据项目需要进行二次定制。CSS Reset 绝不能滥用,我们应该谨慎的选择修改哪些样式,避免造成不必要的影响。

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


猜你喜欢

  • ES6 中的 Promise 用法详解

    在前端开发的时候,经常会遇到需要异步处理的任务,比如从服务器获取数据、执行复杂的计算等等。在之前的 JavaScript 版本中,通常需要进行回调嵌套,代码可读性差,难以维护。

    7 天前
  • MongoDB 中的数据查询优化技巧详解

    在 MongoDB 之前,这是一项非常耗时的操作。要从关系数据库的大量数据中查找和提取特定的数据非常麻烦。但是,在 MongoDB 中,使用 Query 语言可以从数百万甚至数十亿的文档中轻松提取所需...

    7 天前
  • Vue.js 中的生命周期钩子函数

    Vue.js 是一种流行的 JavaScript 框架,用于构建 Web 应用程序。其中生命周期钩子函数是 Vue.js 组件中的重要概念之一。在本文中,我们将详细介绍 Vue.js 中的生命周期钩子...

    7 天前
  • ECMAScript 2017 中的 async 函数:一个例子

    在 ECMAScript 2017 中,发布了 async 函数,这是一个让前端开发者特别感兴趣的技术。本文将会为大家介绍 async 函数的背景、原理和一个实际例子,详细讲解这个特性,并提供学习和指...

    7 天前
  • 如何提高无障碍物联网设备的用户体验

    前言 无障碍设计是一种设计理念和方法,旨在提供给各种人群,尤其是那些有视力、听力、认知和行动障碍的人群,更好的使用和享受万维网和其他产品、服务和环境。物联网设备的普及,越来越多的人在日常生活中使用这些...

    7 天前
  • Node.js 实现 WebSocket 及其相关应用场景

    WebSocket 是一种在 Web 应用程序中提供持久化连接的通信协议,它基于 TCP 协议,适用于客户端和服务器之间的双向通信。Node.js 提供了 WebSocket 的实现方式,该实现方式非...

    7 天前
  • 如何在 Next.js 服务器端渲染中使用 Redux

    简介 Next.js 是一个 React 服务器端渲染框架,可以方便地在客户端和服务器端渲染 React 组件。Redux 是一个流行的 JavaScript 状态管理库,可以帮助我们管理复杂的应用程...

    7 天前
  • 使用 Stencil 创建 Custom Elements 的步骤和技巧

    Stencil 是一个基于 Web Components 标准的工具集,它允许我们快速创建 Custom Elements。本文将介绍在前端开发中使用 Stencil 创建 Custom Elemen...

    7 天前
  • GraphQL 如何处理上传文件

    GraphQL 是一种用于 API 构建的查询语言和运行时。尤其在前端领域,GraphQL 已经成为了主流,它支持前端应用来组合自由多个请求以及接收想要的数据,而无需受API的限制。

    7 天前
  • 小白入门 Jest,一篇就够了!

    小白入门 Jest,一篇就够了! 随着前端开发的快速发展,测试成为了不可或缺的一部分。测试能够提高代码质量,减少 Bugs,以及提高代码的可维护性。针对 JavaScript 的测试框架有很多,其中最...

    7 天前
  • 如何在CSS Grid中实现多种透明度、渐变效果的方法?

    CSS Grid是一种非常强大的布局系统,它可以让我们轻松地建立复杂的网格布局,使页面更加灵活和易于维护。在CSS Grid中,我们可以通过多种方法实现透明度和渐变效果。

    7 天前
  • Headless CMS 的优势与限制:为什么越来越多的企业选择使用它?

    什么是 Headless CMS Headless CMS 是一种后端系统,与传统的 CMS 不同的是,Headless CMS 不负责处理渲染前台展示的所有内容,只负责管理和存储数据。

    7 天前
  • 如何在 Cypress 中处理多语言测试问题

    在现今的全球互联网环境中,跨语言的网站和应用程序已经变得越来越普遍。针对多语言的网站和应用程序进行测试是前端开发人员必须掌握的技能之一。在本文中,我们将探讨如何使用 Cypress 进行多语言测试,并...

    7 天前
  • 在 Vue.js 组件中使用 Mixins 扩展功能

    在 Vue.js 中,Mixins 是一种可以在多个组件之间共享代码的方式。可以在多个组件中定义相同的逻辑或功能,只需将它们定义为 Mixins,就可以轻松地在这些组件中使用。

    7 天前
  • SSE 连接超时问题的解决方法

    SSE 连接超时问题的解决方法 SSE (Server-Sent Events) 是一种服务器向客户端推送数据的 Web 技术。通过 SSE,服务器可以实时向客户端发送数据,而不是等待客户端发起请求。

    7 天前
  • 发布 Vue SPA 应用的常见错误及解决方法

    在 Vue 开发与发布过程中,我们可能会遇到各种错误。这些错误有些可能是因为我们对 Vue 的工作原理还不熟悉,或者是由于一些常见的错误。本文将介绍一些建议中注意避免的错误,并提供有关在 Vue 中解...

    7 天前
  • Redux 异步请求处理技巧

    Redux 是一个流行的 JavaScript 应用程序状态管理工具,广泛用于前端开发中。它允许开发者将应用程序状态集中存储在一个单一的存储容器(store)中,并提供了一个可预测的状态管理机制。

    7 天前
  • 无障碍服务程序开发中的问题及解决方法

    什么是无障碍服务程序? 无障碍服务程序是为了使所有人在使用软件应用程序时都能够获得平等的体验而设计的。这些程序特别考虑了身体残疾、认知障碍和语言障碍等人群的特殊需求。

    7 天前
  • 如何在 Express.js 中使用 Redis 缓存数据

    在我们开发 Web 应用时,经常会遇到需要频繁查询数据的情况,这会极大地增加数据库的负载,导致系统性能下降。为了解决这个问题,我们可以使用缓存技术。 Redis 是一个高性能的内存数据存储系统,可以用...

    7 天前
  • ECMAScript 2019 (ES10):通过 String.prototype.padEnd() 使字符串填充更容易

    在 ECMAScript 2019 (ES10) 中,引入了 String.prototype.padEnd() 方法,使字符串的填充变得更加方便和易用。这个方法可以让我们在字符串的结尾中添加指定的字...

    7 天前

相关推荐

    暂无文章