首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义元素解析到shady dom树后,不会应用自定义css属性。

自定义元素解析到shady dom树后,不会应用自定义css属性。
EN

Stack Overflow用户
提问于 2015-10-01 13:37:17
回答 1查看 584关注 0票数 0

下面是一个聚合物元素的样本

代码语言:javascript
复制
<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设置样式的示例

代码语言:javascript
复制
<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>元素上,但它想知道是否有合适的方法来处理这个问题。

EN

回答 1

Stack Overflow用户

发布于 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()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32880126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档