【问题标题】:Learning SCSS from old CSS code - how to rewrite this?从旧的 CSS 代码中学习 SCSS - 如何重写?
【发布时间】:2019-08-11 21:21:53
【问题描述】:

我是一个使用 SCSS 的初学者,我不知道如何将我的旧 CSS 重写为使用 SCSS 用于 TypeScript 项目的新内容,现在我在下面挑选了几个例子来问这个问题,如果有人可以展示正确的方式,我想我可以计算出我必须重写的其余代码。

下面的示例总结了我需要学习的所有内容:

.sb-slider li > a {
    outline: none;
}

.sb-slider li > a img {
    border: none;
}

.sb-perspective > div {
    position: absolute;
}

.sb-slider li.sb-current .sb-description {
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
    opacity: 1;
}

【问题讨论】:

标签: css typescript sass spfx scss-lint


【解决方案1】:

从旧的 CSS 代码中学习 SCSS - 如何重写?

SCSS 是 CSS 的超集。所以你可以把它复制粘贴到一个 SCSS 文件中,它就可以工作了?

【讨论】:

  • 不适用于 SharePoint 框架解决方案,我确实尝试过,但失败了
【解决方案2】:

有一些有效的在线转换工具,但要手动学习,请牢记一条简单的规则 - 每当您看到重复时,您就知道可以从中创建一个嵌套块。否则,您应该只编写常规 CSS。

例如,您有 3 个以 .sb-slider 开头的声明,因此可以成为一个块。从那里你将目标定位在.sb-slider 下方的li > a 两次,以及其下方的某些东西。这有助于 SCSS 的自然嵌套结构,它完全按照您的想法工作。

对于.sb-perspective > div 声明,您只使用了一次而不重复它,因此没有理由阻止它。将所有这些放在一起,您会得到:

.sb-slider {
     li > a {
          outline: none;

          img {
                border: none;
          }
     }

     li.sb-current .sb-description {
          -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
          opacity: 1;
     }
}

.sb-perspective > div {
     position: absolute;
}

【讨论】:

  • 谢谢,所以这是我在桌面上的第一个选项,有人在下面留下了另一个答案,那么有两种方法吗?很有趣!
  • 这更接近语义上正确的 SCSS(如果您没有像 &:hover 或 &::after 那样明确地定位父元素,则不需要使用 & 运算符),但两者都是有效代码。
【解决方案3】:

我已将您提到的 CSS 代码转换为 SCSS 代码,以便更好地了解转换代码的难易程度:

.sb-slider {
li {
    & > a {
        outline: none;
        img {
            border: none;
        }
    }
    &.sb-current {
        .sb-description {
            -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
            opacity: 1;
        }
    }
}
}
.sb-perspective {
    & > div {
        position: absolute;
    }
}

如果您注意到,它遵循您必须在您正在使用的标签或类中创建父子关系的模式。关键字“&”表示您使用的是父命名。

【讨论】:

  • 所以我有两种方法可以将我的代码重写为 SCSS - 那么这是第二种选择吗?
  • 这是其中一种方法。最简单的方法是使用在线提供的转换器,但使用它您将无法有效地学习。我可以建议的是,使用转换器并检查它们是如何修改代码的。您可以轻松理解用于转换的语法/规则。
猜你喜欢
  • 2012-10-26
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 2012-11-27
相关资源
最近更新 更多