gpt4 book ai didi

css - 如何将 CSS 变量值分配给 scss 变量或表达式

转载 作者:行者123 更新时间:2023-12-04 19:29:44 24 4
gpt4 key购买 nike

我正在尝试在 CSS/scss 中构建我自己的小型可扩展网格。
到目前为止,我发现了这个决定:

:root {
--page-width: 1170px;
--gutter: 15px;
--columns: 12;
}

.wrapper {
max-width: var(--page-width);
margin-right: auto;
margin-left: auto;
padding-left: var(--gutter);
padding-right: var(--gutter);
}

.row {
margin-left: calc(-1 * var(--gutter));
margin-right: calc(-1 * var(--gutter));
}

.col {
display: block;
margin-left: var(--gutter);
margin-right: var(--gutter);
}

然后我尝试使用 scss 来缩短列类描述(同时允许我在整个代码的一个地方更改列数 - 在 CSS 变量 --columns 中)像这样
@for $n from 1 through var(--columns) {
.col-#{$n} {width: calc( #{$n} / var(--columns) - var(--gutter) * 2 ); }
}

但它没有用。有趣的细节是,当我改变 @for声明来自 @for $n from 1 through var(--columns) `` 到 @for $n from 1 through 12 它编译得很好。并且在 @for里面编译CSS-Variable也没有问题 body 。 .col-#{$n} {width: calc( #{$n} / var(--columns) - var(--gutter) * 2 ); }很好地编译成需要的一系列类。

如果我使用 scss 变量 $columns而不是 CSS 变量,那么我需要将我的 grid.scss 文件导入到元素的所有其他 scss 文件中。

这是我关于 StackOverflow 的第一个问题,所以如果需要任何其他详细信息,请告诉我。

最佳答案

CSS 和 SCSS 变量是两个非常不同的东西(请参阅 this pen)
为了让它工作,你需要一个静态变量来让 SCSS 编译

// static (SCSS) variables used produce CSS output
$page-width: 1170px;
$gutter : 15px
$columns: 12;

// dynamic (CSS) variables used at run-time
// note the values are interpolated
:root {
--page-width: #{$page-width};
--gutter : #{$gutter};
--columns: #{$columns};
}

// the for loop is aimed at producing CSS output
// ... why you need the static variable
@for $n from 1 through $columns {

// the content becomes CSS output
// ... why you can use dynamic variables
.col-#{$n} {width: calc( #{$n} / var(--columns) - var(--gutter) * 2 ); }

}

关于css - 如何将 CSS 变量值分配给 scss 变量或表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45126623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com