CSS-фреймворк для приложения с существующей таблицей стилей

Я создаю расширение Chrome, которое прикрепляет виджеты к сообщениям Gmail. Он отображается под каждым письмом (что-то вроде контекстного гаджета gmail), когда пользователь находится на сайте gmail.com.

Я посмотрел на несколько CSS-фреймворков, таких как Twitter bootstrap, для использования в моем приложении. Когда я использовал его в mywidget, он перепутался с существующими стилями gmail из-за конфликта имен классов css. Есть ли какая-либо другая структура, которую я могу использовать там, где не было бы конфликта имен? Я наткнулся на рамки jquery-ui. Все имена классов здесь начинаются с.ui-*, что не приводит к конфликту имен. Существуют ли какие-либо другие фреймворки css с уникальными именами классов?

5 ответов

Решение

Обновление 2: Вот суть v3.1.1, предоставленная @GFoley83

Обновление: пастбин, объединенный ниже, является версией Bootstrap Twitter2.0.4

Вы должны окончательно использовать актуальную версию и скомпилировать ее самостоятельно.


Вот что я сделал с файлами начальной загрузки:

.tw-bs {
    @import "less/bootstrap.less";
}

И это результат: http://pastebin.com/vXgRNDSZ

Демо (jsfiddle)

Если тебе не нравится tw-bs Вы можете легко найти / заменить, не должно быть никаких конфликтов.

Я использовал решение @Sherbrow, но мне тоже пришлось добавить отзывчивый файл.

.my-bootstrap-container {
     @import "less/bootstrap.less";
     @import "less/responsive.less";
}

а потом беги

node_modules/less/bin/lessc demo.less -x > demo.css

Если кому-то нужен полный пошаговый учебник, как скомпилировать начальную загрузку для вашего собственного контейнера с пространством имен, я сделал пост в блоге об этом http://joomla.digital-peak.com/blog/151-how-to-add-bootstrap-to-your-joomla-2-5-extension

Последняя часть для Joomla, но начало может быть использовано во всем мире. Также имеется ссылка на последнюю скомпилированную версию начальной загрузки 2.3.2. Просто сделайте поиск и замените .dp-контейнер.

Обновление 2016: будущий способ смягчить эту проблему (вместо того, чтобы перекомпилировать начальную загрузку) - воспользоваться веб-компонентами, в частности теневым DOM. Это позволяет вашему приложению быть автономным (почти как iFrame) без необходимости открывать веб-браузер отдельной страницей / теряя способность общаться между страницами.

скажем, ваш компонент содержится в <div id='plugin'>...</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);

Вы можете прочитать больше о веб-компонентах (вместе с Shadow DOM) здесь: http://webcomponents.org/articles/introduction-to-shadow-dom/

В настоящее время принятый ответ не правильно отображает формы (используя 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 учебный класс:

<div class="bootstrap">
  <div class="container">
    ...
  </div>
</div>

Я начал с использования jquery ui - http://jqueryui.com/ потому что у него есть собственные классы CSS, которые не конфликтуют с Gmail. YUI - еще одна такая основа, которую я нашел. Но Шерброу показал, как я могу использовать начальную загрузку CSS с нашими собственными уникальными именами в стиле CSS.

Другие вопросы по тегам