你没有展示你的完整元素代码,所以我只能做出有根据的猜测,但这里是。
直到大约 0.3.x 版本,Polymer 在组件内的 JS 全局选项中有一个选项,称为“applyAuthorStyles”,将其设置为“true”使得组件继承文档级别的任何样式。
例如,如果您有:
<html>
<head>
<title>....</title>
....
<link rel="stylesheet" type="text/css" href="/some/path/to/bootstrap.css" />
<script ... links to polymer & platform js />
</head>
<body>
<x-mypolymerelement></x-mypolymerelement>
</body>
</html>
那么在您的聚合物组件中,您将能够做到这一点:
<link rel="import" href="polymer.html">
<polymer-element name="x-mypolymerelement">
<template>
<.... html mark up here .....>
</template>
<script>
Polymer('x-mypolymerelement', {
applyAuthorStyles: true
});
</script>
</polymer-element>
所有这一切的最终结果是,包含在模板中的内部组件标记将毫无问题地使用 Bootstrap 样式,并且您在组件中实现的任何额外样式或 JS 将仅在内部可见。
不幸的是,0.3.x 分支中最大的变化之一是“applyAuthorStyles”现已被弃用,因此在最新版本中,上述代码不再有效。
有一些随机的博客文章,以及聚合物 Google 群组中的一些线程,就处理此问题的最佳方法提出不同的想法和建议,但目前最简单的方法是添加一个链接你的组件中的 css 如下所示:
<link rel="import" href="polymer.html">
<polymer-element name="x-mypolymerelement" attributes="dataUrl">
<template>
<link rel="stylesheet" href="/some/path/to/bootstrap.css">
<.... html mark up here .....>
</template>
<script>
Polymer('x-mypolymerelement', {
});
</script>
</polymer-element>
同时仍将原始链接保留在文档中以适应页面范围的样式。
我同意许多人的说法,这太疯狂了(尤其是因为您必须将此链接放在使用它的每个组件中)并且需要找到更好的方法来共享样式。
目前,这是使其正常工作的最简单方法,并且作为记录,链接必须在模板内,否则将无法正常工作。
虽然在此处,您还需要了解有关引导程序的其他内容,但您目前无法使用任何 JavaScript 功能。
Bootstraps JS 操作使用完整的文档 dom 而不是 web 组件的 light dom 来查找完整的元素,因此如果不对 BS JavaScript 文件进行大量更改,那么任何 JS 功能都不会在聚合物元素中工作,好吧至少现在还没有。
据我所知,知情人士一直在寻求使 BS 适应聚合物内部(以及就此而言的 x-tags)