标签: css-variables

通过SASS函数自动生成css变量

我想问一下如何通过sass函数自动生成css变量

例如:我希望这个变量自动生成

:root{--sample1:red;}
Run Code Online (Sandbox Code Playgroud)

SASS函数:

@function brand($key,$val) {
 //this not works  
 :root{
    --#{$key}:$val;
  }
@return val(--#{$val});}
Run Code Online (Sandbox Code Playgroud)

利用品牌功能

   header{
       background-color:brand("sample1",red)
   }
Run Code Online (Sandbox Code Playgroud)

css sass mixins css-variables

2
推荐指数
1
解决办法
2982
查看次数

基于类的 Scss 变量

我正在尝试为我的一个项目进行主题化,并且我正在使用 css 变量。我正在定义 css 变量如下

.theme-1 {
    --var-1: #ffe;
    --var-2: #000;
}

.theme-2 {
    --var-1: #fff;
    --var-2: #000;
}
Run Code Online (Sandbox Code Playgroud)

在 html 中,我应用了如下主题

<div [ngClass]="'theme-1'">
<!--content>

<-->
</div>
Run Code Online (Sandbox Code Playgroud)

除了这里提到的 IE -11 之前不支持 css-variables 之外,一切都很好。

有什么方法可以用 scss 变量实现这一点,以便我可以定义全局变量并根据 class 更改值。

注意:我在我的项目中使用了 angular,因此我也必须担心视图封装。如果答案可以通过默认封装来实现,那就太好了。

提前致谢。

sass css-variables angular scss-mixins

2
推荐指数
1
解决办法
5243
查看次数

通过 JS 更新变量值后 CSS 伪类消失

我希望能够通过 JS 更新 CSS 变量,但是当我更新变量时,CSS 伪元素被销毁(即消失)。

这是 SCSS 代码:

:root {
  --test-thing: "";
}

.folder-1-open span::after {
    width: 90%;
    height: 85%;
    bottom: 0;
    left: 5%;
    background-color: #fff;
    z-index: 3;
    content: var(--test-thing);
}
Run Code Online (Sandbox Code Playgroud)

我试图这样操纵变量:

const root = document.documentElement
root.style.setProperty('--test-thing', "Hello World")
Run Code Online (Sandbox Code Playgroud)

上面的 CSS 在它所应用的元素(一个标签)上工作得非常好,基本上只是一个白色方块,但是一旦我尝试更新 CSS 变量--test-thing以通过contentprop添加一个字符串,整个事情就会消失。

用伪元素或类不能做到这一点吗?

通过研究 SO 上的相关帖子,我的理解是使用 CSS 变量是可能的。

对于上下文,我正在处理这个纯 CSS 交互式文件夹的示例(当它打开时,我想动态地更新内容)。

javascript css frontend pseudo-element css-variables

2
推荐指数
1
解决办法
237
查看次数

为什么我不能在 CSS 变量中使用 rgba?

我正在尝试在 SCSS 文件中创建这个变量。但这不起作用。我哪里做错了?

--orange: #fda63c;
--orange-light: rgba(var(--orange), 0.15);
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

--orange: #fda63c;
background-color: rgba(var(--orange), 0.15);
Run Code Online (Sandbox Code Playgroud)

css sass css-variables

2
推荐指数
1
解决办法
3703
查看次数

继承 CSS 变量,或回退到默认值

假设我是某个 Web 组件的库作者;我想允许用户设置我的组件的背景颜色。我通过设置允许这样做--background-color。例如,用户可以编码:

:root {
  --background-color: green;
}
Run Code Online (Sandbox Code Playgroud)

现在在我的组件中,我想要获取用户的 值--background-color,或者使用默认颜色:

.some-component {
  display: contents;
  --background-color: var(--background-color, red);
}
Run Code Online (Sandbox Code Playgroud)

然而上面的代码不起作用。我不介意,有解决方法;但我想知道为什么它不起作用,如果有人有答案的话。

在下面的代码中,预期是绿色,但该行--background-color: var(--background-color, red);似乎以某种方式“破坏”了 CSS。

:root {
  --background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
.some-component {
  display: contents;
  --background-color: var(--background-color, red);
}
Run Code Online (Sandbox Code Playgroud)

css css-variables

2
推荐指数
1
解决办法
2240
查看次数

CSS var() 后备在不受支持的浏览器中是否有效?

这些天我正在使用 CSS var,所以有一件事引起了我的注意,我想知道是否为 CSS var() 函数设置了后备,这个后备在不完全支持 CSS var 的旧浏览器中将如何工作。它是否会被应用或被视为未知的 CSS 功能

长话短说,现在我为这样的属性编写了两行 CSS:

:root{
   --box-height: 350px;
}

.box{
   height: 350px; // FALLBACK for older browsers.
   height: var(--box-height);
}
Run Code Online (Sandbox Code Playgroud)

我的目的是为旧浏览器提供后备,但如果我这样写就可以了:

:root{
   --box-height: 350px;
}

.box{
   height: var(--box-height, 350px); // Does it work in older browsers really?
}
Run Code Online (Sandbox Code Playgroud)

它能在旧浏览器中运行吗?没有关于我正在谈论的内容的透明文档,您的想法是什么?

css css-variables

2
推荐指数
1
解决办法
1013
查看次数

为什么没有应用我的 CSS 回退值?

我想要做的是每当我删除边框颜色中的变量时--mainColor,它:root都会变为黑色,文本变为红色,但它将与颜色的回退值相同。为什么会发生这种情况?

div {
  width: 500px;
  margin: 10px;
  border-color: var(--mainColor, black);
  color: var(--mainColor, red);
  padding: var(--mainPadding, 10px);
  border: solid;
}
Run Code Online (Sandbox Code Playgroud)
<div>Element</div>
<div>Element</div>
<div>Element</div>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

html css css-variables

2
推荐指数
1
解决办法
54
查看次数

CSS Calc - 始终达到“0”或“1”

我有一个 CSS 变量--size,它是用 javascript 设置的。它的值将为 0 或任何整数。

我希望使用该calc函数创建一个新的 CSS 变量。我希望这个新变量的值为 0 或 1。

  • 如果--size= 0 那么新变量 = 0
  • 如果--size> 0 那么新变量 = 1

我可以使用下面的代码来实现这一点:

--new: calc(var(--size)/(var--size))
Run Code Online (Sandbox Code Playgroud)

但是当--size= 时0,这不起作用。

有没有办法可以根据变量的值调整我的计算以达到 0 或 1?

css css-variables css-calc

2
推荐指数
1
解决办法
48
查看次数

如何在 Playwright 中获取 CSS 变量的计算值?

我正在尝试使用 Playwright 来测试 Ionic React 应用程序。

Ionic 广泛使用 CSS 变量。

我的应用程序允许用户更改其中一些颜色,因此我想验证颜色更改是否正常工作。

我正在尝试找到一种方法来测试 CSS 变量的值。

Ionic CSS 看起来像这样:

ion-header ion-toolbar {
  --background: var(--ion-color-secondary);
}
Run Code Online (Sandbox Code Playgroud)

--background我如何才能获得Playwright的价值?

css-variables playwright

2
推荐指数
1
解决办法
8036
查看次数

CSS有计划支持变量吗?

我知道我可以使用框架(http://lesscss.org)来完成这个,但我想知道纯CSS是否会随时支持这个?

css css-variables

1
推荐指数
1
解决办法
67
查看次数