Советы по настройке Twitter Bootstrap

267

Я работаю с Bootstrap 2.0.3, используя LESS. Я хочу настроить его очень интенсивно, но я хочу избегать внесения изменений в источник, когда это возможно, поскольку часто происходят изменения в библиотеках. Я новичок в LESS, поэтому не знаю, как его компиляция полностью работает. Каковы некоторые рекомендации по работе с основанными на LESS или LESS структурами?

  • 0
    Привет из будущего! «Лучшие практики» настройки начальной загрузки изменились в SASS на основе 3.x и 4.x: stackoverflow.com/a/50410667/171456
Теги:
less

7 ответов

179

Мое решение похоже на jstam's, но я избегаю внесения изменений в исходные файлы, когда это возможно. Учитывая, что изменения в начальной загрузке будут частыми, я хочу, чтобы вы могли использовать последний источник и вносить минимальные изменения, сохраняя мои изменения в отдельных файлах. Конечно, это не полностью пуленепробиваемый.

  • Скопируйте bootstrap.less и variables.less в родительский каталог. Переименуйте bootstrap.less на тему .less или что хотите. Структура каталогов каталогов должна выглядеть следующим образом:

    /Website            
         theme.less
         variables.less
         /Bootstrap
         ...
    
  • Обновите все ссылки в theme.less, чтобы указать подкаталог bootstrap. Убедитесь, что ваши переменные .less ссылаются на родительский, а не на каталог начальной загрузки:

    ...
    // CSS Reset
    @import "bootstrap/reset.less";
    
    // Core variables and mixins
    @import "variables.less"; // Modify this for custom colors, font-sizes, etc
    @import "bootstrap/mixins.less";
    
    // Grid system and page structure
    @import "bootstrap/scaffolding.less";
    @import "bootstrap/grid.less";
    @import "bootstrap/layouts.less";
    

    ...

  • Добавьте свои переопределения CSS в файл theme.less сразу после их включения.

    ...
    // Components: Nav
    @import "bootstrap/navs.less";
    @import "bootstrap/navbar.less";
    
    // overrides
    .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner {
        border-radius: 0 0 0 0;
        padding: 10px;
    }
    
    .nav-tabs, .nav-pills {
        text-transform: uppercase;
    }
    
    .navbar .nav > li > a {
        text-shadow: none;
    }
    
    ...
    
  • Ссылка на тему .less вместо bootstrap.less на ваших HTML-страницах.

Всякий раз, когда выдается новая версия, ваши изменения должны быть безопасными. Вы также должны делать разницу между вашими загрузочными файлами при каждом выпуске новой версии. Переменные и импорт могут меняться.

  • 0
    Есть ли конкретная причина для № 3? Что произойдет, если все ваши пользовательские CSS появятся внизу после всех импортов, а не смешиваются после каждого импорта?
  • 2
    @AaronLS: это тоже должно сработать. Я думаю, что номер 3 для того, чтобы держать это организованным.
Показать ещё 2 комментария
37

Это то, с чем я боролся. С одной стороны, я хочу сильно настроить файл variables.less с собственными цветами и настройками. С другой стороны, я хочу немного изменить файлы Bootstrap, чтобы облегчить процесс обновления.

Моим решением (на данный момент) является создание файла LESS addon и его вставка в файл bootstrap.less после импорта переменных и микшинов. Так что-то вроде этого:

...

// CSS Reset
@import "reset.less";

// Core variables and mixins
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
@import "mixins.less";

// Custom Addons
@import "addon-file.less"; // <--- My custom LESS addon

// Grid system and page structure
@import "scaffolding.less";

...

Таким образом, если я хочу reset цвета Bootstrap, шрифты или добавлять дополнительные миксы, я могу. Мой код является отдельным, но будет скомпилирован в остальной части импорта Bootstrap. Это не идеально, но это прекрасная работа, которая хорошо работала для меня.

  • 1
    Хорошее решение Это именно то, что я сделал с некоторыми изменениями. Посмотри на мой ответ. Это было слишком долго, чтобы оставить комментарий.
  • 0
    Мне также нравится ваше решение, Джоэл. Хорошее разделение вашего кода и кода фреймворка.
Показать ещё 2 комментария
26

С моей стороны, у меня просто есть файл с именем theme.less с импортом boostrap.less в нем, и чуть ниже я переопределяю (даже если он плохо работает с использованием LESS, но, что проще, его поддерживать) значение переменной, которое я не обновляю.

Это хорошо работает для создания пользовательских значений для переменных в variables.less

После этого я скомпилирую файл theme.less вместо bootstrap.less

Пример theme.less:

@import "path/to/my/bootstrap.less";  
@linkColor: #MyAwesomeColor;  
  • 1
    Это способ: 1) иметь копию кода начальной загрузки, которую можно обновлять по желанию, в то же время 2) иметь возможность устанавливать собственные пользовательские настройки. См. Stackoverflow.com/questions/13809895/… для получения подробной информации о структуре папок.
  • 0
    Я удостоверился, что поместил это перед моим собственным меньшим кодом, чтобы загрузчик не переопределил его.
Показать ещё 2 комментария
5

А лучше подход (IMHO) - это взять вызов из проекта Bootswatch github под названием swatchmaker. Этот проект специально разработан для создания и управления десятками тем Bootstrap на веб-сайте.

Makefile в проекте строит swatchmaker.less (вы можете переименовать его в нечто вроде customizations.less). Этот файл содержит кучу импорта:

@import "bootstrap/less/bootstrap.less";
@import "swatch/variables.less";
@import "swatch/bootswatch.less";
@import "bootstrap/less/utilities.less";

Вы можете переименовать папку swatch и bootswatch.less в любое удобное для вас время.

Это имеет смысл, поскольку вы можете обновить Bootstrap, не затрагивая ваши собственные файлы. Фактически, Makefile также содержит команды для извлечения последней версии Bootstrap. Подробнее см. README на странице проекта.

В качестве бонуса README также предлагает установить камень watchr, который автоматически сгенерирует проект при изменении файла .less.

4

Я пришел к тому же решению, что и Джоэл:

Пользовательские меньше файлов

Как описано выше: я создаю локальные копии для всех файлов меньшего размера, которые меня настраивают: например, "variables-custom.less", "warn-custom.less", "buttons-custom.less". Поэтому я могу использовать некоторые стандарты и иметь свои собственные дополнения. Недостатком является то, что когда Bootstrap будет обновляться, его очень сложно перенести.

Но есть что-то еще:

Переопределить стили

При взгляде на рабочие потоки я часто вижу людей, предлагающих просто переопределять стили. Итак, сначала импортируйте стандартные файлы меньшего размера, а затем добавьте свои пользовательские объявления внизу. Верх: здесь проще обновиться до более новой версии. Недостатком является: Скомпилированный файл CSS включает все переопределения. Некоторые селектора CSS определены дважды. Поэтому браузеру необходимо сделать некоторые шаги, чтобы выяснить, что применять на самом деле. Это не очень чисто.

Мне интересно, почему препроцессоры недостаточно умны для решения таких двойных объявлений? Есть ли лучший рабочий поток, который я здесь отсутствует?

  • 1
    Я вижу, вы правы, но вы всегда можете запустить утилиту очистки CSS онлайн или локально. Вот их список: stackoverflow.com/questions/135657/… Вероятно, вы все равно не хотите использовать меньше компилятора, работающего в продукте.
  • 0
    спасибо за ответ, не знал, что есть пыльные инструменты. круто, я буду копаться в этом. На самом деле я использую меньше компилятор локально в любом случае (CodeKit). Не хочу компилировать CSS дважды.
4

Если (И ТОЛЬКО ЕСЛИ), у вас есть время, которое вы можете сделать так, как я. Я сохраняю свою измененную версию фреймворка (ов) и каждое обновление фреймворка читаю документы и проверяю источник изменений.

Это решение может показаться менее идеальным при первом взгляде, но у меня есть причины для этого. Я не работаю ни с одним, ни с амальгамом многих фреймворков, лучших практик, списков стилей/нормализации стиля и т.д., И я всегда уверен, что никакое обновление никогда не изменит существующие проекты каким-либо образом, я не видел.

Я работаю над своей собственной инфраструктурой по следующим причинам.

  • Я изгоняю каждый маленький бит, мне не нужно хранить модульные и мелкие
  • Я использую свою фреймворк для клиентских заданий и хочу: а) знать, с чем именно я работаю, а б) владею всем, что я продаю клиенту. Я не просто копирую и использую фреймворки, но пытаюсь понять и воссоздать их.
  • Я использую свою фреймворк в сочетании с CMS и не могу просто отказаться и забыть фреймворк в проекте/начать с нуля
  • 0
    Да, я понимаю, но для меня все меняется так быстро, что вся эта веб-технология становится все более сложной для отслеживания.
  • 1
    Как уже упоминалось: мой подход только для тех, кто следит за текущей разработкой нескольких фреймворков. Я делаю это, потому что я должен быть на вершине развития и разных подходов к техническим задачам. Я думаю, что это лучше подходит для разработчиков фреймворков, чем для фрилансеров, которые просто «хотят выполнить свою работу».
2

Просто добавьте @import "../../styles.less"; (или везде, где ваша таблица стилей) к bootstrap.less внизу. Это позволяет использовать бутстрап-смеси, такие как .gradient или .border-radius внутри ваших собственных стилей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню