css - sass中的cos函数返回未定义的操作错误

标签 css sass

@if ($nav-position == "bottom-right") {
    @if ($n == "first") {
      transform: translate(-$r, 0);
    } @else if ($n == "last") {
      transform: translate(0, -$r);
    } @else {
      transform: translate(floor(-$r * cos($theta)), floor(-$r * sin($theta)));
    }
  }

这样不行,请问是什么原因呢?我尝试使用终端或 GUI cilent 编译它,两者都给了我同样的错误:

error

最佳答案

我认为您以错误的顺序传递值,我尝试重现该错误。

将此代码粘贴到 SassMeister 上以方便检查

SASS 代码

@mixin transform($r, $theta, $n: 'first' ,$nav-position: 'bottom-right' ) {
  @if ($nav-position == 'bottom-right') {
    @if ($n == 'first') {
      transform: translate(- $r, 0);
    } 
    @else if ($n == 'last') {
      transform: translate(0, - $r);
    } 
    @else {
      transform: translate(floor(-$r * cos($theta)), floor(-$r * sin($theta)));
    }
  }
}


// First IF 'bottom-right' TRUE

  // IF

h1 {
  @include transform(5, 1)
}  

 // ELSE IF  'FIRST' 
h2 {
  @include transform(5, 1, 'first')
}

 // ELSE IF  'LAST' 
h3 {
  @include transform(5, 1, 'last')
}

 // ELSE
h4 {
  @include transform(5, 1, 'else')
}

 // NOTHING IS PRINTED
h5 {
  @include transform(5, 1, 'else', 'yeka')
}

 // ERROR APPEARS WHEN YOU PASS THE PARAM IN A WRONG ORDER
 // UNCOMMENT TO CHECK IT

 /*

h6 {
  @include transform('144px', 5, 1)
} */

CSS 输出

h1 {
  transform: translate(-5, 0);
}

h2 {
  transform: translate(-5, 0);
}

h3 {
  transform: translate(0, -5);
}

h4 {
  transform: translate(-3, -5);
}

取消注释 H6 规则时的 CSS 错误

Undefined operation: "-"144px" times 0.28366".

如你所见,我用 4 个参数创建了一个 mixin

$r
$theta
$n
$nav-position

最后两个有一个默认值,便于维护, 一切都按预期工作,但在最后一个示例中(h6 标题的注释) 当您取消注释时,您会看到您的错误。我试图将“144px”值作为第一个参数传递,但应该是第三个。所以一切都崩溃了,因为 $r$theta 必须是一个 NUMBER 而不是一个字符串

如果问题出在 ELSE 情况下,那么问题出在单位上,use unitless function 用于执行 cos 或 sin 函数之前的 $theta 和 $r 值。 但是你必须确保你传递的是相同的单位,例如 px 和 px,而不是 px 和 rem。 或者您可以创建并嵌套另一个函数来检查这些情况

关于css - sass中的cos函数返回未定义的操作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38179090/

相关文章:

html - 为什么这两个 div 之间有空白?

javascript - 如何在 UI 上动态显示图像?

python - Django 模板中的分页和行格式化困难

css - 使用压缩输出时,SASS/Compass 在@each 中缺少一个条目

css - 带有 compass Sprite 的伪背景裁剪

CSS 滑动门按钮居中对齐

css - 如何在没有 <h :panelGroup>? 的情况下实现对齐的对话框布局

sass - 如何修改sass中的根父选择器

css - sass 中的 $experimental-support-for-svg 是什么,为什么需要它?

css - 如何管理结构相同但颜色不同的多个css皮肤?