scss可以支持像js方法一样动态传参吗?

发布于 2022-09-11 17:06:38 字数 399 浏览 20 评论 0

例如我使用scss定义一个样式类:

.w{x}px: {
    width:{X}px;
}

写代码的时候直接写

<div class="w20px">
<div class="w25px">
<div class="w30px">
<div class="w40px">

然后编译后就可以自动编译出

 .w20px: {
    width:20px;
}
.w25px: {
    width:25px;
}
.w30px: {
    width:30px;
}
.w40px: {
    width:40px;
}

可以这样吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

寻找一个思念的角度 2022-09-18 17:06:38
@mixin set-width($width){
    width:$width
}

使用时:

@include set-width(20px)
彩虹直至黑白 2022-09-18 17:06:38

可以的,使用for循环就好了

放血 2022-09-18 17:06:38

用@while循环也是可以的,用法文档都有@while,照葫芦画瓢就是了

思念满溢 2022-09-18 17:06:38

首先,你要预设你需要的值(20,25,30,40...)才能实现:
应该还没我们想象的那么智能,函数传参也是一种选择。

可以使用for遍历,如下参考代码:

$widths: (20,25,30,40);

@for $i from 1 through length($widths) {
  $item: nth($widths, $i);
  .w#{$item}px {
    width: #{$item}px;
  }
}

得到的结果大致如所期望:

.w20px {
  width: 20px;
}

.w25px {
  width: 25px;
}

.w30px {
  width: 30px;
}

.w40px {
  width: 40px;
}
聊慰 2022-09-18 17:06:38

不可以。@mixin进行声明,@include来进行调用。如下:

@mixin demo($demo:50) {  
    opacity:$demo/100;
    filter:alpha(opacity=$demo);
}
.demo{
    @include demo(30);
    width:$width;
    height:$width;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文