NPM 包 ember-cli-css-extensions 使用教程

阅读时长 8 分钟读完

CSS 是前端开发中不可或缺的一环。在使用 CSS 过程中,经常需要做到类似以下的操作:

  • 定义一个基础的 CSS 样式
  • 在不同的需要中,基于基础样式进行调整
  • 定义不同状态下的样式,如:hover, :active 等
  • 在不同的场景下,对同一元素进行不同的样式设置

针对这些需求,有一个非常好用的 NPM 包 ember-cli-css-extensions。本文将详细介绍该包的使用方法。

安装

在使用 ember-cli-css-extensions 之前,需要先安装 Ember CLI:

然后,在 Ember 项目中,使用以下命令安装 ember-cli-css-extensions

基本使用

在 CSS 中,我们可以使用 @extend 关键字实现样式的重用。例如:

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

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

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

在上述代码中,我们定义了一个 .btn 的基础样式,然后通过 @extend 实现了 .btn-primary.btn-success 的样式重用。

而在 ember-cli-css-extensions 中,则可以使用 .extends 类来实现样式的继承。

例如:

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

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

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

和普通 CSS 的实现代码类似,我们同样定义了一个基础的样式 .btn-base, 然后使用 .extends 声明了 .btn-primary.btn-success 继承自 .btn-base,并在继承时通过后代选择器,实现了样式的调整。

深度继承

在 CSS 中,有时候需要通过选择器的嵌套,实现样式的修饰。例如:

而在使用 ember-cli-css-extensions 时,则可以使用 $self 关键字实现嵌套的选择器调用。

例如:

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

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

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

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

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

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

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

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

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

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

在上述代码中,我们定义了一个 .btn-inner 的子元素样式,并使用 $self 实现了 .btn-primary.btn-success 对于子元素 .btn-inner 样式的调整。

同时,我们也可以通过类似于 .btn-base:hover 的样式,定义基础样式的 :hover 状态,并在继承时进行修改。

示例代码

下面是一个完整的示例代码:

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

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

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

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

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

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

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

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

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

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

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

效果如下:

通过对比上面的代码和普通 CSS 的使用,我们可以发现,使用 ember-cli-css-extensions 后,通过类似于 .extends$self 这样的特殊的语法,我们能够更加快速方便地完成样式的定义和继承,并且使得代码更加具有可读性和可维护性。

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

纠错
反馈