Autor Zpráva
návštěvník
Profil *
Dá se pomocí Javascriptu zjistit hodnota barvy, kterou používá prohlížeč na vykreslení pozadí? Většina lidé asi používá bílou barvu na pozadí okna. Když překresluji ikonu bílou barvou (alpha blendingem) tak je to staticky. Když si ale uživatel nastaví jiné barvové schéma na webové stránce nebo se schéma bude řídit barvou v systému, tak jak to udělat aby pak efekt nevypadal blbě, tj. aby na zeleném pozadí nebylo bílé kolečko místo zeleného (ikony jsou kulaté)?
Chamurappi
Profil
Reaguji na návštěvníka:
Barva transparent je vždy transparent, na tom není co zjišťovat.
CSS zná systémové barvy, výchozí barva pozadí stránky je window. Lze s ní kreslit i do <canvas>u, jestli se ptáš na tohle…
Výchozí barvu pozadí stránky můžeš samozřejmě změnit, většinou je to i vhodné, pokud používáš i jiné barvy než systémové a požaduješ stabilní kontrast. (Uživatel může mít window černou a windowtext bílou – lze počítat s tím, že tyto dvě systémové barvy budou navzájem kontrastní, podobně též highlight a highlighttext, ale už nemáš stejné záruky třeba u kombinace green a window.)
návštěvník
Profil *
Dík za fajn odkaz. Já tam zase neviděl ty barvy až když jsem si zapnul barvy z webové stránky.


Myslel jsem že to zvládnu, ale nefunguje mi to.
var fadeColor = $(window).css("Window");
jak tedy získat (v JQuery) barvu okna?


Zkoušel jsem nejdříve toto:
var fadeColor = $(window).css("background-color");
console.log(fadeColor);
throw new Error("BREAK");
Ale aplikace se mi zastavila a chybová hláška nikde
Chamurappi
Profil
Reaguji na návštěvníka:
Já tam zase neviděl ty barvy až když jsem si zapnul barvy z webové stránky.
Nerozumím.

$(window).css("Window");
Tím bys zjišťoval hodnotu CSS vlastnosti window, taková neexistuje…

jak tedy získat (v JQuery) barvu okna?
K čemu jí potřebuješ? Co s ní pak chceš dělat? Proč do toho vůbec montuješ jQuery?
Barvu jde zjistit přes <canvas> tím, že si vykreslíš pixel barvou window a pak si přes getImageData vytáhneš pole s jeho R, G, B, A složkami.
návštěvník
Profil *
Takto?
  var canvas = this[0];
  var ctx = canvas.getContext("2d");
  var pixel = ctx.getImageData(1, 1, 1, 1);
  var data = pixel.data;
  console.log(data);
  throw new Error("BREAK");
To mí vrací Uint8ClampedArray [ 0, 0, 0, 0 ] barvu okna ale mám #b3a387 . Právě při malování používám tento formát pro nastavení fillStyle. Rozumím ale tomu že ji mohu poskládat pomocí "rgba(...)"


Asi jsem to pochopil, jenže vykreslená barva neodpovídá té moji barvě, vrací "217,193,193" což je #d9c1c1
var canvas = this[0];
var ctx = canvas.getContext("2d");
ctx.fillStyle = "window";
ctx.fillRect( 1, 1, 1, 1 );
var pixel = ctx.getImageData(1, 1, 1, 1);
var obj = pixel.data;//.Uint8ClampedArray;
console.log(obj[0]+","+obj[1]+","+obj[1]);
návštěvník
Profil *
Mám hotovo:
  function getSystemColor(color)
  {
  ctx.fillStyle = color;
  ctx.fillRect( 1, 1, 1, 1 );
  var pixel = ctx.getImageData(1, 1, 1, 1);
  var obj = pixel.data;
  // Using Github harthur/color library 0.4.1:
  obj = Color().rgb(obj[0], obj[1], obj[2]);
  return obj.hexString();
  }

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0