Reto #5 Azul oscuro casi negro
#0000FF oscuro casi #000000 - Paso de RGB a hexadecimal
by didacticode
HTML
<!DOCTYPE html>
<html lang="es">
<head>
<title>#0000FF oscuro casi #000000 - Paso de RGB a hexadecimal</title>
<meta charset="utf-8"/>
<style>
body{
background: rgba(85,52,247,1);
background: -moz-linear-gradient(left, rgba(85,52,247,1) 0%, rgba(0,0,0,1) 100%);
background: -webkit-gradient(left top, right top, color-stop(0%, rgba(85,52,247,1)), color-stop(100%, rgba(0,0,0,1)));
background: -webkit-linear-gradient(left, rgba(85,52,247,1) 0%, rgba(0,0,0,1) 100%);
background: -o-linear-gradient(left, rgba(85,52,247,1) 0%, rgba(0,0,0,1) 100%);
background: -ms-linear-gradient(left, rgba(85,52,247,1) 0%, rgba(0,0,0,1) 100%);
background: linear-gradient(to right, rgba(85,52,247,1) 0%, rgba(0,0,0,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#5534f7', endColorstr='#000000', GradientType=1 );
}
h1 {
color:white;
}
</style>
<script src="Reto05_AzulOscuroCasiNegro.js"></script>
</head>
<body>
</body>
JavaScript
// ALGORITO BÁSICO SIN FUNCIONES DE JAVASCRIPT
function rgb (r, g, b){
return rgbHexadecimalClasica(r)+rgbHexadecimalClasica(g)+rgbHexadecimalClasica(b);
}
//Función clásica de transformación de hexadecimal a decimal
function rgbHexadecimalClasica(decimal){
const caracteresHexadecimales = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];
let hexadecimal = "";
if (decimal<0) hexadecimal = "00";
else if (decimal>255) hexadecimal = "FF";
else {
let resto = 0;
//Solo entramos aquí si el decimal es mayor a 16 porque hay que hacer la división
while (decimal>=16){
// Con el resto sacamos la última letra del código (será un resto del 0 al 15)
resto = decimal % 16;
// La primera vez hexadecimal está vacío
hexadecimal = caracteresHexadecimales[resto] + hexadecimal; //Agregamos a la izquierda
// El decimal será ahora la división entera de lo que teníamos entre 16
decimal = parseInt(decimal / 16);
} // Si salimos del bucle es que tenemos un número inferior a 16: lo pasamos a hexadecimal
hexadecimal = caracteresHexadecimales[decimal] + hexadecimal;
if (hexadecimal.length===1) hexadecimal="0"+hexadecimal;
}
return hexadecimal;
}
function rgb2 (r, g, b){
return rgbHexadecimal(r)+rgbHexadecimal(g)+rgbHexadecimal(b);
}
/*function rgbHexadecimal (decimal){
let hexadecimal = "";
if (decimal<0) hexadecimal = "00";
else if (decimal>255) hexadecimal = "FF";
else {
// Para asegurarnos que trabajamos con un número, utilizamos Number(decimal)
//Podemos utilizar un if para saber si tenemos solo 1 caracter
//o bien meter siempre un "0" y reducir la cadena a dos caracteres con slice
hexadecimal = ("0"+Number(decimal).toString(16)).slice(-2).toUpperCase();
}
return hexadecimal;
}*/
function rgbHexadecimal (decimal){
// Comprobamos el número menor entre el decimal y el 255, y el mayor entre ese y el 0
// Así evitamos también que introduzcan valores erróneos (menor...