是否可以将块声明用作CSS自定义属性?

我已经从设计师那里收到了使用一些新颖的代码生成工具生成的CSS样式表,并且生成了我不确定如何使用的CSS自定义属性。它类似于以下内容定义自定义变量:

:root {                                                                                         
    --custom-font-setting: {                                                                      
        color: red;                                                                             
        font-size: 12px;                                                                        
    };                                                                                          
}

似乎是存储在CSS自定义属性中的块声明。阅读CSS Custom Properties的规范后,看来这不是受支持(或至少已记录在案)的用例。在查看了用于生成该属性的工具之后,似乎它具有SASS输出,该输出的执行方式与@extend一起使用,因此我很好奇这是否是由共享代码生成器不了解输出格式(纯CSS)的局限性。它确实在其他地方正确使用了CSS变量。

我尝试过的事情没有成功:

/* Selector followed by var() */                                                                
h1 var(--custom-font-setting)                                                                   

/* nested */                                                                                    
h1 {                                                                                            
    var(--custom-font-setting)                                                                  
}  

/* Just trying things at this point */
h1 {
    font: var(--custom-font-setting);
}

我知道我可以使用JS to get the actual content of the property,然后解析并设置值,但是当目标只是使用CSS时,这并不理想。请注意,以这种方式获取custom属性的值确实表明它具有所需的整个块声明。希望有人遇到过这个问题,并且知道这是否完全可能。

qzc105 回答:是否可以将块声明用作CSS自定义属性?

一个自定义属性就是:一个CSS属性,只有一个值。通过var()函数,该值恰好可以在其他属性值中使用。

自定义属性的值不能是声明块,因为声明块不是属性值。通过扩展,单个自定义属性不能替代多个属性声明。

SCSS对自定义属性所做的任何操作都是非标准的,除非经过某种方式的后处理,否则它无法用标准CSS样式表进行复制(即使那样,这也只是假装自定义属性可以做的比其实际能力还多通过附加的依赖项。

,
  

希望有人曾经遇到过这个问题,并且知道这是否完全可能。

否,在CSS中不可能在自定义属性中存储块声明。使用第三方CSS样式时,我遇到了相同的问题。某些将SASS(或其他CSS框架)转换为CSS的工具并非总是100%正确。

您可以将块声明拆分为单独的属性,然后使用它(我就是这样做的)。

本文链接:https://www.f2er.com/3101858.html

大家都在问