• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

kolor js "blue"+"rgb(100,100,100)"

VPS Starter Arubacloud
+1 głos
113 wizyt
pytanie zadane 23 listopada 2022 w JavaScript przez TOWaD Mądrala (5,700 p.)

Chciałbym zmienić kolor na elemencie, np trochę pociemnić lub odróżnić. Miej więcej w ten sposób:

elementcolor.style["background-color"]="blue"; // zmienia kolor;

ale elementcolor.style["background-color"]+="rgb(100,100,100)";  //już nie.

Generalnie chodzi by do zmiennej kolor słownie dodać jakiś kolor rgb();

var color ="blue";
//... w innym pliku
color +=rgb (100,100,100); //żeby się kolor "nie zlewał " bo tło i element taki sam

 

2 odpowiedzi

+2 głosów
odpowiedź 23 listopada 2022 przez VBService Ekspert (251,170 p.)
wybrane 23 listopada 2022 przez TOWaD
 
Najlepsza

Ten zapis

elementcolor.style["background-color"]="blue"; // zmienia kolor;
 
ale 

elementcolor.style["background-color"]+="rgb(100,100,100)";  //już nie.

nie zadziała, bo

  1. element.style służy tylko do przypisywania wartości (nie dokonuje żadnych obliczeń)
  2. wartość zapisana między "" jest stringiem więc zapis += zadziała jak concatenate strings 
    elementcolor.style["background-color"]+="rgb(100,100,100)";
    da wynik bluergb(100,100,100)  wink, który jest błędnym zapisem i zostanie zignorowany.
    <style>
      div {
        font: 900 2em system-ui;
        padding: 1em;
        color: orange;
      }
    </style>
    
    <div>Lorem</div>
    
    <script>
      const elementcolor = document.querySelector('div');
      setTimeout(() => {
        elementcolor.style["background-color"] = "blue";
        console.log('1', elementcolor.style["background-color"]);
    
        setTimeout(() => {
          elementcolor.style["background-color"] += "rgb(100,100,100)";
          console.log('2', elementcolor.style["background-color"]);    
        }, 2000);
      }, 2000);
    </script>

     

 

IMHO do tego typu operacji na kolor w css sprawdza się bardzo dobrze zapis koloru w postaci HSL, oczywiście zawsze możesz użyć  jakiejś biblioteki do manipulowania kolorami (jak już wspomniał @Gynvael Coldwind)

[ on-line ]

 color: hsl(180, 100%, 10%);   // rgb(0, 51, 51)
 color: hsl(180, 100%, 15%);   // rgb(0, 77, 77)
 color: hsl(180, 100%, 20%);   // rgb(0, 102, 102)
 color: hsl(180, 100%, 25%);   // rgb(0, 128, 128)
 color: hsl(180, 100%, 30%);   // rgb(0, 153, 153)
 color: hsl(180, 100%, 35%);   // rgb(0, 179, 179)

komentarz 23 listopada 2022 przez TOWaD Mądrala (5,700 p.)
Dzięki. Myślałem może jakoś z piksela da się odzyskać jako zmienną numeryczną a nie "string". No cóż szkoda.
komentarz 23 listopada 2022 przez VBService Ekspert (251,170 p.)

Możesz jeszcze spróbować ze zmiennymi css

pełny przykład [ on-line ]

  :root {
    --blue: rgb(0, 0, 255);
    --blue-light-1: rgb(0, 100, 255);
    --blue-light-2: rgb(0, 150, 255); 
  }
  div {
    font: 900 2em system-ui;
    padding: 1em;
    color: var(--blue);
    background-color: var(--blue);
    transition: background 2s;
  }

 

może kiedyś będzie w css:  color: calc("blue" + rgb(100, 100, 100))  wink

jak teraz jest np. width: calc(100vw - 10%)

komentarz 23 listopada 2022 przez TOWaD Mądrala (5,700 p.)
edycja 23 listopada 2022 przez TOWaD
      document.getElementById('add').addEventListener('click', () => {
            let coordbeg = getwspółrzendne("beginCoord");
            document.getElementById("beginCoord").value = '';
            let coordend = getwspółrzendne("endCoord");
            document.getElementById("endCoord").value = '';
            let vecObj = {}
            if (coordbeg !== undefined && coordend !== undefined) {
                vecObj.beg = coordbeg;
                vecObj.end = coordend;
                vecObj.color = document.getElementById("color").value;
                if (vecObj.beg.x != vecObj.end.x || vecObj.beg.y != vecObj.end.y) ArrVectors.push(vecObj);
                else console.warn("Zerowa długość wektora");
                console.log('ok');
                vectord(vecObj.beg.x, vecObj.beg.y, vecObj.end.x, vecObj.end.y, vecObj.color);
            } else console.log('nok');
            //for (let obj of ArrVectors) console.log(obj);
            // drawvectors();
        }, false)

Raczej nie bardzo css ;). A tekst nachodzi na strzałki

Edit::Bardziej mi chodziło o czy ja nie mogę tego znaleźć, a gdzieś jest :). Obie odpowiedzi są fajne, ciężko przyznać najlepszą.

komentarz 23 listopada 2022 przez VBService Ekspert (251,170 p.)
edycja 23 listopada 2022 przez VBService

Zgaduje, że to jest tworzone na canvas (dodawane, rysowane strzałki symbolizujące wektor).

 

BTW, może trick z parametrem alfa dla rgba.

window.onload = () => {
  for (let i=1, j=0; i>0; i-=0.1, j+=0.1) {
    const div = document.createElement('DIV');
    div.textContent = 'Lorem';
    div.style['color'] = `rgba(0, 0, 0, ${i})`;
    div.style['background'] = `rgba(0, 0, 255, ${j})`;
    document.body.appendChild(div);
  }
}

albo z Math.random()

const randomColor = () => '#' + Math.random().toString(16).substr(-6)

window.onload = () => {
  if (document.readyState === 'complete') {
    setInterval(() => {
     document.body.style['background-color'] = randomColor();
    }, 1200)
  }
}

 

1
komentarz 23 listopada 2022 przez TOWaD Mądrala (5,700 p.)

Super dzięki. Jak zawsze można na ciebie liczyć. Po prostu, nie chało mi się robić dodatkowych zmiennych. Do takiego prostego menu.

 

+2 głosów
odpowiedź 23 listopada 2022 przez Gynvael Coldwind Nałogowiec (26,850 p.)
Rzuć sobie okiem na jakąś bibliotekę do manipulowania kolorami, typu https://colorjs.io/ albo https://github.com/Qix-/color
komentarz 23 listopada 2022 przez TOWaD Mądrala (5,700 p.)
Dzięki, myślałem ze się da w czystym js zrobić tylko nie mogę wygrzebać w Google.

Podobne pytania

0 głosów
0 odpowiedzi 297 wizyt
pytanie zadane 28 grudnia 2019 w Nasze poradniki przez lobo.guru Obywatel (1,920 p.)
+1 głos
2 odpowiedzi 586 wizyt
pytanie zadane 14 czerwca 2021 w HTML i CSS przez japac Nowicjusz (150 p.)
0 głosów
1 odpowiedź 125 wizyt
pytanie zadane 8 października 2020 w HTML i CSS przez napoludniestad.pl Użytkownik (960 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...