Autor | Zpráva | ||
---|---|---|---|
návštěvník Profil * |
#1 · Zasláno: 18. 5. 2015, 14:06:35
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 * |
#3 · Zasláno: 18. 5. 2015, 17:23:58 · Upravil/a: návštěvník
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"); |
||
Chamurappi Profil |
#4 · Zasláno: 18. 5. 2015, 17:45:10
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 * |
#5 · Zasláno: 18. 5. 2015, 18:02:27 · Upravil/a: návštěvník
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"); 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 * |
#6 · Zasláno: 18. 5. 2015, 19:51:18
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(); } |
||
Časová prodleva: 9 let
|
0