Kleuren formule

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Python Developer

Dit ga je doen Als Python Developer ben je verantwoordelijk voor: Het ontwikkelen van Stuurprogramma's in Python zodat er verbindingen kunnen worden gelegd tussen besturingssystemen en (AV) hardware; Het testen en debuggen van Stuurprorgamma's; Het communiceren met noodzakelijke partijen in gevallen waar extra technische details nodig zijn om een Stuurprogramma te ontwikkelen of problemen op te lossen; Het maken van de nodige technische documentatie (in het Engels); Het participeren in een Scrum/Agile omgeving. Hier ga je werken Deze internationale organisatie is wereldwijd een succesvol producent en leverancier van professionele AV hard- en software. Klanten gebruiken de producten o.a. voor het

Bekijk vacature »

Gezocht: .Net ontwikkelaars met een maatschappelij

Bedrijfsomschrijving Zoek jij als medior .Net ontwikkelaar een inspirerende werkplek bij een bedrijf met maatschappelijk verantwoordelijkheidsgevoel? Dan is deze vacature je op het lijf geschreven. De organisatie bestaat ruim 20 jaar en ze ontwikkelen in house applicaties waarmee de zorgsector enorm mee gebaat is. Jouw applicaties worden gebruikt door duizenden gebruikers waardoor je echt een waardevolle bijdrage kan leveren aan de maatschappij. Het bedrijf is zeer innovatief en vindt een goede werk/privé balans belangrijk. Je krijgt alle mogelijkheden om jezelf verder te ontwikkelen, je werktijden in te delen en daarnaast is het ook mogelijk om deels thuis te werken. Het

Bekijk vacature »

Software Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Low Code Developer voor o.a. overheidsprojecten!

Bedrijfsomschrijving Wil jij ook behoren tot de specialist in Low Code? Dan zou ik zeker aanraden om verder te lezen. Deze organisatie is ooit opgericht door twee studenten en is inmiddels uitgegroeid tot een serieuze werkgever met een groot aanzien op Low Code projecten. De sfeer is echter niet veranderd, er heerst een informele sfeer met een open deuren beleid, en hierin mag de eigen bar natuurlijk niet ontbreken. Momenteel maakt deze organisatie een flinke groei door en hier kan jij natuurlijk niet bij ontbreken. Daarom ben ik op zoek naar Low Code Developers met een degelijke technische achtergrond. Kennis

Bekijk vacature »

REMOTE - Front-end Angular developer

Functie Het IT-team bestaat momenteel uit de IT Manager, 2 back-end developers, 1 fullstack developer, 1 designer en een DevOps engineer. Ze zijn momenteel op zoek naar een ervaren Front-end developer die autonoom en gedisciplineerd aan de slag gaat, en bij aanvang als enige developer met hun Front-end applicaties bezig is. Wel hebben ze de ambitie om hier snel een 2e developer bij te vinden die jij dan ook zal kunnen aansturen/begeleiden. Je zult aan de slag gaan met het doorontwikkelen van hun bestaande UI in Angular. Maar ook het ontwikkelen van een mobiele app. Hierbij hechten ze veel waarde

Bekijk vacature »

.NET Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Capelle ad Ijssel Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Een deel van jouw werkzaamheden: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps en Power BI.

Bekijk vacature »

React developer Inhouse cloudplatform

Functie De functie: Als front-end developer kom je te werken naast 2 andere front-end/React developers, waaronder één senior. Een hele mooie kans dus om in korte tijd veel nieuwe kennis en ervaring op te doen. Ze hebben momenteel veel werk hierin en daarom willen ze het team graag uitbreiden. Het is van belang dat je, zeker gezien het vele thuiswerken, in ieder geval al een aantal projecten hebt gedaan in React. Taken waar je aan kunt denken zijn het ontwikkelen van client-applicaties o.b.v. HTML5, React en andere open standaarden. Ook ben je nauw betrokken bij het implementeren van designs o.b.v.

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Rotterdam! Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

Bekijk vacature »

Hands-on Solution Architect / Software Architect (

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Solution Architect / Software Architect op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je werkt samen met gedreven DevOps teams, bestaande uit frontend, backend en middleware developers, testers, UX-designers. Samen met de teams ben je continu op zoek naar de beste oplossingen voor onze klanten. Als Solution Architect onderzoek

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

Pagina: 1 2 volgende »

Mark Hogeveen

Mark Hogeveen

15/06/2013 13:01:52
Quote Anchor link
Hallo,

Je hebt veel javascript color chooser plugins.
Dat is bijvorbeeld een popup waar je een soort regenboog van kleuren hebt, en waarbij je vaak heel precies een kleur kunt kiezen. Zoals dit: http://johndyer.name/lab/colorpicker/
Ik wil ook zo iets maken, maar dan simpeler.
Ik wil gewoon een soort regenboog maken. Met javascript maak ik bijvoorbeeld 30 divs die ik 2x2 pixels groot maak en tegen elkaar aan zet.
Met javascript doe ik dan de css "rgb(rood, groen, blauw)"
het rood, groen en blauw kan 0 tot 255 zijn.
Dus het aantal kleuren die kunnen worden gemaakt is:
rood * groen * blauw = 255*255*255 = 16 581 375
Heel veel dus.
Daarom wil ik aan de zijkant een balkje waar je een kleur kiest, bijvoorbeeld rood.
Als je dan rood hebt gekozen kun je daaruit weer donkerder of lichter rood kiezen.
Javascript moet dus niet een paar miljoen divs gaan maken met elk een kleur.
Steeds hoeven er maar 30 te worden gemaakt in een bepaalde tint.

Mijn probleem is dat ik niet weet hoe ik de kleuren kan krijgen.
Ik zoek een soort formule of andere manier om ook paars te krijgen of geel.
Ik ging eerst met een loop de hoeveelheid rood laten oplopen, dan de hoeveelheid blauw, enz.
Maar je moet dus ook rood en blauw mengen ofzo.
Weet iemand hoe ik dit kan doen?
Gewijzigd op 15/06/2013 13:03:33 door Mark Hogeveen
 
PHP hulp

PHP hulp

19/04/2024 21:51:43
 
Erwin H

Erwin H

15/06/2013 13:10:54
Quote Anchor link
Binnen het RGB model is daar niet een eenvoudige formule voor. Check wikipedia http://en.wikipedia.org/wiki/HSL_and_HSV:
Quote:
Most televisions, computer displays, and projectors produce colors by combining red, green, and blue light in varying intensities – the so-called RGB additive primary colors. The resulting mixtures in RGB color space can reproduce a wide variety of colors (called a gamut); however, the relationship between the constituent amounts of red, green, and blue light and the resulting color is unintuitive, especially for inexperienced users, and for users familiar with subtractive color mixing of paints or traditional artists’ models based on tints and shades (fig. 4). Furthermore, neither additive nor subtractive color models define color relationships the same way the human eye does.[7]

For example, imagine we have an RGB display whose color is controlled by three sliders ranging from 0–255, one controlling the intensity of each of the red, green, and blue primaries. If we begin with a relatively colorful orange ?, with sRGB values R = 217, G = 118, B = 33, and want to reduce its colorfulness by half to a less saturated orange ?, we would need to drag the sliders to decrease R by 31, increase G by 24, and increase B by 59, as pictured below. Needless to say, these numbers seem mostly arbitrary.

Je zal dus over moeten stappen naar bijvoorbeeld HSL (hue, saturation, lightness) of HSV (hue, saturation, value). Dat is ook wat die colorpickers gebruiken. Meestal worden ook de RGB waardes vermeld omdat dat makkelijker te begrijpen is voor de meeste gebruikers, maar als je vanuit RGB gaat werken krijg je al snel kleuren die helemaal niet meer op elkaar lijken.

Zelf maken hierin lijkt misschien wel makkelijk, maar zonder gedegen kennis van kleuren en hoe je daar mee kunt werken is het vrij lastig. Beter dan om zo'n colorpicker te gebruiken. Er zijn er genoeg te vinden.
 
Mark Hogeveen

Mark Hogeveen

17/06/2013 18:15:08
Quote Anchor link
En als ik het toch gewoon in RGB doe? Dan krijg je dus het probleem dat het op het ene scherm andere kleuren worden dan op het andere scherm?
Dus rood wordt op het ene scherm iets donkerder/lichter dan op het andere scherm?
 
Erwin H

Erwin H

17/06/2013 18:41:10
Quote Anchor link
Nee, het gaat niet om kleurverschillen tussen schermen (dat krijg je wel door andere instellingen, maar dat heeft niets te maken met het kleursysteem dat je kiest). Het probleem is dat 30 tinten rood niet zo makkelijk te vinden zijn, in elk geval niet programmatisch. Neem een willekeurige kleur en ga dan een beetje heen en weer schuiven met de RGB waardes. Je zal zien dat de kleuren die je krijgt dan al snel niets meer met je startkleur te maken hebben.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/06/2013 19:00:47
Quote Anchor link
Harry hogeveen op 15/06/2013 13:01:52:
Dus het aantal kleuren die kunnen worden gemaakt is:
rood * groen * blauw = 255*255*255 = 16 581 375
Heel veel dus.


Mag ik je direct even corrigeren Harry?

van 0 t/m 255 zijn 256 mogelijkheden. 256 ^ 3 = 16777216.
 
Wouter J

Wouter J

17/06/2013 19:05:56
Quote Anchor link
Frank, harry is wel juist. Er zijn 255 mogelijkheden, het 256ste getal is namelijk 100 en dat is geen kleur meer. Je wilt 00 t/m ff en dat zijn er 255.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/06/2013 19:10:22
Quote Anchor link
Wouter van 00 t/m FF zijn er bij mij 256. (hoeveel is 16 * 16 ?)
als we wit en zwart geen kleur willen noemen dan zijn het er twee minder maar dat is een andere discussie
 
Wouter J

Wouter J

17/06/2013 19:11:34
Quote Anchor link
Nee, frank je hebt het nog niet helemaal door. Bekijk eens dit filmpje: http://net.tutsplus.com/tutorials/other/quick-tip-what-the-heck-is-a-hex-value-anyway/
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/06/2013 19:20:34
Quote Anchor link
Wouter,

filmpje gekeken. en het is precies zoals ik zeg.

ik geef je een ander voorbeeld. Op je telefoon heb je de cijfers 0 t/m 9. hoeveel toetsen zijn dat? 10.


Toevoeging op 17/06/2013 19:40:01:

Op http://en.wikipedia.org/wiki/RGB_color_model kun je het volgende lezen:

By using an appropriate combination of red, green, and blue intensities, many colors can be displayed. Current typical display adapters use up to 24-bits of information for each pixel: 8-bit per component multiplied by three components (see the Digital representations section below). With this system, 16,777,216 (256^3 or 2^24) discrete combinations of R, G and B values are allowed, providing millions of different (though not necessarily distinguishable) hue, saturation, and lightness shades.
Gewijzigd op 17/06/2013 19:41:21 door Frank Nietbelangrijk
 
Erwin H

Erwin H

17/06/2013 19:55:17
Quote Anchor link
Wouter J op 17/06/2013 19:05:56:
Frank, harry is wel juist. Er zijn 255 mogelijkheden, het 256ste getal is namelijk 100 en dat is geen kleur meer. Je wilt 00 t/m ff en dat zijn er 255.

Maar gelukkig zijn we geen Romeinen meer. Wij kennen wel de 0, of in dit geval, de 000. Van 000 t/m 255 zijn 256 mogelijkheden. Frank heeft gelijk wat dat betreft.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/06/2013 20:16:21
Quote Anchor link
Erwin H op 17/06/2013 19:55:17:
Maar gelukkig zijn we geen Romeinen meer.

Al hebben we nog wel een Obelix en Idefix hier :-)
Gewijzigd op 17/06/2013 20:17:33 door Frank Nietbelangrijk
 
Erwin H

Erwin H

17/06/2013 20:24:33
Quote Anchor link
Ok, ik zal mijn uitspraak aanpassen:
Quote:
Maar gelukkig zijn de meeste van ons geen Romeinen meer.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/06/2013 21:33:35
Quote Anchor link
Frank, waren de bijdehandjes in de aanbieding bij de Appie? ;-)
Btw, Idefix is een hond en bij mijn weten doen Obelix cs hun uiterste best om niet tot de Romeinen te behoren.

@Harry
Misschien is dit iets
 
Mark Hogeveen

Mark Hogeveen

18/06/2013 11:54:57
Quote Anchor link
Ik wil toch een beetje weten hoe het werkt.
En als ik het met HSL en HSV ga doen, moet er weer een browser worden gebruikt die dit in css ondersteunt.
Van dit soort dingen word ik echt chagrijnig:
http://www.browsersupport.net/CSS/hsl()
Gewijzigd op 18/06/2013 12:01:23 door Mark Hogeveen
 
Wouter J

Wouter J

18/06/2013 11:58:11
Quote Anchor link
gelukkig doen 87% van de browsers dat...

Het is gewoon heel simpel, rgb is hier niet voor gemaakt en kan hier dus niet voor gebruikt worden. Zelfde is alsof je een spijker met een schroevendraaier in de muur wilt krijgen, kan niet, gaat niet en doet niemand.
 
Mark Hogeveen

Mark Hogeveen

18/06/2013 12:00:20
Quote Anchor link
Okee
In hsl / hsv dus.
 
Erwin H

Erwin H

18/06/2013 15:10:41
Quote Anchor link
Harry hogeveen op 18/06/2013 11:54:57:
En als ik het met HSL en HSV ga doen, moet er weer een browser worden gebruikt die dit in css ondersteunt.

Of je rekent de HSL/HSV waardes gewoon om naar RGB als je de kleuren wilt tonen. Daar zijn gewoon formules voor (zie mijn eerdere wikipedia link).
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/06/2013 15:31:49
Quote Anchor link
Of nog makkelijker met een kant en klaar javascript: http://snipplr.com/view/14590
 
Kris Peeters

Kris Peeters

18/06/2013 16:23:35
Quote Anchor link
Zeg, ik weet niet of dit nog relevant is, ik zeg het toch maar.

Je kan inderdaad geen duizenden divs maken van 2 op 2 px (ik zou het toch afraden).
Je kan bv. wel 360 divs naast mekaar leggen, met de 360° hue. Dat geeft dus een strook van rood, oranje, geel, groen,...


Ik heb lang geleden nog een color picker gemaakt.

- De basis daarvan was een transparante .png
Bovenaan helemaal transparant; onderaan zwart, met geleidelijke slope. een aantal seconden werk in photoshop.
Een andere versie was onderaan zwart, boven-links wit, boven-rechts transparant.

Zet die png bovenop die 360 divs; dan krijg je het zelfde beeld als dat gekleurde vierkant van in jouw eerste post (die link). Horizontaal vang je de kleur op (hue), verticaal de lichtsterkte (value).
Voor de saturation moet je nog iets apart maken. 2 dimensies, 2 waarden.
Afhankelijk van de actieve radio button (h, b of s), zie je ongeveer het zelfde als wat ik had.


Geeft dat je inspiratie?

---

Hier wat code waarmee je die regenboog-strook kan maken. Ongetwijfeld niet de meest efficiënte code, maar het vertelt je iets over hoe "hue" werkt.

hsv2rgb en rgb2hsv converters kunnen hier zeer nuttig zijn. Je vindt die wel (zie bv. de post boven deze)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!doctype html>
<html>
  <head>
    <style>
      .pixel {
        width: 1px;
        height: 100px;
        float: left;
      }
    </style>
  </head>
  <body>
    <div id="colors"></div>
    <script>
      window.onload = function() {
        var content = '';
        for (var i=0; i<360; i++) {
          content += '<div class="pixel" style="background-color: ' + h2color(i) + ';"></div>'
        }
        document.getElementById('colors').innerHTML = content;
      }
    
      /*
       @param h (0 -> 360 degrees).  0-> red; 30-> orange; 60-> yelow; ...
      */
      function h2color(h) {
        var state = Math.floor(h / 60);             //  0 to 60 : state 0 - color goes from #FF0000 to #FFFF00 ;  60 to 120 : state 1 - color goes from #FFFF00 to #00FF00; etc.
        var val = Math.floor(255 * (h % 60) / 60);  // within the state, are we at the start of the state or at the end? example: 61, is at the start; 119 is at the end
        switch(state) {
          case 0: return '#ff' + decimalToHex(val, 2) + '00'; break;
          case 1: return '#' + decimalToHex(255 - val, 2) + 'ff00'; break;  // in odd states, the variable part decreases from 255 to 0
          case 2: return '#00ff' + decimalToHex(val, 2) + ''; break;
          case 3: return '#00' + decimalToHex(255 - val, 2) + 'ff'; break;
          case 4: return '#' + decimalToHex(val, 2) + '00ff'; break;
          case 5: return '#ff00' + decimalToHex(255 - val, 2) + ''; break;
          default: var a = 0;
        }
      }
      /**
      *  vooral nodig om de waarde in 2 karakters terug te geven, als de waarde "f" of kleiner is
      */
      function decimalToHex(d, padding) {
        var hex = Number(d).toString(16);
        padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;
        while (hex.length < padding) {
          hex = "0" + hex;
        }
        return hex;
      }
    </script>
  </body>
</html>
Gewijzigd op 18/06/2013 16:32:46 door Kris Peeters
 
Mark Hogeveen

Mark Hogeveen

18/06/2013 21:14:22
Quote Anchor link
Dit is wat ik nu ervan heb gemaakt. Het hangt in elkaar van snippets die ik op het internet heb gezocht, maar het is een aardige widget geworden.
(Met dank aan het stukje code van Kris Peters)
Live demo: http://htmlpaste.com/f767bad51984b17322f1fbc7106fbc49d7019b6f
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<!doctype html>
<html>
<head>
<style>
.pixel {
width: 1px;
height: 100px;
float: left;
}
.color-chooser {
width: 360px;
border: 1px solid gray;
border-radius: 4px;
padding: 10px;
}
.color-chooser .color-pointer {
height: 10px;
}
.color-chooser .color-pointer div {
width: 0px;
border-top: 8px solid black;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-bottom: 0px solid transparent;
position: relative;
left: -4px;
}
.color-chooser #colors {
height: 100px;
cursor: crosshair;
}
.color-chooser-fields {
width: 200px;
background-color: #f2f2f2;
border: 1px solid #d3d3d3;
margin: 5px 0px 0px 0px;
padding: 5px;
float: left;
}
.color-chooser label {
display: block;
padding: 2px 0px 2px 0px;
}
.color-chooser label input {
width: 140px;
float: right;
}
.color-editing {
float: left;
margin: 5px 0px 0px 5px;
}
#current-color {
width: 100px;
height: 30px;
}
#previous-color {
width: 100px;
height: 30px;
}
.clearfix {
clear: both;
}
</style>
</head>
<body>
<div class="color-chooser" id="color-chooser">
    <div class="color-pointer"><div id="color-arrow"></div></div>
    <div id="colors"></div>
    <div class="color-chooser-fields">
        <label>Hex:<input type="text" /></label>
        <label>Rood:<input type="text" /></label>
        <label>Groen:<input type="text" /></label>
        <label>Blauw:<input type="text" /></label>
        <label>Tint:<input type="text" /></label>
    </div>
    <div class="color-editing">
        <div id="current-color" title="Gekozen kleur">
        </div>
        <div id="previous-color" title="Vorige kleur">
        </div>
    </div>
    <div class="clearfix"></div>
</div>
<script>
    window.onload = function() {
        var colors = document.getElementById('colors');
        var content = '';
        for(var i=0; i<360; i++) {
            px = document.createElement("div");
            px.className = "pixel";
            px.style.backgroundColor = h2color(i);
            (function(index) { px.onclick = function() {
                selectColor(this, index);
            }})(i);
            colors.appendChild(px);
        }
    }
    
    /*
    @param h (0 -> 360 degrees).  0-> red; 30-> orange; 60-> yelow; ...
    */
    function h2color(h) {
        var state = Math.floor(h / 60);             //  0 to 60 : state 0 - color goes from #FF0000 to #FFFF00 ;  60 to 120 : state 1 - color goes from #FFFF00 to #00FF00; etc.
        var val = Math.floor(255 * (h % 60) / 60);  // within the state, are we at the start of the state or at the end? example: 61, is at the start; 119 is at the end
        switch(state) {
            case 0: return '#ff' + decimalToHex(val, 2) + '00'; break;
            case 1: return '#' + decimalToHex(255 - val, 2) + 'ff00'; break;  // in odd states, the variable part decreases from 255 to 0
            case 2: return '#00ff' + decimalToHex(val, 2) + ''; break;
            case 3: return '#00' + decimalToHex(255 - val, 2) + 'ff'; break;
            case 4: return '#' + decimalToHex(val, 2) + '00ff'; break;
            case 5: return '#ff00' + decimalToHex(255 - val, 2) + ''; break;
            default: var a = 0;
        }
    }
    /**
    *  vooral nodig om de waarde in 2 karakters terug te geven, als de waarde "f" of kleiner is
    */
    function decimalToHex(d, padding) {
        var hex = Number(d).toString(16);
        padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;
        while (hex.length < padding) {
            hex = "0" + hex;
        }
        return hex;
    }
    function selectColor(clickedPx, index) {
        bg = clickedPx.style.backgroundColor;
        inputs = document.getElementById("color-chooser").getElementsByTagName("input");
        inputs[0].value = "#" + rgbToHex(bg);
        bg = bg.match(/[0-9]{1,3}/g);
        inputs[1].value = bg[0];
        inputs[2].value = bg[1];
        inputs[3].value = bg[2];
        inputs[4].value = rgbToHsl(bg[0], bg[1], bg[2])[0] * 360;
        
        document.getElementById("color-arrow").style.left = index - 4 + "px"; // -4 for the half arrow width
        document.getElementById("previous-color").style.backgroundColor = document.getElementById("current-color").style.backgroundColor;
        document.getElementById("current-color").style.backgroundColor = clickedPx.style.backgroundColor;
    }
    function rgbToHex(c) {
        var m = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/.exec(c);
        return m ? (1 << 24 | m[1] << 16 | m[2] << 8 | m[3]).toString(16).substr(1) : c;
    }
    function rgbToHsl(r, g, b){
        r /= 255, g /= 255, b /= 255;
        var max = Math.max(r, g, b), min = Math.min(r, g, b);
        var h, s, l = (max + min) / 2;

        if(max == min){
            h = s = 0; // achromatic
        }else{
            var d = max - min;
            s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
            switch(max){
                case r: h = (g - b) / d + (g < b ? 6 : 0); break;
                case g: h = (b - r) / d + 2; break;
                case b: h = (r - g) / d + 4; break;
            }
            h /= 6;
        }
        return [h, s, l];
    }
</script>
</body>
</html>
Gewijzigd op 18/06/2013 21:16:03 door Mark Hogeveen
 
Wouter J

Wouter J

18/06/2013 21:15:57
Quote Anchor link
Je wilt iets zelf maken omdat je er iets van wilt leren en vervolgens maak je een script die uit losse copy/past scriptje samenhangt, wat gaat er mis?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.