2013-08-24 8 views
8

Özel bir öğe etiketi oluşturmaya çalışıyorum ve öğenin <style> etiketinden yapamayacağı gibi, ya da en azından hangi seçicinin kullanılacağını bilmiyorum. Özel öğenin etiket adını ve template'u denedim, ancak ikisi de işe yaramadı.Özel bir öğe etiketini öğenin içinden nasıl biçimlendirirsiniz?

<polymer-element name="my-test" constructor="MyTest"> 
    <template> 
    <style> 
     my-test { 
     border: solid 1px #888; /* doesn't work */ 
     } 
     .title { 
     color: blue; /* works */ 
     } 
    </style> 
    <div class="title">{{ title }}</div> 
    </template> 

Ben polymer.dart kullanıyorum, bu yüzden onun uygulanmasında bazı gecikme olabilir, ama polymer.js nasıl çalışması gerektiğini bilmek istiyorum.

+0

Bu gün artık polymer.dart için bir yapıcı özelliği gerekir. En azından buna ihtiyacım yok. –

cevap

8

Başka bir yanıtta belirtildiği gibi, DOM gölgesinin sunucusunu biçimlendirmek için @host seçiciyi kullanın. Özel bir öğe durumunda, özel öğenin sunucusu kendisidir.

Burada, ana öğenin veya özel öğenin kendisinin bir özel öğenin <style> etiketinin içinden nasıl biçimlendirileceğine dair bir örnek verilmiştir.

<!DOCTYPE html> 

<html> 
<head> 
    <title>index</title> 
    <script src="packages/polymer/boot.js"></script> 
</head> 

<body> 

    <polymer-element name="my-element"> 
     <template> 
      <style> 
       @host { 
        my-element { 
        display: block; 
        border: 1px solid black; 
        } 
       } 

       p { 
        color: red; 
       } 

       #message { 
        color: pink; 
       } 

       .important { 
        color: green; 
       } 
      </style> 
      <p>Inside element, should be red</p> 

      <div id="message"> 
       The message should be pink 
      </div> 

      <div class="important"> 
       Important is green 
      </div> 

      <div> 
       <content></content> 
      </div> 
     </template> 
     <script type="application/dart" src="index.dart"></script> 
    </polymer-element> 

    <p>outside of element, should be black</p> 

    <div id="message"> 
     The outside message should be black 
    </div> 

    <div class="important"> 
     Outside important is black 
    </div> 

    <my-element>Hello from content</my-element> 

    <!-- If the script is just an empty main, it's OK to include inline. --> 
    <!-- Otherwise, put the app into a separate .dart file. --> 

    <script type="application/dart">main() {}</script> 
</body> 
</html> 

Bildirim tarzında @host blok: Bu özel özel öğe ve unsur kapsamaz Çünkü

  @host { 
       my-element { 
       display: block; 
       border: 1px solid black; 
       } 
      } 

, bir bloğa varsayılan değil. İşte

o tarz zaman neye benzediği:

enter image description here

+2

@host {: scope {...}}, seçicinin etiket adını kullanmaktan biraz daha çok yönlüdür. Ayrıca geçişi daha da doğal hale getirecek. http://www.polymer-project.org/articles/styling-elements.html#element-defined-styles – ebidel

+0

@ebidel nice ipucu! Her zaman cevaplarımı düzenlemekte özgürüm :) –