当我们使用 HTML、JavaScript 和 CSS 编写小部件并将小部件打包为一个库时,我们可能有
.foobarwidget-sidebar-section .sub-section { border: 1px solid #000 }
所以我们将实现 JavaScript 来处理我们定义的这个小部件的行为,它可以在我们网站上的任何页面或其他人使用。
但是,如果有这个小部件的用户,并且他在自己的网页中有 HTML 用于“子部分”:
.sub-section { color: green }
然后几乎他.sub-section
将添加到我们小部件的 CSS 样式中。
他确实可以使用
#the-main-content .sub-section { color: green }
或者
.a-main-content-box .sub-section { color: green }
这样它就不会影响我们的小部件,但是如果他的设计是该#main-content
框包含我们的sidebar
小部件(或搜索框小部件,或社交链接按钮小部件)怎么办?在这种情况下,他.sub-section
将再次影响小部件的 CSS。
当然,我们可以为我们的小部件定义所有可能的 CSS 样式,例如
.foobarwidget-sidebar-section .sub-section { color: blue !important;
font-weight: bold !important;
/* ... and all possible CSS styles ... */
}
但这看起来不是一个很好的可行解决方案。我们也可以使用
.foobarwidget-sidebar-section > .sub-section { ... }
所以.sub-section
必须是直接的孩子,但它不会影响独立.sub-section
影响我们小部件的CSS。在这种情况下,有什么好的解决方案来处理它?