如何将组件属性值传递给该组件的 css/less clientlibs?AEM 6.2的

How can one pass component property values to the css/less clientlibs for that component? AEM 6.2

提问人:Koblinski 提问时间:9/15/2016 更新时间:9/15/2016 访问量:1058

问:

我仍在学习AEM的变量范围和渲染顺序。我有一个微不足道的问题,我想从我的对话框中获取一个整数输入,并将该值设置为指定类的填充。

padding/padding.html:

<div class="my-padding">Pad me up!</div>

填充/clientlibs/padding.less

.my-padding {
    padding-top:    ${properties.top}px;
    padding-right:  ${properties.right}px;
    padding-bottom: ${properties.bottom}px;
    padding-left:   ${properties.left}px;
}

组件的 WCMUse 属性超出了 less 的范围,但我不知道实现此目的的最佳实践是什么。

我尝试将 Javascript 直接注入 less,但这不能正确编译,只是将函数转换为字符串。

填充-2.less

.my-padding-2{
      padding: `function(){return 10;}` px;
}

编译为:

client-libs.css

...
.my-padding-2{
      padding: function(){return 10;} px;
}
...
CSS较少 的服务器端 AEM 样式

评论


答:

0赞 Ameesh Trikha 9/15/2016 #1

因此,没有直接的方法将属性/变量传递给CSS,您可以使用JQUERY来做到这一点,也就是说,我不确定为什么要让作者灵活地更改组件的设计。这既不是他们的角色,也不是AEM组件应该如何实施。

每个组件都遵循一个设计,如果您正在寻找一种方法来支持同一组件的不同设计,还有其他方法可以做到这一点,所有这些都需要您为每个配置使用不同的 CSS 类。完成此操作后,您可以为作者提供可供选择的组件的预定义设计选择。这可以通过两种方式完成 -

  1. 与 RichText 组件允许应用样式类一样,您可以通过为组件支持的不同样式提供下拉列表来为创作者提供相同的行为。

  2. 您可以通过提供视图选项来使用选择设计的概念(就像在 OOTB 列表组件中发生的那样)。每个选项都映射到具有特定设计的实现的组件脚本。