html - SCSS - 条件包含不起作用并且所有 block 都被执行

标签 html css sass

我正在尝试在 scss 中进行条件包含。这是代码:

HTML

<div class="test" data-active data-label data-comment >1</div>
<div class="test" data-active data-label>2</div>
<div class="test" data-active data-comment >3</div>
<div class="test" data-active data-comment data-label>4</div>
<div class="test" data-active>5</div>

SCSS

.test[data-active]{

  background : red;
  width: 50px;
  height: 50px;
  display: inline-block;
  
  $margin: 0px;
  &[data-label]{
    background : blue;
    $margin: $margin + 10px;
  }
  &[data-comment]{
    background: yellow;
    $margin: $margin + 10px;
  }
  &[something]{
    $margin: $margin + 100px;
  }
  margin-right : $margin;
}

这是代码笔链接:https://codepen.io/gaurav-neema/pen/VwpPBxY

在代码中,您可以看到即使元素不包含该属性,也会执行所有 block 并包括边距。

任何人都可以帮助确定代码有什么问题吗?

最佳答案

你每次都在重新定义$margin,你不能使用像if语句这样的选择器。

重新定义:

  • $margin: $margin + 10px;
  • $margin: $margin + 100px;

您正在设置所有 margin-right: 100px;

我想你可能想要:

SCSS

$margin: 0px;

.test[data-active] {
  background: red;
  width: 50px;
  height: 50px;
  display: inline-block;
  
  &[data-label] {
    background : blue;
    margin: $margin + 10px;
  }

  &[data-comment] {
    background: yellow;
    margin: $margin + 10px;
  }

  &[something] {
    margin: $margin + 100px;
  }

  margin-right: $margin;
}

关于html - SCSS - 条件包含不起作用并且所有 block 都被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67631467/

相关文章:

html - 使位置固定不可滚动

javascript - Angular 2 : is styleUrls relative to the current component?

javascript - 字体大小响应填充父 div 的 100% 宽度?

html - 容器之间的中心图像,同时保持响应

css float div minwidth没有重叠

ruby-on-rails - 在 Rails 中,Rspec 给出了无效的 css 错误,但该应用程序运行正常。如何解决这个问题?

css - 根据索引查询scss映射到位置div

css - jekyll-sass-转换器不工作

html - Bootstrap 4 将侧边栏折叠成导航栏下拉菜单

javascript - 由于 TypeError : Cannot read property 'map' of null,React 页面未加载