【问题标题】:Sass: How to merge nested import selectors with parent selector?Sass:如何将嵌套的导入选择器与父选择器合并?
【发布时间】:2021-07-14 14:38:39
【问题描述】:

背景

我有一个想要导入 Bootstrap CSS 样式的现有网站。样式有冲突,所以我想确定规则的范围。

示例

// node_modules/bootstrap-sass/assets/stylesheets/bootstrap/_modals.scss

.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
}

// ---

// my-styles.scss

.my-selector {
   @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap/modals";
}

这导致.my-selector .modal,但我想要.my-selector.modal

我想避免复制粘贴样式规则。如果我能以某种方式使用@extend 做到这一点,那就太好了。

感谢您的任何建议。

【问题讨论】:

  • 为什么要导入 @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap/modals"; 而不是 Bootstrap SASS 源? .. 这是一个叫做 boostrap-sass 的特殊项目吗?
  • Bootstrap v3 是用 Less 编写的。有一个名为 bootstrap-sass 的 Sass 版本。

标签: css twitter-bootstrap sass twitter-bootstrap-3 bootstrap-sass


【解决方案1】:

我不确定我是否完全理解这个问题,因为 // node_modules/bootstrap-sass/assets/stylesheets/bootstrap/_modals.scss 不是当前/标准 Bootstrap SASS 文件的父级。

如果您使用的是最新的 Bootstrap,_modal.scss 包含所有 SASS 模态源。因此,如果您想将所有模态规则/类(.modal、.modal-header、.modal-body 等...)@import 到另一个父 my-selector 类,那将是...

@import "bootstrap";

.modal.my-selector {
    & {
        @import "bootstrap/modal";
    }
}

SASS 演示:https://codeply.com/p/XjYSfp0s8H

【讨论】:

  • 感谢您的回答,但这对我不起作用。就我而言,我不控制具有 modal 类的元素。我正在开发一个非常遗留的项目,现在需要使用 Bootstrap v3。在大多数情况下,我可以限定可以修改父元素的样式,但在某些情况下,我想做一些 Sass 魔术,但如果没有导入的创建者的特殊考虑,这似乎是不可能的文件。
猜你喜欢
  • 2014-07-31
  • 2012-09-22
  • 2020-04-05
  • 2013-03-19
  • 2012-07-28
  • 2017-09-15
  • 2013-04-05
  • 2012-08-29
  • 1970-01-01
相关资源
最近更新 更多