2016-07-11 22 views
1

Im folgenden Beispiel habe ich ein übergeordnetes benutzerdefiniertes Element, das ein untergeordnetes benutzerdefiniertes Element aufruft. Das untergeordnete Element hat eine Variable color CSS-Eigenschaft für Elemente, die in dem übergeordneten CSS definiert werden können.Polymer 1.x: Wie kann man (mithilfe von JS) den Wert einer benutzerdefinierten CSS-Eigenschaft erhalten?

Im JS des untergeordneten Elements möchte ich den Wert --custom-color lesen, der am übergeordneten Element ausgewählt wurde. In diesem Fall lautet der Wert yellow. Anders ausgedrückt: Wenn die Methode getCustomColor() ausgeführt wird, möchte ich, dass das Konsolenprotokoll "Ihre benutzerdefinierte Farbe ist gelb" anzeigt.

Welches JavaScript setze ich in die getCustomColor() Methode ein, um zu definieren?

my-Eltern-element.html
<style> 
    my-child-element { 
    --custom-color: yellow; 
    } 
</style> 
<template> 
    <my-child-element></my-child-element> 
</template> 
my-Kind-element.html
<style> 
    p { 
    color: var(--custom-color); 
    } 
</style> 
<script> 
    getCustomColor: function() { 
    var yourColor = // What goes here to obtain the correct value of 'yellow'? 
    console.log('Your custom color is' + yourColor); 
    } 
</script> 

FYI: This documentation describes the custom style API. Aber ich kann nicht den Bezug zu dem finden, was ich in dieser Frage beschreibe.

+0

Haben Sie eine Einschränkung, um diese benutzerdefinierte Requisite innerhalb der CSS hinzuzufügen ?, was ist mit einem 'data-' Attribut und lesen Sie es mit '.data (" custom-color ")'. Wenn das keine Option ist, könntest du die '.css()' Stütze aus dem Element lesen und nach deiner '--custom-color' Stütze suchen .... Ich würde definitiv den' data' Ansatz verwenden, wenn du Kontrolle hast wie die Kuppel gerendert wird. Übrigens, der Vorschlag basiert nur auf 'jquery' und' html' Funktionen/Elementen. Ich habe nicht mit Polymer vor –

+0

gearbeitet Die Dokumente, die Sie verbunden haben, erwähnen es tatsächlich ... Sie müssen nur 'this.customStyle ['- mein-property-name']' überprüfen und es wird den Wert der Eigenschaft haben – Alan

+0

Ich werde es als eine Antwort setzen, so dass es für Leute, die danach suchen, einfacher ist, es zu finden – Alan

Antwort

4

Die docs Sie es tatsächlich verknüpft erwähnen ...

Sie müssen nur this.customStyle['--my-property-name'] überprüfen, und es wird von @BryanDowning den Wert der Immobilie

+3

Auch möglich mit 'window.getComputedStyle ($ 0) .getPropertyValue ('- custom-color')' wobei $ 0 ist Verweis auf ein DOM-Element. Via: http://Stackoverflow.com/a/36609605/230167 –

+0

Ninja zweimal. Heute ist nicht mein Tag. Habe Upvotes, ihr beide. – abluejelly

+0

Wenn ich 'var yourColor = this.customStyle ['- custom-color']' mache, bekomme ich 'undefined'. Irgendwelche Ideen? – Mowzer

0

Pro Kommentar haben:

var s = document.querySelector('p'); 
var yourColor = window.getComputedStyle(s).getPropertyValue('color'); 
// Using Polymer syntax, the above line could be written as follows: 
var yourColor = s.getComputedStyleValue('color'); 

Diese Art von Arbeiten. Es gibt den aktuellen Wert der color Eigenschaft des ersten p Elements zurück.

+0

Auch, [siehe dieses jsBin] (http://jsbin.com/bavezaciwi/edit?html,output) für ein Arbeitsbeispiel von etwas Ähnlichem. ... jsbin.com/bavezaciwi/edit?html,output – Mowzer