【问题标题】:Is it possible to use CSS Custom Properties in values for the content property?是否可以在 content 属性的值中使用 CSS 自定义属性?
【发布时间】:2016-12-09 15:47:56
【问题描述】:

例子:

:root {
    --PrimaryThemeColor: #3acfb6; /* with or without quotes */
}

.ColorSwatch:after {
  content: var(--PrimaryThemeColor);
}

当它被渲染时,计算出来的 CSS 就是那个值。

content: var(--PrimaryThemeColor);

即使我使用的后处理器将计算值作为后备注入,该值本身也不是字符串,因此它对content 无效。

.ColorSwatch:after {
    content: #3acfb6;
    content: var(--PrimaryThemeColor);
}

【问题讨论】:

  • “带引号或不带引号”是什么意思?它应该与引号一起正常工作。
  • 是的,这是可能的。但是您的问题似乎是将颜色转换为字符串,而不是在content 中使用变量。
  • CSS 变量在应用于 CSS 属性时有效,但在应用于内容时无效。 CSS 变量的行为不像 javascript 变量那样将其值打印为字符串。
  • 如果变量包含一个数字,this is possible using CSS Counters

标签: css css-content css-variables


【解决方案1】:

自定义属性的值必须是一个字符串(字符串文字、attr() 表达式,或者在content 的情况下,任意数量的所述标记的任意组合)以便对应的@987654323 @ 表达式可以在任何需要字符串的地方正常工作。

如果这是您所要求的,则无法通过var() 函数将非字符串值转换为字符串或在任何两种数据类型之间转换。该值始终按原样进行解析、存储和替换,并且该值可以包含任意数量的任何类型的标记,因此在数据类型之间进行转换将......非常困难。

【讨论】:

  • 对,我已经指出了这一点。 > “值本身不是字符串,所以对内容无效。”
  • @Kevin Suttle:是的 - 所以你已经回答了你自己的问题。
  • 似乎是一个相当常见的用例,因此最好将var 语法扩展为var(--name type-or-unit)。这将允许font-size: var(--size px),从而避免繁琐的font-size: calc(1px * var(--size)),在这种情况下,将允许content: var(--primaryThemeColor string)。 (当然,这里的type-of-unitattr() 函数中使用时的语义相同。)
猜你喜欢
  • 2022-12-17
  • 2011-06-08
  • 1970-01-01
  • 2011-08-17
  • 2020-08-09
  • 2018-04-23
  • 2023-02-23
  • 1970-01-01
  • 2015-07-27
相关资源
最近更新 更多