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

Przezroczystość + kolor po nazwie

Object Storage Arubacloud
+2 głosów
111 wizyt
pytanie zadane 8 kwietnia 2022 w JavaScript przez Oscar Nałogowiec (29,290 p.)
edycja 8 kwietnia 2022 przez Oscar

Nie mam konkretnej wiedzy z HTML i obocznościami, trochę czasem dłubnę jakieś małe "techniczne" stronki do monitorowania itp. Aktualnie bawię się zegarami (radial-gauge) i po pierwsze chciałem się spytać, czy ktoś też bawił się tym?

Głównym elementem w bibliotece jest rysowanie po canvas.

Drugie pytanie jest bardziej ogólne - kolory można zapodać w formie RGB ("#456" lub dokładniej "#402077"), można użyć funkcji rgba, gdzie można też podać przeźroczystość (kanal alfa). Można też używać nazw "blue", "white" itp. Czy można jakoś połączyć te dwie ostatnie metody i podać kolor po nazwie uzupełniając go transparentnością? Jakoś nie czuję kolorów podanych w RGB. Chodzi mi o specyfikowanie kolorów w ustawieniach atrybutu przy definicji/tworzeniu elementu

<canvas data-type="radial-gauge"
        ...
        data-highlights='[
                    {"from": -30, "to": -5, "color": "rgba(50,50, 255, .6)"},
                    {"from": -5,  "to": 10, "color": "rgba(200,200, 255, .6)"},
                    {"from": 10,  "to": 20, "color": "orange"},
                    {"from": 20,  "to": 50, "color": "rgba(250, 0, 0, .6)"}
                ]'
></canvas>

W powyższym kodzie chciałbym móc stosować nazwy (jak w trzecim wierszu) ale z podaniem przezroczystości.

komentarz 8 kwietnia 2022 przez VBService Ekspert (252,660 p.)
edycja 9 kwietnia 2022 przez VBService

Sprawdź to:  Getting the RGB values for a CSS/HTML named color in JavaScript

 

Można też spróbować zapisu hex z podaniem alfa: 

#00ff00  =>  rgb(0,255,0)
#00ff0050  =>  rgba(0,255,0,0.5)

<style>
  div div {
    display: inline-block;
    width: 200px;
    height: 200px;
  }
  div div:nth-child(1) {
    background-color: #00ff00;
  }
  div div:nth-child(2) {
    background-color: #00ff0080;
  }
  div div:nth-child(3) {
    background-color: #00ff0040;
  } 
</style>

<div>
  <div></div>
  <div></div>
  <div></div>
</div>

 

Jakoś nie czuję kolorów podanych w RGB

podejrzewam, że zapis w hex, też nie przypadnie Tobie do gustu. wink

1 odpowiedź

0 głosów
odpowiedź 9 kwietnia 2022 przez VBService Ekspert (252,660 p.)
edycja 9 kwietnia 2022 przez VBService

Może taki trik w oparciu o Colors.js  smiley

W trakcie ładowania kodu strony następuje zamiana.

 

<canvas data-type="radial-gauge" 
        data-highlights='[
                         {"from": -30, "to": -5, "color": "blue 99"},
                         {"from": -5,  "to": 10, "color": "magenta 60"},
                         {"from": 10,  "to": 20, "color": "orange"},
                         {"from": 20,  "to": 50, "color": "red 65"}]'
        >         
</canvas>

<script src="https://cdnjs.cloudflare.com/ajax/libs/Colors.js/1.2.4/colors.min.js"></script>
<script>
  function gaugeColorNameToRGBA() {
    const cv = document.querySelector('canvas[data-highlights]') || null;
    if (cv) {
      const highlights = JSON.parse(cv.dataset.highlights);
      for (const row_color of highlights) {
        let [rgb, alpha] = row_color.color.toLowerCase().split(' ');
        rgb = $c.name2rgb((rgb || 'black')).RGB.replaceAll(' ', ',');
        alpha = (parseInt((alpha || 100)) >= 100) ? 1 : parseInt((alpha || 99)) / 100;
        row_color.color = `rgba(${rgb},${alpha})`;
      }
      cv.dataset.highlights = JSON.stringify(highlights);
    }
  }

  gaugeColorNameToRGBA();  
</script>

Podobne pytania

0 głosów
1 odpowiedź 144 wizyt
pytanie zadane 28 lipca 2019 w HTML i CSS przez Radek Koniarski Użytkownik (870 p.)
0 głosów
2 odpowiedzi 773 wizyt
pytanie zadane 9 listopada 2015 w HTML i CSS przez Tyrdl Nowicjusz (150 p.)
0 głosów
1 odpowiedź 258 wizyt

92,540 zapytań

141,383 odpowiedzi

319,482 komentarzy

61,928 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...