css - 如何在 Angular2 中为 WebComponents 添加样式

标签 css angular web-component

我有一个名为 my-element 的简单元素,我希望在相邻的 my-elements 之间有 2em 垂直空间。所以我添加了一个样式

my-element + my-element { margin-top: 2em; }

我的问题是,这行得通吗? my-element 是一个 WebComponent,我已在我的 Angular2 组件中将其声明为 ViewEncapsulation.Native,这意味着样式在 Shadow DOM 中是隔离的,无法更改,或者至少不应用 /deep/ 选择器(?) 由于边距在 my-element 的框模型内,我假设对 my-element 应用边距实际上不应该影响 my-element 完全没有。这基本上就是我正在经历的。

那么如何让我的 my-element 至少允许更改 margin 因为它不会影响包含框的呈现?

最佳答案

您可以设置直接子项的样式。如果<my-element></my-element>在 Angular2 组件的 View 中,那么您可以从添加到 Angular2 组件的样式中设置它的样式。

您不能为 <my-element> 的内容设置样式但您可以添加 <my-element> 的样式属性本身。

ViewEncapsulation.Native没有/deep/ . Deep 在 Chrome 中已被弃用,并且从未添加到其他浏览器中。

ViewEncapsulation.Emulated (默认),你可以使用 /deep/因为 Angular2 模拟了它。

关于css - 如何在 Angular2 中为 WebComponents 添加样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947526/

相关文章:

html - CSS 导航栏代码诊断

javascript - 类型错误 : Illegal constructor when trying to create a new instance of a class of another script file

javascript - RXJS 遍历项目并返回一个数组

javascript - 如何更新使用 ReactDOM.render() 渲染的 React Component 的 props

angular - anchor 滚动仅适用于 Angular 6 中的第二次单击

polymer - <content> 下的 Shadow DOM 事件如何定位?

angularjs - WebComponents 应用程序架构

css - 页面顶部和底部不需要的小空间

jquery - 以 cols 之间的边距居中一行

html - 正确使用@media?