我正在构建一个chrome扩展程序,它将一个小部件附加到gmail消息中。当用户在gmail.com网站上时,它会显示在每封电子邮件下方(类似于gmail上下文小工具)。
我看了几个像我在app中使用的twitter bootstrap的css框架。当我在mywidget中使用它时,由于css类名称冲突,它与现有的gmail样式混乱。是否有任何其他框架我可以使用没有名称冲突的地方?我遇到了jquery-ui框架。这里的所有类名都以.ui- *开头,从而不会引起名称冲突。是否还有其他具有唯一类名的css框架?
答案 0 :(得分:50)
更新2:以下是@ GFoley83提供的v3.1.1的a gist
更新:下面加入的pastebin是Twitter Bootstrap 版本2.0.4
你应该明确地使用up-to-date version并自己编译。
以下是我使用bootstrap less files所做的事情:
.tw-bs {
@import "less/bootstrap.less";
}
这就是结果:http://pastebin.com/vXgRNDSZ
如果你不喜欢tw-bs
,你可以轻松地进行查找/替换,不应该有任何冲突。
答案 1 :(得分:6)
我使用了@Sherbrow解决方案,但也必须添加响应文件。
.my-bootstrap-container {
@import "less/bootstrap.less";
@import "less/responsive.less";
}
然后运行
node_modules/less/bin/lessc demo.less -x > demo.css
如果有人需要完整的分步教程如何为您自己的命名空间容器编译bootstrap,我发了一篇关于它的博客文章http://joomla.digital-peak.com/blog/151-how-to-add-bootstrap-to-your-joomla-2-5-extension
最后一部分是Joomla,但开头可以全局使用。它还有一个指向最新编译的bootstrap版本2.3.2的链接。只需进行搜索并替换 .dp-container 。
答案 2 :(得分:2)
2016年更新:缓解此问题的未来方法(而不是必须重新编译引导程序)是利用Web组件,特别是影子DOM。这允许您的应用程序自包含(几乎像iFrame),而Web浏览器不必打开单独的页面/失去页面之间的通信能力。
说您的组件包含在<div id='plugin'>...</div>
你可以将div中的内容移动到头部的标签中,例如
<template id="template"><!--Your Code Here--></template>
您的模板可以包含您想要的所有引导程序链接标记和js。然后在你的javascript / bookmarklet中,你可以写
var pluginRoot = document.querySelector('plugin').createShadowRoot();
var template = document.querySelector('#template');
var clone = document.importNode(template.content, true);
pluginRoot.appendChild(clone);
您可以在此处阅读有关Web组件(以及Shadow DOM)的更多信息:http://webcomponents.org/articles/introduction-to-shadow-dom/
答案 3 :(得分:0)
我开始使用jquery ui - http://jqueryui.com/,因为它有自己的css类,不会与gmail冲突。 YUI是我发现的另一个这样的框架。但Sherbrow展示了我如何使用自己独特的css样式名称来引导css。
答案 4 :(得分:0)
目前接受的答案没有正确呈现表单(使用SASS和bootstrap 4 beta)。以下适用于我:
.bootstrap {
@import 'bootstrap-4.0.0-beta/scss/bootstrap.scss';
box-sizing: border-box;
}
框大小很重要,因为在编译SASS样式表时,会生成以下内容。
.bootstrap html {
box-sizing: border-box;
...
}
即。 box-sizing
属性将放置在html
元素内的class="bootstrap"
元素上 - 当然不存在。 html
和body
上可能还有其他样式,您可能需要手动添加到样式中。
现在,您可以将使用bootstrap设置样式的内容放在bootstrap
类中:
<div class="bootstrap">
<div class="container">
...
</div>
</div>