从Normalize.css到CSS Reset:一份非常详尽的介绍

面试官:小伙子,你的数组去重方式惊艳到我了

前言

在网页设计与开发中,样式表是一个非常重要的部分。它可以让网页变得更美观、更易读、更易用,也可以帮助开发者提高工作效率。所以,选择好样式表对于一个项目的成功至关重要。

在开始使用样式表前,有两个常见的选择:Reset CSS 与Normalize.css。这两个解决方案都有各自的优缺点,在正式选择之前,需要了解它们各自的特点。

前端样式表的弊端

在开始之前,我们先来了解一下前端样式表存在的一些弊端。

由于浏览器间存在差异,而不同的浏览器会默认展示不同的样式,这使得网页设计师在设计完整站点的样式之后,需要考虑的问题是,如何解决不同浏览器间的差异。

当然,这种问题还有很多的解决方案。其中,必须避免一种方法,那就是为每种排版组合单独编写样式表。这个做法会导致一个问题,就是会增加样式表的大小,会影响页面的加载速度。

这种类型的问题可以通过使用其他的技术来解决。这种方法很简单,就是为网站选择一个可靠的样式表。

解决方案

现在我们来介绍两个解决方案:Reset CSS 和 Normalize.css。这两个 CSS 库的作用非常相似,他们都是消除不同浏览器的样式差异,从而使得网站的展现更加一致。

Reset CSS

Reset CSS 的作用是消除浏览器的样式差异,从而保证网站可以在所有浏览器中呈现出一致的样式。Reset CSS 通常会通过重置所有元素的默认样式来实现这一目的。这意味着,Reset CSS 会从零开始,自己定义每一个元素的样式。

使用 Reset CSS 的好处是,它能够确保所有的页面元素都不会受到浏览器默认样式的影响。

然而,缺点也显而易见。Reset CSS 可能会破坏某些页面的可访问性,因为它会重置所有元素的样式,包括表单元素、标题、段落、链接等等,这些元素在保持默认样式时,通常是可以实现良好的可访问性的。

下面是一个 Reset CSS 的示例:

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

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

Normalize.css

Normalize.css 的目标是让不同浏览器都保持一致的样式表现,同时保留访问性,并强调了各元素自己默认的语义化。Normalize.css 的核心理念是把样式表重置为浏览器默认样式之前,先考虑到每个浏览器自己的默认样式。对于一些公共元素,其默认样式会被重置为一致的样子。利用这些样式,Normalize.css 可以为每个元素提供比默认样式更好的一些样式。这使得针对某些特定元素进行样式规定变得更加简单。

和 Reset CSS 的思想不同,Normalize.css 重设的规定仅仅修复了一些浏览器的默认样式,而不是将所有元素的样式都从零开始定义。对于一些页面元素,Normalize.css 的规定可能只使用了一个选择器,而且其重置规则一般比 Reset CSS 的简单。

另外,Normalize.css 支持响应式网页设计。它包含了一些媒体查询,这些都是可以帮助开发者针对各种设备进行响应式布局,从而使得网站更适合各种屏幕尺寸的设备。

下面是一个 Normalize.css 的示例:

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

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

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

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

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

-- ---- --

结论

不同的 CSS 库都有不同的优缺点,所以在选择的时候要权衡它们各自的特点。如果您需要一个非常干净的页面并且您的界面风格较独特,您可能需要使用 Reset CSS。如果您希望通过消除不同浏览器样式间的差异,使得您的样式表更加标准化并且适配性更好,那么您可以看一看 Normalize.css。

最后,值得注意的是,对于大多数项目来说,使用 Reset CSS 和 Normalize.css 都是可以的。只需要根据自己的具体情况选择一个适合自己的方案即可。

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


猜你喜欢

  • MongoDB 聚合分析的实现原理介绍

    前言 MongoDB 是一个非关系型数据库,如今在 web 开发中使用越来越广泛。因为它具有的高效率、可扩展性和灵活性。其中的聚合分析功能让 MongoDB 在数据操作方面表现出色。

    9 天前
  • 如何在 TailwindCSS 中使用自定义字体?

    在前端开发中,字体是非常重要的一部分,可以影响页面的视觉效果和用户体验。 TailwindCSS 是一个非常流行的 CSS 工具包,它提供了许多样式和组件,可以轻松地构建漂亮的界面。

    9 天前
  • 如何在您的 Vue.js 项目中使用 ESLint

    本文将介绍如何在您的 Vue.js 项目中使用 ESLint,以提高代码质量并减少错误率。 什么是 ESLint ESLint 是一个 JavaScript 代码检查工具,它可以在编写代码时检查和...

    9 天前
  • CSS Grid 中实现元素之间的自适应布局的技巧

    CSS Grid 是一种新的前端布局方案,它能够实现灵活的布局方式,使得开发者可以更加简单地对页面进行设计和管理。在 CSS Grid 中,元素之间的自适应布局是一个重要的方面,而实现这一目标的技巧也...

    9 天前
  • 使用 Express.js 进行支付操作

    在现代的 web 开发中,支付已经成为了重要的一环,而 Express.js 作为 Node.js 中非常流行的 web 框架,也为处理支付提供了很好的支持。本文将向您展示如何使用 Express.j...

    9 天前
  • 如何使用 GraphQL 实现分页和排序

    GraphQL 是一种用于 API 的查询语言。它不仅可以使用一个请求获取所需的数据,还可以减少服务器返回的不必要数据。在实际开发中,我们通常需要对数据进行分页和排序。

    9 天前
  • 如何使用 Enzyme 测试 React 组件中的 PropTypes?

    如何使用 Enzyme 测试 React 组件中的 PropTypes? 在 React 开发中,PropTypes 是一种用于检查 props 的类型和格式,以确保组件在运行时有正确的 props。

    9 天前
  • 在 Node.js 中如何使用 Sequelize ORM 框架进行数据操作?

    什么是 Sequelize ORM 框架? Sequelize 是一个基于 Node.js 平台的 ORM(Object-Relational Mapping)框架,支持 MySQL、PostgreS...

    9 天前
  • 无障碍网站建设中的浏览器兼容性问题及解决

    前言 在网站开发时,我们往往会关注各种视觉效果和交互体验,但忽略了网站用户的多样性。一些用户可能有听觉障碍、视觉障碍、身体残疾或认知障碍等。如何让这些用户和普通用户一样方便的使用网站呢?这种考虑下的网...

    9 天前
  • 如何处理 Web 图标并在 Webpack 中使用

    Web 图标是网站或应用中不可或缺的一部分。它们提高了用户体验,增加了网站的视觉吸引力。在本文中,我们将学习如何处理 Web 图标并在 Webpack 中使用。 Web 图标的类型 在开始之前,让我们...

    9 天前
  • PWA 应用中的缓存策略与优化方法

    前言 在 Web 开发中,我们经常需要向用户展示图片、视频等资源,而这些资源通常很大,下载时间长,给用户带来不便和不良体验。为了解决这个问题,PWA 技术应运而生。

    9 天前
  • 完全基于 Nginx Server-sent Events 的在线聊天室

    在线聊天室是 Web 应用程序中的一个常见功能。这种功能通常基于 WebSocket 技术实现,但是 WebSocket 应用程序需要一个额外的服务器来处理传入和传出的消息。

    9 天前
  • Flexbox 响应式设计的新特性和技巧介绍

    随着移动设备的广泛使用,响应式设计已成为现代网站设计的必备要素。而在前端里,Flexbox 看似简单的布局却是响应式设计中用的最多的技术之一,它可以用相对简单的代码实现各种布局方式,本文将详细介绍 F...

    9 天前
  • 将 TypeScript 集成到 AngularJS 1.x 中

    将 TypeScript 集成到 AngularJS 1.x 中 作为一种强类型的编程语言,TypeScript 可以让前端开发者在编写 JavaScript 代码时享受静态类型检查和更好的 IDE ...

    9 天前
  • PM2:你需要的 Node.js 进程管理工具

    在 Node.js 开发中,我们通常需要管理多个进程。这些进程包括 web 服务器、后台任务、消息队列等等。但手动管理这些进程是一件繁琐的工作,而且容易出错,这时候需要一个进程管理工具来协助我们完成这...

    9 天前
  • 在不依赖 React 的情况下测试 React 组件

    React 是现代 Web 开发中最常用的前端框架之一,尤其在构建大型单页应用程序 (SPA) 方面非常有用。然而,尽管 React 本身有很强的测试支持,但在某些情况下,我们可能需要在不依赖 Rea...

    9 天前
  • 如何使用 ESLint 检查您的 Angular 项目中的错误和警告

    如果您是一个前端工程师,那么肯定会有关于代码质量和规范的担忧。而 ESLint 是一个流行的代码检查工具,它可以帮助您在开发过程中规范和优化您的代码。 本文将介绍如何在您的 Angular 项目中使用...

    9 天前
  • Material Design 风格下 RecyclerView 的分页实现

    随着移动互联网的不断发展,移动端应用越来越受到人们的关注。在设计上,Material Design 成为了一个非常流行的趋势。而在前端开发中,RecyclerView 是一个非常强大的控件,它可以通过...

    9 天前
  • 解决使用 Express.js 遇到的各种问题

    Express.js 是一个流行的 Node.js Web 应用程序框架,它可以轻松地构建 RESTful API 和 Web 应用程序。然而,使用 Express.js 同样会遇到各种问题,例如错误...

    9 天前
  • Docker Compose 中使用 Service Discovery 实现服务注册

    标题:Docker Compose 中使用 Service Discovery 实现服务注册 介绍: 在复杂的前端开发中,往往需要将不同的服务部署在不同的容器中,协作完成一个完整的业务功能。

    9 天前

相关推荐

    暂无文章