针对 CSS Reset 进行设计系统

阅读时长 4 分钟读完

什么是 CSS Reset

在前端开发中,有一个非常重要的概念叫做 CSS Reset。当我们开始编写页面时,由于不同的浏览器对 HTML 和 CSS 的默认渲染方式不同,往往会导致页面出现很多奇怪的差异,因此我们需要一些方法来消除这些差异,让页面在不同的浏览器中表现基本一致。CSS Reset 就是为了解决这个问题而出现的。

CSS Reset 的基本思路就是在页面渲染之前,清除掉浏览器默认的样式,然后再自行设置一些基本的样式。

CSS Reset 的问题

但是随着前端技术的发展,CSS Reset 也出现了一些问题。在使用 CSS Reset 时,我们常常会遇到以下问题:

过于极端

某些 Reset 方案会清除掉大部分的默认样式,导致页面完全没有样式,需要重新手动添加很多基本样式,冗余代码大大增加,反而不利于开发效率。

破坏样式继承关系

如果我们在某个组件中定义了一些样式,但是在 Reset 后,这些定义就失效了,导致组件样式不符合我们的预期。例如一些全站统一样式,在 Reset 后可能失效,这对于项目的一致性也会带来负面影响。

微生态

CSS Reset 通常是一个单独的文件或者一段代码,使用时往往需要进行一些修改,这样就会产生很多个性化的 Reset 方案,导致代码的“微生态”现象,不利于维护。

设计系统解决方案

针对 CSS Reset 所存在的问题,我们可以选择一种更好的方案:设计系统。设计系统是一种以用户为中心的设计方法,目的是提高设计的效率和一致性,并能够快速实现设计想法。

在设计系统的基础上,我们可以实现以下方案:

保留重要默认样式

在设计系统中,我们可以保留默认的样式,但是只保留一些比较重要的样式,例如表单样式、文本样式等等。这样可以保证页面在不同浏览器中的呈现效果比较一致,同时也可以避免一些不必要的冗余代码。

采用样式继承的方式

在设计系统中,我们可以将一些样式定义为组件的基本样式,然后在具体的组件样式中进行继承。这样可以避免样式丢失,同时也可以提高组件的复用性。

配置化

在设计系统中,我们可以使用配置化的方式来实现样式的定义和管理。这样可以避免微生态现象,提高代码的可维护性和可扩展性。

示例代码

下面是一个简单的设计系统示例代码:

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

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

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

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

可以看到,我们在样式中定义了一个 button 组件,以及两个不同的 button 变体,分别是 primary 和 secondary。我们使用了 normalize 的方式来重置了一些默认样式,然后在设计系统中定义了一些基本样式,以及不同变体的样式,并使用继承的方式来保证样式的正确继承和复用。

总结

CSS Reset 是解决前端开发问题的一种方便但是有缺点的方案,而通过设计系统,我们可以实现基于组件的灵活,可扩展和可维护的样式定义与调用,处理更好这些问题。设计系统相对于 Reset 方案在过程中需要时间、人力以及设计思想的提高,但作为最终可维护的系统解决方案而言,是值得花费精力去实现的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648969ef48841e98947b2f88

纠错
反馈