如何重用 scss 模块并将其应用于具有不同 ID 名称的其他网站?

How to reuse and apply scss module to other web with different id names?

我正在学习css/scss。我想制作一个 scss 模块,其他人也可以以最简单的方式在他们的应用程序中使用它。我希望其他人只需要更改 id 名称就可以使用它。例如,我有一个模块 _buttons.scss:

.btn {
  position: relative;
  background: #27022d;
  color: #fff;
  transition: 500ms;
  background-image: (linear-gradient(270deg, #8e9ac2, #42579a));
  background-size: 400% 400%;
  animation: TransitioningBackground 10s ease infinite;

  &:hover {
    background-image: (linear-gradient(to left, #2d8fe5, #d155b8));
    transform: scale(1.05);
    cursor: pointer;
  }
  // shine animation left side
  &::before {
    content: '';
    display: block;
    position: absolute;
    background: rgba(255, 255, 255, 0.5);
    width: 60px;
    height: 100%;
    top: 0;
    filter: blur(30px);
    transform: translateX(-100px) skewX(-15deg);
  }
  // shine animation right side
  &::after {
    content: '';
    display: block;
    position: absolute;
    background: rgba(255, 255, 255, 0.2);
    width: 30px;
    height: 100%;
    top: 0;
    filter: blur(5px);
    transform: translateX(-100px) skewX(-15deg);
  }

  &::before, &::after {
    transform: translateX(300px) skewX(-15deg);
    transition: 0.7s;
  }
}

@keyframes TransitioningBackground {
  0% {
    background-position: 1% 0%;
  }
  50% {
    background-position: 99% 100%;
  }
  100% {
    background-position: 1% 0%;
  }
}

如何将所有东西包装成一个函数或模块,并能够应用于具有不同ID名称的其他btn,例如<btn id="test-me1">

谢谢!

你正在做的是设计一个框架。

现代 CSS 框架包括 Bootstrap, Foundation, Bulma, UIKit 等。

他们所做的是提供预制的 CSS 供您在组件上使用。这使您可以制作网站而不必过多地使用 CSS 除了边缘情况。相反,您只需给相关元素 class 名称,使其符合您想要的样式。

一般来说,拥有多个ID相同的元素就是bad practice。这是因为您使用 ID 来引用按钮等元素,或者在重定向时滚动导航页面。 ID 的唯一性很重要,因此您不想通过这些应用框架中的样式。

你应该做的是,一旦你完成了自定义框架的构建,你就可以在线托管它,并让人们使用 <head></head> 标签内的 <link rel="stylesheet" href="LINK_HERE"> 导入它,只是就像你如何处理普通的导入样式表一样。

现在您的 CSS 框架已导入他们的网站,他们可以应用您创建的 classes,只需将它们添加到 class 属性即可。

.red_background {
  background: red;
}

.blue_text {
  color: blue;
}

.green_border {
  border: 2px solid green;
}

.fat_margin {
  margin: 64px 0;
}
<div class="red_background blue_text green_border">This should have a red background, blur text, and green border... how ugly!</div>
<div class="blue_text green_border">Sometimes we might only want certain properties, however.</div>
<div class="fat_margin blue_text">We can use any of the classes we defined in our stylesheet to style our components. the .fat_margin class adds a massive margin to this element!</div>