【问题标题】:Dynamic font sizing with SCSS使用 SCSS 动态调整字体大小
【发布时间】:2019-01-16 07:07:48
【问题描述】:

是否可以仅使用 SCSS 而不是 JS 来设置相对于另一个元素的字体大小的字体大小?

例如,我想让段落文本比输入小 2 像素。

我尝试过这样的事情,但它似乎不起作用:

HTML

<input type="text" value="This is input text">
<p>Text smaller then input</p>

SCSS

$isize: 16px;
$psize: $isizev - 2;

input {
  font-size: $isize;
}

p {
  font-size: $psize;
}

【问题讨论】:

  • $psize: $isizev - 2px;?
  • 谢谢。我已经在 J​​Sfiddle.net 上尝试过,但它似乎不起作用。或者可能是JSfiddle的SCSS渲染坏了……还有其他地方可以在线测试吗?
  • 是的,sassmeister。你也有一个错字,$isisev 而不是$isize

标签: sass scss-mixins


【解决方案1】:

我们也可以依赖浏览器的 calc() 函数:https://caniuse.com/#search=calc()

$isize: 16px;
$psize: calc(#{$isize} - 2px);

input {
  font-size: $isize;
}

p {
  font-size: $psize;
}

【讨论】:

  • 呃,我更喜欢这个主意! '#' 是干什么用的?
  • 它允许在 calc() 函数内的属性值内使用变量值。这就是所谓的插值,如示例here 所示。没有它,变量将不会被解析。
【解决方案2】:

也许使用函数?

SCSS

@function ratioDimensions($factor:1, $base-dimension:16, $unit:px) {
  $calcSize: $base-dimension * $factor;
  @return #{$calcSize}#{$unit};
}

然后你可以使用:

SCSS

$isize: ratioDimensions(1);
$psize: ratioDimensions(1,16-2,px);

input {
  font-size: $isize;
}

p {
  font-size: $psize;
}

【讨论】:

猜你喜欢
  • 2015-05-14
  • 2013-10-03
  • 2013-06-04
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2011-04-04
  • 2019-04-07
  • 2014-04-04
相关资源
最近更新 更多