Получить текущие цвета темы Bootstrap в Javascript - PullRequest
0 голосов
/ 02 октября 2018

Моя цель - создать диаграммы, используя chart.js, используя цвета, которые соответствуют текущей выбранной теме Bootstrap 4 (для сайта доступно несколько)

Моя текущая стратегия состоит в том, чтобы значок каждого цвета был включенстраница:

  <div id="color-example-badge-primary" class="badge badge-primary" ></div >
  <div id="color-example-badge-warning" class="badge badge-warning" ></div >
  <div id="color-example-badge-danger" class="badge badge-danger" ></div >
  <div id="color-example-badge-secondary" class="badge badge-secondary" ></div >
  <div id="color-example-badge-light" class="badge badge-light" ></div >
  <div id="color-example-badge-success" class="badge badge-success" ></div >
  <div id="color-example-badge-info" class="badge badge-info" ></div >
  <div id="color-example-badge-dark" class="badge badge-dark" ></div >

, а затем с помощью jQuery вывести цвета фона в массив:

var themeColors = [$("#color-example-badge-primary").css('backgroundColor'),
                   $("#color-example-badge-warning").css('backgroundColor'),
                   $("#color-example-badge-danger").css('backgroundColor'),
                   $("#color-example-badge-secondary").css('backgroundColor'),
                   $("#color-example-badge-light").css('backgroundColor'),
                   $("#color-example-badge-success").css('backgroundColor'),
                   $("#color-example-badge-info").css('backgroundColor'),
                   $("#color-example-badge-dark").css('backgroundColor')
];

Затем я могу присвоить этому массиву значение chart.js, чтобы создать диаграмму сцвета темы.

Есть ли лучший способ получить текущие цвета темы из CSS с помощью Javascript?Или нет способа создать элемент DOM и проверить его цвет фона?

Если есть простой способ получить правила CSS с использованием Javascript без использования элемента DOM, это было бы здорово.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Bootstrap сохраняет свои тематические цвета также внутри переменных CSS в элементе :root.

Более подходящим способом было бы извлечь эти цвета, используя getComputedStyle() и getPropertyValue('--varable')

var style = getComputedStyle(document.body);
var theme = {};

theme.primary = style.getPropertyValue('--primary');
theme.secondary = style.getPropertyValue('--secondary');
theme.success = style.getPropertyValue('--success');
theme.info = style.getPropertyValue('--info');
theme.warning = style.getPropertyValue('--warning');
theme.danger = style.getPropertyValue('--danger');
theme.light = style.getPropertyValue('--light');
theme.dark = style.getPropertyValue('--dark');

console.log(theme);
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

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

Теперь вы можете использовать эти цвета с JavaScript или jQuery, как следует

element.style.backgroundColor = theme.primary; // Javascript
$(element).css('background-color', theme.primary); // jQuery
0 голосов
/ 02 октября 2018

Используйте document.body.getElementsByTagName("*"), чтобы получить весь DOM в body и зациклите его, чтобы получить то, что вы хотите

    $(document).ready(function(){
    var items = document.body.getElementsByTagName("*");
    var arr=[];

    for (var i = 4, len = items.length; i < len; i++) {
    arr.push(document.getElementById(items[i].id)!=null?$('#'+items[i].id).css('backgroundColor'):"");

    }
    console.log(arr)
    });
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
      
    <div id="color-example-badge-primary" class="badge badge-primary" >a</div >
      <div id="color-example-badge-warning" class="badge badge-warning" >a</div >
      <div id="color-example-badge-danger" class="badge badge-danger" >a</div >
      <div id="color-example-badge-secondary" class="badge badge-secondary" >a</div >
      <div id="color-example-badge-light" class="badge badge-light" >a</div >
      <div id="color-example-badge-success" class="badge badge-success" >a</div >
      <div id="color-example-badge-info" class="badge badge-info" >a</div >
      <div id="color-example-badge-dark" class="badge badge-dark" >a</div >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...