• 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)"

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+1 głos
55 wizyt
pytanie zadane 23 listopada w JavaScript przez TOWaD Gaduła (3,240 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 przez VBService Ekspert (204,430 p.)
wybrane 23 listopada 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 przez TOWaD Gaduła (3,240 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 przez VBService Ekspert (204,430 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 przez TOWaD Gaduła (3,240 p.)
edycja 23 listopada 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 przez VBService Ekspert (204,430 p.)
edycja 23 listopada 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 przez TOWaD Gaduła (3,240 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 przez Gynvael Coldwind Stary wyjadacz (12,390 p.)
Rzuć sobie okiem na jakąś bibliotekę do manipulowania kolorami, typu https://colorjs.io/ albo https://github.com/Qix-/color
komentarz 23 listopada przez TOWaD Gaduła (3,240 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 189 wizyt
pytanie zadane 28 grudnia 2019 w Nasze poradniki przez lobo.guru Obywatel (1,920 p.)
+1 głos
2 odpowiedzi 182 wizyt
pytanie zadane 14 czerwca 2021 w HTML i CSS przez japac Nowicjusz (150 p.)
0 głosów
1 odpowiedź 88 wizyt
pytanie zadane 8 października 2020 w HTML i CSS przez napoludniestad.pl Użytkownik (960 p.)

89,760 zapytań

138,364 odpowiedzi

309,424 komentarzy

59,673 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 908p. - Argeento
  2. 877p. - nidomika
  3. 851p. - Michal Drewniak
  4. 848p. - Mikbac
  5. 846p. - rucin93
  6. 838p. - Łukasz Eckert
  7. 835p. - ssynowiec
  8. 822p. - TheLukaszNs
  9. 794p. - JMazurkiewicz
  10. 787p. - Hubert Chęciński
  11. 786p. - adrian17
  12. 775p. - Jarosław Roszyk
  13. 760p. - Mawrok
  14. 756p. - overcq
  15. 752p. - Vinox
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...