gpt4 book ai didi

twitter-bootstrap - 使用 Polymer 的 shadow DOM 处理 Boostrap 的布局

转载 作者:行者123 更新时间:2023-12-04 23:00:52 25 4
gpt4 key购买 nike

在 Chromium 上开发了一段时间后,我意识到 Chrome 正确地实现了 shadow DOM,而 Chromium 还没有(还)破坏了我封装得不太好的组件。这与 this other SO question 有关但更具体地针对网格布局而不仅仅是 CSS。

如果布局是在顶级文档中完成的,它可以工作,但如果它是在自定义元素中完成的,它就不起作用。正如另一个问题中所建议的,我在我的组件中插入了相关的 Bootstrap 代码,但它们似乎仍然没有正确布局。这是一个有效的示例布局:

<!-- index.html -->
<div class="container-fluid">
<div class="row">
<my-element-a class="col-md-6">
<my-element-b class="col-md-6">
</div>
</div>

这是一个不起作用的示例:
<!-- custom-element-c.html -->
<div class="container-fluid">
<div class="row">
<my-element-a class="col-md-6">
<my-element-b class="col-md-6">
</div>
</div>

有没有办法在 Polymer 自定义元素中使用 Bootstrap 网格布局?

最佳答案

您还没有显示完整的元素代码,所以我只能做出有根据的猜测,但这里有。

直到大约 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>

然后在您的 polymer 组件中,您将能够做到这一点:
<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”现在已被弃用,因此在最新版本中,上面的代码不再有效。

有一些随机的博客文章, polymer 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>

同时仍将原始链接保留在文档中以用于页面范围的样式。

我同意许多人的说法,这太疯狂了(尤其是因为您必须将此链接放在使用它的每个组件中)并且需要找到更好的方法来共享样式。

目前,这是让它工作的最简单方法,记录链接 必须 在模板内,否则将无法正常工作。

虽然在这里,您还需要了解有关 Bootstrap 的其他内容,但您目前无法使用任何 JavaScript 功能。

Bootstraps JS 操作使用完整的文档 dom 而不是 web 组件的 light dom 来查找完整的元素,因此如果不对 BS JavaScript 文件进行大量更改,则任何 JS 功能都不能在 polymer 元素内工作,至少不能无论如何。

我有很好的权威,知道的人一直在寻求使 BS 在 polymer 内部工作(以及就此而言的 x-tags)

关于twitter-bootstrap - 使用 Polymer 的 shadow DOM 处理 Boostrap 的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24996179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com