我正在尝试在一个元素上设置多个 css 类。
不幸的是,这不起作用,因为它返回:LanguageError: Duplicate attribute name in attributes.
<ul>
<li tal:repeat="item mainnav"
tal:attributes="class 'first' if repeat.item.start else nothing;
class 'last' if repeat.item.end else nothing;
class 'active' if item.active else nothing">
<a tal:attributes="href item.href" tal:content="item.title">title</a>
</li>
</ul>
将这 3 种情况组合成一个表达式会变得相当复杂,因为有 6 种不同的css 状态:
- 第一+主动
- 第一的
- 最后+活跃
- 最后的
- 积极的
- (没有任何)
我能想到两种可能的解决方案:
-> 检查每个组合内联:
<ul>
<li tal:repeat="item mainnav"
tal:attributes="
class 'first active' if (repeat.item.start and item.active) else
'first' if repeat.item.start else
'last active' if (repeat.item.end and item.active) else
'last' if repeat.item.end else
'active' if item.active else nothing">
<a tal:attributes="href item.href" tal:content="item.title">title</a>
</li>
</ul>
-> 创建一个返回组合css类的方法
现在,有没有更好的方法,如果没有,这两个中的哪一个更好(可能是后一个,好像它变得更加复杂,内联脚本将变得不可读/不可管理)。
顺便说一句,有什么好的资源和例子Chameleon
,TALES
(除了http://chameleon.repoze.org/docs/latest)