【发布时间】:2018-12-26 10:11:15
【问题描述】:
在 Angular 2+ 中,我需要将存储在组件变量中的值传递给 :before 样式之一中使用的 CSS top 属性。在这种情况下,我不能直接使用 [ngStyle],因为它不允许访问 CSS 伪选择器。我试图用它来影响这样的 CSS 变量:
HTML:
<div class="summaries-graph-box">
<div class="summaries-graph">
<div [ngStyle]="{'--odds-top-height': graphOddsTopHeight + 'px'}"
class="summary-graph-column summary-plan summary-odds">
<span class="summary-value">123</span>
</div>
</div>
</div>
TS:
graphOddsTopHeight = 40;
在我使用的 CSS 中:
.summary-odds {
--odds-top-height: 20px;
}
.summary-odds:before {
min-height: 30px;
top: var(--odds-top-height);
}
CSS 变量正在工作,但该值仍然是 20px(最初在 CSS 中设置)而不是 40px(由组件变量提供)。
我也尝试过像这样使用 attr:
HTML:
<div [attr.odds-top-height]="graphOddsTopHeight + 'px'"
class="summary-graph-column summary-plan summary-odds">
<span class="summary-value">123</span>
</div>
然后在 CSS 中:
summary-odds:before {
top: attr(odds-top-height);
}
//or
summary-odds:before {
top: attr(data-odds-top-height);
}
但是,在这种情况下,浏览器会简单地忽略 top 属性并将其删除。
有谁知道我的代码有什么问题,或者我还能做些什么来将变量从组件传递到 CSS :before 伪选择器?
【问题讨论】:
标签: angular variables sass css-selectors