In LESS kann man Variablen vordefinieren. Farbwerte, Paddings und mehr. Hilfreich z.B., will man mal einen Grauton etwas heller stellen, Man muss nicht in diversen Dateien die color-Werte anpassen, sondern kann das an 1 Stelle erledigen. Bootstrap 3 übertreibt mit diesem Feature etwas und ich suche mir regelmäßig einen Wolf. Erster Schritt, eine sortierbare Übersicht. Vielleicht hilft's was.

Da ich mittlerweile auf Bootstrap 4, dann 5, und SCSS/SASS umgestiegen bin, ist diese Liste lediglich für's Archiv, sozusagen.

Bootstrap-3-Variablen dynamisch ausgelesen

Gerenderte Ausgabe der Datei bootstrap-3-variables.php

/media/php-includes_ghsvs/less/3.3.7/variables.less

/media/php-includes_ghsvs/less/templates/sometemplate/variables.less

Alle 123 Einträge auf 1 Seite anzeigen

BS3-Original und Overrides des aktiven Templates

VariableBootstrapTemplate#
@font-size-base16px14px1
@screen-min320px2
@screen-max1600px3
@text-area-max-width1024px4
@screen-xs-min480px@screen-xs5
@screen-xxs-max(@screen-xs-min - 1)6
@screen-sm-min768px@screen-sm7
@screen-xs-max(@screen-sm-min - 1)(@screen-sm-min - 1)8
@screen-sm2840px9
@screen-md-min992px@screen-md10
@screen-sm-max(@screen-md-min - 1)(@screen-md-min - 1)11
@screen-md21024px12
@screen-lg-min1200px@screen-lg13
@screen-md-max(@screen-lg-min - 1)(@screen-lg-min - 1)14
@navbarCollapseWidth730px15
@teaserJumpWidth609px16
@rearrangeWidth609px17
@navbarCollapseWidthSidebar767px18
@navbarCollapsedFloatNone575px19
@img-max-width-articlebody@screen-xs-min20
@navbar-height050px21
@navbar-margin-bottom0@line-height-computed22
@body-bg@gray-lighter2#fff23
@text-color@black@gray-dark24
@text-bg@white25
@black#00026
@blue#0000ff27
@blue-lightlighten(@blue, 45%)28
@blueDark#0064cd29
@brown-light#F4A46030
@green#46a54631
@green-light#CFC32
@green-light2lighten(@green, 40%)33
@orange#fc830134
@orange-light#FC935
@pink#c3325f36
@purple#7a43b637
@red#78121238
@white#ffffff39
@yellow#ffc40d40
@yellow-light#FFC41
@gray-darker#101010lighten(@gray-base, 13.5%)42
@gray-lighter#ccclighten(@gray-base, 93.5%)43
@gray-lighter2#ddd44
@gray-lighter3#eee45
@gray-lighter4#e5e5e546
@gray-lighter5#fafafa47
@logoBgColor#41000048
@separator-border-color@blue49
@page-header-border-color@separator-border-color@gray-lighter50
@brand-danger@red#d9534f51
@invalid-color#ff000052
@link-color@red@brand-primary53
@dropdownLinkColor@gray-darker54
@dropdownLinkColorHover@white55
@dropdown-link-hover-bg@red#f5f5f556
@dropdown-link-hover-color@whitedarken(@gray-dark, 5%)57
@component-active-color@white#fff58
@component-active-bg@brand-danger@brand-primary59
@close-color@red#00060
@slicknav-btn-bg-color@orange61
@nav-pills-border-radius1@border-radius-base62
@font-family-sans-serifArial, Helvetica, "Arial Unicode MS", Sans-Serif"Helvetica Neue", Helvetica, Arial, sans-serif63
@font-family-base@font-family-sans-serif@font-family-sans-serif64
@font-family-serifGeorgia, "Times New Roman", Times, serifGeorgia, "Times New Roman", Times, serif65
@font-family-monospaceMonaco, Menlo, Consolas, "Courier New", monospaceMenlo, Monaco, Consolas, "Courier New", monospace66
@fontFamilyHandschrift"Just Me Again Down Here", Georgia, "Times New Roman", cursive67
@headings-font-family@font-family-sans-serifinherit68
@headingsFontFamilyArticleBody@headings-font-family69
@headings-font-weightnormal50070
@headings-color@gray-darkerinherit71
@headingsColorDark@black72
@spaceVertical@line-height-computed73
@link-decorationnone74
@navbar-default-bg@gray-lighter5#f8f8f875
@tooltip-color@black#fff76
@tooltip-font-sizeinherit77
@tooltip-bg@state-info-bg#00078
@tooltip-opacity1.979
@label-color@white#fff80
@label-link-hover-color@white#fff81
@label-tag-bg#3a87ad82
@label-categorytag-bg@purple83
@label-font-size(@font-size-base * 0.9)84
@label-color-catid84darken(@orange, 0%)85
@label-color-catid91darken(@purple, 10%)86
@label-color-catid92darken(@green, 10%)87
@label-color-catid95darken(#dd0000, 0%)88
@thumbnail-margin(@line-height-computed/2)89
@thumbnail-caption-margin-top@thumbnail-caption-padding90
@thumbnail-caption-bg@state-info-bg91
@thumbnail-caption-aligncenter92
@thumbnail-caption-styleitalic93
@pagination-bg@white#fff94
@pagination-border@gray-lighter2#ddd95
@pagination-hover-bg@gray-lighter4@gray-lighter96
@pagination-hover-border@gray-lighter2#ddd97
@pagination-active-color@black#fff98
@pagination-active-bg@gray-lighter4@brand-primary99
@pagination-active-border@gray-lighter2@brand-primary100
@pagination-disabled-bg@white#fff101
@pagination-disabled-border@gray-lighter2#ddd102
@pagination-margin0 0 0 0103
@code-bg@gray-lighter5#f9f2f4104
@thumbnail-bglighten(@thumbnail-border, 10%)@body-bg105
@thumbnail-border@gray-lighter2#ddd106
@thumbnail-caption-padding4px9px107
@navbar-default-link-color@red#777108
@navbar-default-link-hover-colorlighten(@yellow, 15%)#333109
@navbar-default-link-hover-bg@redtransparent110
@navbar-default-link-active-color@nav-pills-active-link-hover-color#555111
@navbar-default-link-active-bg@nav-pills-active-link-hover-bgdarken(@navbar-default-bg, 6.5%)112
@navbar-nav-child-border@gray113
@nav-pills-active-link-hover-bg@orange@component-active-bg114
@nav-pills-active-link-hover-color@white@component-active-color115
@breadcrumb-margin0116
@breadcrumb-border-radius0117
@breadcrumb-bgtransparent#f5f5f5118
@breadcrumb-color@black#ccc119
@breadcrumb-padding-vertical15px8px120
@breadcrumb-padding-horizontal015px121
@breadcrumb-active-color@gray-light@gray-light122
@breadcrumb-separator"|""/"123

Quelltext der Datei bootstrap-3-variables.php

<?php
/*
2015-10-11
bootstrap-3-variables.php
Variablen und Werte aus BS3-variables.less (Orig.) auslesen.
2015-10-17: zusätzlich Custom Werte aus template-eigener variables.less.
*/
?>
<?php
defined('_JEXEC') or die;

$selector = 'bootstrap-3-variables';

$html = array();
$link = '';
$countCollect = 0;

$app = JFactory::getApplication();

// Relevant für FooTable, wenn paging enabled
if (!($maxentries = $app->input->get->getInt('maxentries')))
{
 $maxentries = 50;
}

$apologise = JText::_('ICOMOONCLASSES_APOLOGISE');

$file = '/media/php-includes_ghsvs/less/3.3.7/variables.less';
$fileAbs = JPATH_SITE . $file;

$template = $app->getTemplate();
$fileCustom = '/media/php-includes_ghsvs/less/templates/sometemplate/variables.less';
$fileCustomAbs = JPATH_SITE . $fileCustom;

if (!file_exists($fileAbs))
{
 $html[] = '<p class="alert alert-error">Datei ';
 $html[] = $file;
 $html[] = ' nicht gefunden.';
 $html[] = $apologise;
 $html[] = '</p>';
}
elseif (!file_exists($fileCustomAbs))
{
 $html[] = '<p class="alert alert-error">Datei ';
 $html[] = $fileCustom;
 $html[] = ' nicht gefunden.';
 $html[] = $apologise;
 $html[] = '</p>';
}
else
{

 $link = '<p><a href="' . JUri::root(true) . $file . '" target="_blank">' . $file . '</a></p>';
 $link .= '<p><a href="' . JUri::root(true) . $fileCustom . '" target="_blank">' . $fileCustom . '</a></p>';

 $collect = collectLessVariablesGhsvs($fileAbs);
 $countCollect = count($collect);

 if ($countCollect)
 {
  $i = 0;

  $collectCustom = collectLessVariablesGhsvs($fileCustomAbs);

  $html[] = '<h4>BS3-Original und Overrides des aktiven Templates</h4>';
  #$html[] = '<div class="table-responsive">';
  $html[] = '<table class="table table-condensed table-bordered" id="' . $selector . '"';
  $html[] = '>';
  $html[] = '<thead>';
  $html[] = '<tr>';
  $html[] = '<th>Variable</th>';
  $html[] = '<th data-breakpoints="xxs">Bootstrap</th>';
  $html[] = '<th data-breakpoints="xs">Template</th>';
  $html[] = '<th data-type="number">#</th>';
  $html[] = '</tr>';
  $html[] = '</thead>';
  $html[] = '<tbody>';
  foreach ($collect as $k => $v)
  {
   $vCustom = '';
   $html[] = '<tr>';
   $html[] = '<td data-ghsvs="toggle">' . $k . '</td>';
   $html[] = '<td>' . $v . '</td>';
   if (isset($collectCustom[$k]))
   {
    $vCustom = $collectCustom[$k];
    unset($collectCustom[$k]);
   }
   $html[] = '<td>' . $vCustom . '</td>';
   $html[] = '<td data-ghsvs="number">' . (++$i) . '</td>';
   $html[] = '</tr>';
  }
  $html[] = '</tbody>';
  $html[] = '</table>';
  #$html[] = '</div><!--/table-responsive-->';
 }
}
if (!count($html))
{
 $html[] = '<p class="alert alert-error">Da ist wohl was schief gelaufen. ';
 $html[] = $apologise;
 $html[] = '</p>';
}
else
{
 // Mehr Einträge in Tabelle anzeigen?
 $uri = JUri::getInstance();
 if ($countCollect > $maxentries)
 {
  $uri->setVar('maxentries', $countCollect);
  $link .= '<p class=" btn btn-default text-fett" style="font-size:1.3em;"><a rel="nofollow" href="'.$uri.'#BELOWHEADER">Alle '.$countCollect.' Einträge auf 1 Seite  anzeigen</a></p>';
 }


 ########### FooTable 3 START ###########
 // Speziell. Wir haben Footable auf unserem Server via Plugin installiert.
 // Ggf. Zeilen entfernen
 $options = array(
  'empty' => JText::_('GHSVS_MODULES_FOOTABLE_EMPTY'),
  'sorting' => array(
   'enabled' => true
  ),
  'filtering' => array(
   'enabled' => true
  ),
  'paging' => array(
   'enabled' => ($countCollect > $maxentries) ? true : false,
   'size' => $maxentries,
   'countFormat' => JText::sprintf('JLIB_HTML_PAGE_CURRENT_OF_TOTAL', '{CP}', '{TP}'),
   'current' => 1,
   'limit' => 10,
   'position' => 'left'
  ),
  'state' => array(
   'enabled' => true,
   'filtering' => true,
   'paging' => true,
   'sorting' => true,
   'key' => $selector
  ),
  // Erster geöffnet. Auch nach Sortieren wird erster geöffnet.
  'expandFirst' => false,
  //'useParentWidth' => true,
  'stopPropagation' => true,
  // Leichteres Handling der Breakpoints. Nehmen drunter liegende mit.
  'cascade' => true,
  'breakpoints' => array(
  // Du muss xxs eingeben, damit Spalte bei *xs* *verschwindet*!
  'xxs' => 480,
  'xs' => 620,
  'sm' => 768,
  'md' => 992,
  'lg' => 1200,
  ),
 );
 JHtml::_('footableghsvs.footable', '#' . $selector, $options);
 ########### FooTable 3 ENDE ###########

 echo '<style>table{
 word-wrap: normal
 -webkit-hyphens: none;
 -moz-hyphens: none;
 -ms-hyphens: none;
 -o-hyphens: none;
 hyphens: none;
 }
 @-moz-document url-prefix() {
 fieldset { display: table-cell; }
 }
 [data-ghsvs="toggle"]{
  font-weight: bold;
  background-color: #fafafa;
  cursor:pointer;
 }
 [data-ghsvs="number"]{
  text-align: right;
 }
 </style>';
}

echo $link . implode('', $html);

function collectLessVariablesGhsvs($fileAbs)
{
 $lines = file($fileAbs);
 $collect = array();
 foreach ($lines as $i => $line){
  $line = trim($line);
  if (strpos($line, '@') !== 0 || strpos($line, ':') === false)
  {
   continue;
  }
  // Fix 2015-10-17.
  // Derzeit verwendet BS3 nur "//" als Kommentarzeichen
  if (strpos($line, '//') !== false)
  {
   $line = explode('//', $line, 2);
   $line = $line[0];
  }

  $line = explode(':', $line, 2);
  if (count($line) != 2){
   continue;
  }

  // Vorsicht! Derzeit geht das noch mit Semikolon.
  // Es sind aber auch Semikolons statt Komma zwischen
  // Funktions-Parametern erlaubt.
  // Siehe "Fix 2015-10-17"
  // $parts = explode(';', $line[1], 2);
  // $line[1] = trim($parts[0]);

  $collect[trim($line[0])] = trim($line[1], ' ;');
 }
 return $collect;
}