标签: css-variables

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

我正在尝试在 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);
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用 scss 来缩短列类描述(同时允许我在整个代码的一个地方更改列数 - 在 CSS Variable 中--columns)像这样

@for $n from 1 through var(--columns) {
  .col-#{$n} {width: calc( #{$n} / var(--columns) - var(--gutter) * 2 ); }
}
Run Code Online (Sandbox Code Playgroud)

但它没有用。有趣的细节是,当我将@for语句从@for $n …

css sass css-variables

6
推荐指数
2
解决办法
4966
查看次数

css 自定义属性是否存在 null 或 undefined 或“falsy”值?

我想创建一个组件并公开某些可能被父元素覆盖的属性。

这是一个例子。假设我正在创建一个按钮,它有自己的颜色,但如果有--button-bg-color定义,则允许更改其背景颜色:

.my-button {
  --bg-color: blue;

  /* lots of other css... */

  /**
    * here I assume that there might be a --button-bg-color defined,
    * but I have a fallback to my own --bg-color variable
    */
  background-color: var(--button-bg-color, var(--bg-color));
}
Run Code Online (Sandbox Code Playgroud)

上面代码的问题在于该--button-bg-color变量在样式的深处被引用。

我希望我能做的是在顶部某处声明我可能想要使用这个变量。这会告诉我该组件希望被覆盖。

也许是这样的?

.my-button {
  --button-bg-color: undefined; /* is there something like undefined? */
  --bg-color: blue;

  /* the rest of the code is the same */
}
Run Code Online (Sandbox Code Playgroud)

css css-variables

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

React - 如何用 css 变量替换 Ant-Design 主按钮的悬停颜色?

我正在使用 React、Redux、Ant-Design、LESS 和许多其他模块创建一个应用程序。我必须从数据库中获取原色并将其分配给 CSS 变量 (--primary-color)。我将颜色变暗并将其分配给另一个 CSS 变量 (--primary-color-darken)。我使用CSS变量而不是LESS变量,因为LESS变量在编译后被硬编码并且无法更改。我成功地用我的 CSS 变量覆盖了 AntD css 类,但是对于悬停类它不起作用。浏览器似乎正确理解了样式,但计算出了错误的样式。

//LESS code
//Default assigned CSS variables
:root {
  --primary-color: #EB3052;
  --primary-color-darken: #D62D4C;
  --primary-hover-color: var(--primary-color-darken);
}

//Default value for Ant-Design
@primary-color: #EB3052;
@primary-hover-color: #D62D4C;

//Overwrite the Ant-Design class
.ant-btn.ant-btn-primary,
.ant-btn-primary {
  background-color: var(--primary-color);
  border-color: var(--primary-color);
  &:hover {
    background-color: var(--primary-hover-color) !important;
    border-color: var(--primary-hover-color) !important;
  }
}
Run Code Online (Sandbox Code Playgroud)

我重新分配与包装所有应用程序内容的包装组件内联的变量。

[other wrapper]
<div class="CssVariableApplicator" style="--primary-color:#FFFF22;--primary-color-darken:#e6e61f;" data-reactroot="">
  [content]
</div>
Run Code Online (Sandbox Code Playgroud)

查看打印屏幕的行为:

  1. 正确设置原色样式:https ://i.stack.imgur.com/RV057.png

  2. 正确计算原色: https://i.stack.imgur.com/h7967.png

  3. 样式悬停原色正确]: https ://i.stack.imgur.com/tSWIN.png

  4. 错误计算悬停原色:https ://i.stack.imgur.com/Ed4e9.png

hover less reactjs css-variables antd

6
推荐指数
1
解决办法
3万
查看次数

我可以在字体列表中使用 CSS 变量并让它在旧浏览器中工作吗?

我想使用 CSS 变量来存储字体,以防用户没有安装指定的字体。

例子:

:root {
     --common-font: Comic Sans MS;
}

.header1 {
     font-family: CoolFont1, var(--common-font);
}
Run Code Online (Sandbox Code Playgroud)

如果我在字体名称中添加对变量的引用,旧浏览器会中断吗?

https://caniuse.com/#feat=css-variables

html css css-variables

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

每次样式更新时,浏览器都会下载背景图片(使用 CSS 变量设置),为什么?

当我将鼠标悬停在页面上时,我注意到页面上的按钮闪烁(会改变不透明度)。经过一番挖掘,发现每次样式更新时,浏览器都会重新下载该图像。

这发生在 Mac Chrome 74 和 Safari 上。Firefox 看起来不错。

这些按钮使用带有 CSS 变量的 background-image 样式,代码如下所示:

body {
    --src-image: url("some image");
}

.btn {
    background-image: var(--src-image);
}

.btn:hover {
    opacity: 0.7;
}
Run Code Online (Sandbox Code Playgroud)

代码笔:https ://codepen.io/polyamide/pen/qzEVzO

复现步骤:

  1. 打开 DevTool 并禁用缓存。
  2. 将鼠标悬停在第二张图片上(这个使用 CSS 变量,而第一个没有)。
  3. 请参阅网络面板。样式更新时会有新的请求。

避免使用 css 变量解决了问题,但我仍然想了解为什么会发生这种情况,我该如何解决?

css css-variables

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

CSS 变量在 dialog::backdrop 中不起作用

我正在尝试使用自定义 CSS 属性更改dialog元素的背景颜色,backdrop但它不会。这是 Chrome 中的错误还是有原因?

document.querySelector('dialog').showModal();
Run Code Online (Sandbox Code Playgroud)
:root {
  --color-backdrop: red;
}

dialog::backdrop {
  background: var(--color-backdrop);
}
Run Code Online (Sandbox Code Playgroud)
<dialog><p>This is a dialog. My backdrop should be red.</p></dialog>
Run Code Online (Sandbox Code Playgroud)

dialog modal-dialog css-variables

6
推荐指数
2
解决办法
413
查看次数

以角度动态更改css变量

在我的 angular 项目中,我在这样的顶级styles.scss文件中定义了一些 css 变量。我在很多地方使用这些变量来保持整个主题的一致性。

:root {
  --theme-color-1: #f7f7f7;
  --theme-color-2: #ec4d3b;
  --theme-color-3: #ffc107;
  --theme-color-4: #686250;

  --font-weight: 300
}
Run Code Online (Sandbox Code Playgroud)

如何从app.component.ts动态更新这些变量的值?在 angular 中做到这一点的干净方法是什么?

css typescript css-variables angular

6
推荐指数
2
解决办法
6533
查看次数

将 JavaScript 中的 CSS 自定义属性/变量设置为 String 类型

考虑以下场景:

document.body.style.setProperty("--text", "world")
Run Code Online (Sandbox Code Playgroud)
body::before{
  --text: "Hello";
  content: var(--text, "...");
}

body::after{
  content: var(--text, "...");
}
Run Code Online (Sandbox Code Playgroud)

CSS 能够通过带有引号的自定义属性的值来设置变量的类型但是当使用 javascript 执行相同操作时,这是(检查的)节点(在 Chrome 中)的结果,该节点不带引号,这使得不可能用作伪元素的值: --textsetPropertycontent

在此输入图像描述

这可以通过 JS 来完成吗setProperty?(假设该元素的属性中已经有一堆style我不想弄乱的东西。

javascript css dom css-variables

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

CSS变量计算HSL值

我想要一个基本的 HSL 颜色值,我想将其实现为渐变,如下所示:

:root {
    --hue: 201;
    --saturation: 31;
    --lightness: 40; 
    --mainColor: hsl(var(--hue),var(--saturation),var(--lightness));

    --difference: 20; /* 0 + --difference < --lightness < 100 - --difference */

    --lightnessPlus: calc(var(--lightness) + var(--difference));
    --colorFrom: hsl(var(--hue),var(--saturation),var(--lightnessPlus));

    --lightnessMinus: calc(var(--lightness) - var(--difference));
    --colorTo: hsl(var(--hue),var(--saturation),var(--lightnessMinus));
}

[...]
.class {
    background-image: linear-gradient(to right, var(--colorFrom), var(--colorTo));
}
Run Code Online (Sandbox Code Playgroud)

上面的代码产生了一个透明的对象,我无法理解为什么,请帮忙!

css hsl colors css-variables css-calc

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

PC Chrome 如何调试 iOS 环境变量,例如 env(safe-area-inset-bottom)?

我知道打开 iOS iPhoneX 的 iOS 模拟器可以调试环境变量,但我想使用 chrome 开发工具来调用 css 变量。

google-chrome google-chrome-devtools css-variables

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