2016-07-11 3 views
1

В следующем примере у меня есть родительский пользовательский элемент, вызывающий дочерний пользовательский элемент. У ребенка есть переменная color Свойство CSS для p элементов, которые могут быть определены в родительском CSS.Polymer 1.x: Насколько важно (используя JS) получить значение пользовательского свойства CSS?

В JS дочернего элемента я хочу прочитать значение --custom-color, выбранное в родительском элементе. В этом случае значение равно yellow. Иными словами: когда запускается метод getCustomColor(), я хочу, чтобы в консольном журнале было указано «Ваш пользовательский цвет - желтый».

Какой JavaScript я использую в методе getCustomColor() для определения ?

мой родителем-element.html
<style> 
    my-child-element { 
    --custom-color: yellow; 
    } 
</style> 
<template> 
    <my-child-element></my-child-element> 
</template> 
мой потомок-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. Но я не могу найти ссылку на то, что я описываю в этом вопросе.

+0

У вас есть ограничение на добавление этой пользовательской подсказки в css ?, а как насчет использования атрибута 'data-' и читать его с помощью. .data ("custom-color") '. Если это не вариант, вы можете прочитать '.css()' prop от элемента и искать свою '--custom-color' prop ... Я бы определенно использовал подход' data', если у вас есть контроль о том, как создается купол. BTW, предложение основано только на функциях/элементах jquery' и 'html'. Я не работал с полимером до –

+0

. Связанные с ним документы действительно упоминают это ... Вам просто нужно проверить 'this.customStyle ['- my-property-name']' и он будет иметь значение свойства – Alan

+0

Я отвечу на это так, чтобы людям было проще найти это. – Alan

ответ

4

Документах вы связаны на самом деле говорить об этом ...

Вам просто нужно проверить this.customStyle['--my-property-name'] и она будет иметь значение свойства

+3

Также возможно с помощью 'window.getComputedStyle ($ 0) .getPropertyValue ('- custom-color')' где '$ 0' является ссылка на элемент DOM. Через: http://stackoverflow.com/a/36609605/230167 –

+0

Ninja'd дважды. Сегодня не мой день. Имейте upvotes, вы оба. – abluejelly

+0

Когда я делаю 'var yourColor = this.customStyle ['- custom-color']', я получаю 'undefined'. Есть идеи? – Mowzer

0

За комментарием по @BryanDowning:

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'); 

Такие работы. Он возвращает текущее значение свойства color первого элемента p.

+0

Кроме того, [см. Этот jsBin] (http://jsbin.com/bavezaciwi/edit?html,output) для рабочего примера чего-то подобного. ... jsbin.com/bavezaciwi/edit?html,output – Mowzer

Смежные вопросы