下面是一个聚合物元素的样本
<dom-module id="custom-dialog">
<style>
#text{
width: 400px;
height: 50px;
position: relative;
background: #fff;
}
p{
position: absolute;
margin: var(--ui-connectionDialog-text-margin, 5% 30%);
font-size: var(--ui-connectionDialog-text-font-size, 18px);
}
</style>
<template>
<!-- local DOM for your element -->
<div id = "text" > <p><content></content></p> </div>
</template>
</dom-module>还有一个使用自定义css设置样式的示例
<style>
custom-dialog.connecting
{
--custom-dialog-text-font-size: 23px;
--custom-dialog-text-margin: 3.8% 30%;
}
custom-dialog.disconnected
{
--custom-dialog-text-font-size: 20px;
--custom-dialog-text-margin: 3.8% 30%;
}
</style>
<body>
<custom-dialog class="connecting">Connecting</custom-dialog>
</body>我可以将自定义css属性与connecting类属性一起应用,但是,当我使用js将自定义元素的类更改为disconnected时,新的css属性并未应用。实际上,当类属性被改回connecting时,相应的css属性也不会被应用。
我怀疑这是因为我的浏览器在shady-dom模式下运行,并且在多边形填充中有一个间隙。
我很想直接将css属性应用到shady-dom中的<p>元素上,但它想知道是否有合适的方法来处理这个问题。
发布于 2015-10-01 13:54:56
根据聚合物文档,“只应用在创建时与元素匹配的规则。任何更新变量值的动态更改都不会自动应用。”
https://www.polymer-project.org/1.0/docs/devguide/styling.html
“由于对DOM的更改,当前未对自定义属性样式进行重新评估。可以通过对聚合元素调用this.updateStyles() (或调用Polymer.updateStyles()以更新所有元素样式)来强制重新评估。例如,如果将类b添加到上面的x-foo中,则作用域必须调用this.updateStyles()才能应用样式。这将从此点重新计算/应用树中的样式。”
。。最好的办法是解释你的问题,这是对你的问题的官方解决方法。您应该在应用断开连接的类之后调用this.updateStyles()。
https://stackoverflow.com/questions/32880126
复制相似问题