css - 如何让用户使用自己的 CSS 设计 Web 组件的样式?

标签 css web-component

我知道我们可以使用 CSS 来设置 Web 组件元素的样式。但是我怎样才能允许用户设置我的 Web 组件的样式呢?

例如,假设我正在制作一个视频播放器,但我希望使用我的组件的人能够将播放按钮或进度条设置为其品牌的颜色。 shadow boundary 似乎可以永远阻止它。但如果我想要怎么办?

如果用户不必使用属性来执行此类样式任务,那就太好了。标准 CSS 会很棒,但我不确定 2015 年 1 月下旬是否可能?

最佳答案

能够在原生不支持 ShadowDOM 的浏览器中填充所请求的功能。这是通过在样式声明中使用 shim-shadowdom 指令来实现的:

  <style shim-shadowdom>
    #mine::shadow .classname { width: 100px; background: red; }
    #mine /deep/ .classname { width: 200px; background: blue; }
  </style>

第一个在影子主机下传播一级,后者应用于嵌套的所有内容。

此实时预览探索了所有可能性:http://plnkr.co/edit/rdSukYbEnPHQAphiwIG9?p=preview

请注意,FF 目前将样式应用于嵌套阴影元素,因此所有内容都应重新检查两次。也就是说,FF 用黄色填充第三个嵌套选项卡,这通常是错误的。

进一步阅读:http://robdodson.me/shadow-dom-css-cheat-sheet/

关于css - 如何让用户使用自己的 CSS 设计 Web 组件的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198643/

相关文章:

javascript - 哪种 Angular 1.5 组件绑定(bind)类型更昂贵? '=' 还是 '<'?

javascript - 自定义元素适用于 Safari 但不适用于 Firefox 和 Chrome

javascript - 单击按钮时隐藏/显示隐藏的 div

html - Razor 将 html 输出为字符串

vue.js - 在 vue.js Web 组件目标中使用 Vuetify 版本的 Material 图标

javascript - 将属性传递给 Polymer 中的组件

javascript - polymer 纸标签选择未按预期工作

css - 如何防止元素滚动到 View 中?

jquery - 在移动设备上滚动时,视口(viewport)高度会快速闪烁

html - 如何对齐元素 : center AND align-self: stretch?