css - SASS:如果页面中已经存在具有相同属性的特定值的元素,则 CSS 属性的条件值

标签 css sass mixins

我想要一个 css 属性的不同值(我正在使用 SASS),基于页面上是否存在具有特定属性值 '$additionalNavHeight' 的元素。在某些页面中没有这样的元素,在其他页面中 - 有。我写了一个 SASS mixin:

@mixin top-position($navHeight, $additionalNavHeight)
{ 
  @if $additionalNavHeight == true {
    .loadingAnimation {
      top: $navHeight + $additionalNavHeight;
    }
  } 
  @else {
    .loadingAnimation {
      top: $navHeight;
    }
  }
}

我在选择器中包含了 mixin:

@include top-position($navHeight, $additionalNavHeight);

我认为这应该更改具有类“loadingAnimation”的元素的属性“top”的值,如果页面中已经存在其“top”属性值为“$additionalNavHeight”的元素。编译器没有显示任何错误,但代码没有任何改变。我究竟做错了什么?任何帮助将不胜感激。

最佳答案

最简单的解决方案。您必须使用 JavaScript 检查元素是否存在 并将第二类应用于元素。在第二种情况下(元素存在) 您必须添加额外的高度。在这种情况下,mixin 是多余的。

   .loadingAnimation {
      top: $navHeight;
    }
    .loadingAnimation.additinnalHeight {
      top: $navHeight + $additionalNavHeight;
    }

这是示例 jsfiffle: https://jsfiddle.net/ra9r8rk8/ 在这种情况下,当第一个 div 存在时,元素将接收类 newClass。 (元素)

编辑:这是第二个改进的解决方案。实际上不需要正则表达式。我们可以只使用类列表: https://jsfiddle.net/ra9r8rk8/1/

关于css - SASS:如果页面中已经存在具有相同属性的特定值的元素,则 CSS 属性的条件值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41120189/

相关文章:

javascript - 背景颜色背景图像之间的层文本

css - Angular 2 中的 ngClass 不在表格中呈现

css - SASS for循环创建列表项网格,在增加行时遇到问题

ruby-on-rails - rails : callbacks from module

typescript - 使用 TypeScript 混合模式?

django - 由使用 mixin 动态修改创建的集合

html - Bootstrap 。无法更改导航栏链接颜色。即使有身份证

javascript - 随 SRC 变化的动态纵横比

html - 将自定义背景图像赋予类别标题 wp

css - 关键帧混合