Výběr barvy
rgb(255,0,255)
respektive #ff00ff
Cíl: mít tři slidery reprezentující červenou, zelenou a modrou složku barvy. Při změně (libovolné r g b hodnoty) chci výslednou barvu zobrazit uživateli.
<input type="range" min="0" max="255" value="50" class="slider" id="redValue"> <input type="range" min="0" max="255" value="50" class="slider" id="greenValue"> <input type="range" min="0" max="255" value="50" class="slider" id="blueValue">
Postup
1) ze šablony vytvoř stránku, na které bude <div id="color"></div>
- ten nebude vidět
2) zobraz ten div jako čtverec ve stránce, třeba s použitím následujícího css: #color {width:100px; height:100px; background-color: rgb(255,0,0)}
3) nastav divu background-color pomocí javascriptu. Pozor, pomlčka se mění na camelCase:
document.getElementById('color').style.backgroundColor='rgb(0,255,0)'
4) vytvoř funkci zmenBarvu()
do které dej kód co mění barvu divu - z předchozího bodu
5) změnu barvy navaž na stisknutí tlačítka <button onclick="zmenBarvu()">
6) uvniř funkce zmenBarvu
vytvoř tři proměnné obsahující číslo a jejich hodnoty pošli do řetězce specifikujícího barvu:
const red = 120 const green = 200 const blue = 0 document.getElementById('color').style.backgroundColor=`rgb(${red},${green},${blue})`
(s použitím Šablon hodnot )
7) do html vlož 3 inputy, nazvi je red, green, blue - uživatel tam bude psát čísla, tak můžeš použít <input type="number" id="red">
8) uvnitř svojí funkce zmenBarvu()
hodnoty red, green a blue načti z hodnot příslušných inputů:
const red = parseInt(document.getElementById('red').value)
9) přidej kód, který při změně hodnoty inputu zavolá funkci zmenBarvu (<input type="number" id="red" oninput="zmenBarvu()">
)
10) Změň vstupy z type="number"
na type="range"
a přidej atributy min="0" max="255"
Řešení
<!DOCTYPE html> <html lang="cs"> <head> <meta charset="utf-8" /> <title>Barvy</title> <style> /* Vychozi CSS stylovani prijde sem*/ body {background-color: rgb(200,200,200);} body { margin:0; } div#svetlo { background-color: rgb(255, 100, 255); border: 10px solid black; width: 100px; height: 100px; } /* */ </style> <script> /* <![CDATA[ */ /* Sem prijde javascript kod */ console.log('test') function zmenNeco(){ const red = parseInt(document.getElementById('redValue').value) const green = parseInt(document.getElementById('greenValue').value) const blue = parseInt(document.getElementById('blueValue').value) console.log(red+green+blue) document.getElementById('svetlo').style. backgroundColor=`rgb(${red}, ${green}, ${blue})` "rgb(" + red + ", " + green + ", " + blue + ")" } /* ]]> */ </script> </head> <body> <div id="svetlo"></div> <h2>Barvy</h2> <input type="range" min="0" max="255" value="50" class="slider" id="redValue" oninput="zmenNeco()" > <input type="range" min="0" max="255" value="50" class="slider" id="greenValue" oninput="zmenNeco()" > <input type="range" min="0" max="255" value="50" class="slider" id="blueValue" oninput="zmenNeco()" > </body> </html>