Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2017, 20:26
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Разделение rgb каналов по своим переменным.
Добрый день уважаемые. Довольно детский вопрос, но чёт не могу придумать как разделить циферки
Есть такой пример https://jsfiddle.net/BlackStar1991/nynj0k29/
Как для каждого блока вытянуть значения цвета фона в переменные r g b, что б в последующем с ними можно было проводить какие то операции ?
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2017, 21:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
/\d+/g
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2017, 21:10
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Сообщение от рони
/\d+/g
Здесь что то по эльфийски я не понимаю
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2017, 21:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
      .block{
  width: 150px;
  height: 150px;
}
.one{
    background-color: rgb(255, 250, 44);
}
.two{
    background-color: rgb(5, 250, 44);
}
.three{
    background-color: rgb(25, 250, 144);
}

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    $("div").each(function(indx, el){
    var  color = $(el).css("backgroundColor");
    $(this).html(color.match(/\d+/g).join(" "))

          });
});
  </script>
</head>

<body>
<div class="block one"></div>
<div class="block two"></div>
<div class="block three"></div>

</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 19.01.2017, 21:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
es6
$(function() {
    $("div").each(function(indx, el){
    let  color = $(el).css("backgroundColor"),
    [r,g,b] = color.match(/\d+/g);
    $(this).text([r,g,b])
          });
});
Ответить с цитированием
  #6 (permalink)  
Старый 19.01.2017, 22:06
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Спасибо, конечно, рони, но чёт всё равно осталось недопонимание.
Вот допустим для первого блока я хочу канал r уменьшить на 200 g уменьшить на 100 b увеличить на 70 Как это сделать?
Что мы делаем в этой строке? [r,g,b] = color.match(/\d+/g);
Засовываем параметрам, составляющим массив, значения из атрибутов фона? Или как?
Ответить с цитированием
  #7 (permalink)  
Старый 19.01.2017, 22:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
      .block{
  width: 150px;
  height: 150px;
}
.one{
    background-color: rgb(255, 250, 44);
}
.two{
    background-color: rgb(5, 250, 44);
}
.three{
    background-color: rgb(25, 250, 144);
}

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    function fn(num)
    {
       return num < 0 ? 0 : num > 255 ? 255 : num
    }
    $("div").each(function(indx, el){
    let  color = $(el).css("backgroundColor"),
    [r,g,b] = color.match(/\d+/g);
     r -= 200;
     g -= 100;
     b = +b + 70;

    $(this).text(color +'\nrgb('+[r,g,b].map(fn)+')' )
          });
});

  </script>
</head>

<body>
<div class="block one"></div>
<div class="block two"></div>
<div class="block three"></div>

</body>
</html>

Последний раз редактировалось рони, 19.01.2017 в 22:26.
Ответить с цитированием
  #8 (permalink)  
Старый 20.01.2017, 12:33
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Спасибо, рони выглядит очень круто
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск