Polymer 2从外部样式表设置元素的子节点样式

时间:2017-06-25 18:41:35

标签: css polymer web-component polymer-2.x

假设我有一个名为 %% horizontal histogram disp('Processing Edges Horizontally...'); max_horz = 0; maximum = 0; for i = 2:cols sum = 0; for j = 2:rows if(I(j, i) > I(j-1, i)) difference = uint32(I(j, i) - I(j-1, i)); else difference = uint32(I(j-1, i) - I(j, i)); end if(difference > 20) sum = sum + difference; end end horz1(i) = sum; %%applying low pass filter sum = 0; horz = horz1; for i = 21:(cols-21) sum = 0; for j = (i-20):(i+20) sum = sum + horz1(j); end horz(i) = sum / 41; end 的自定义网络元素,其定义中的private void UpdatePadding(MessageEntry MessageEntry) { Control.SetPadding((int)Forms.Context.ToPixels(MessageEntry.LeftPadding), Control.PaddingTop/3, (int)Forms.Context.ToPixels(MessageEntry.RightPadding), Control.PaddingTop/3); } 标记中定义了自己的样式,我不想更改此元素的文件根本不是因为它是我项目的外部依赖。

<my-course>元素在<style>标记中定义了<my-course>子元素。

示例:

<div>

我想用“背景:绿色”让div#进展为绿色(默认为红色)通过外部样式表加载/使用自定义元素在同一页面中加载。

我试着这样做:

<template>

但它不起作用,进度div一直是红色的。似乎没有办法从元素本身外部设置阴影dom的样式,我已经尝试了my-course :: content div#progress,并且没有结果(/ deep /和:: shadow已弃用)我以前实现了这个using :: shadow。

任何人都可以提供帮助?感谢

1 个答案:

答案 0 :(得分:1)

您应该使用CSS变量,例如:

::host {
    --progress-background: red;
    padding: 5px;
    background: rgba(0,0,0,.2);
}

div#progress {
    height: 20px;
    width: 100%;
    background: var(--progress-background);
}

并覆盖它:

my-course {
   --progress-background: green;
}

此处有更多信息:https://www.polymer-project.org/2.0/start/first-element/step-5