Skip to content

Instantly share code, notes, and snippets.

@phongjalvn
Created July 7, 2012 21:30
Show Gist options
  • Save phongjalvn/3068144 to your computer and use it in GitHub Desktop.
Save phongjalvn/3068144 to your computer and use it in GitHub Desktop.
Spectrum gen
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CodePen &middot; A Pen by phongjalvn</title>
<style>
body{font:12px/16px sans-serif;}
label{display:block; width:120px; margin:30px 0;}
input[type="range"]{float:left;}
.wrapper{background:rgba(255,255,255,0.8); overflow:hidden; width:150px;}
</style>
<style>
#codepen-footer, #codepen-footer * {
-webkit-box-sizing: border-box !important;
-moz-box-sizing: border-box !important;
box-sizing: border-box !important;
}
#codepen-footer {
display: block !important;
position: fixed !important;
bottom: 0 !important;
left: 0 !important;
width: 100% !important;
padding: 0 10px !important;
margin: 0 !important;
height: 30px !important;
line-height: 30px !important;
font-size: 12px !important;
color: #eeeeee !important;
background-color: #505050 !important;
text-align: left !important;
background: -webkit-linear-gradient(top, #505050, #383838) !important;
background: -moz-linear-gradient(top, #505050, #383838) !important;
background: -ms-linear-gradient(top, #505050, #383838) !important;
background: -o-linear-gradient(top, #505050, #383838) !important;
border-top: 1px solid black !important;
border-bottom: 1px solid black !important;
border-radius: 0 !important;
border-image: none !important;
box-shadow: inset 0 1px 0 #6e6e6e, 0 2px 2px rgba(0, 0, 0, 0.4) !important;
z-index: 300 !important;
font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, sans-serif !important;
letter-spacing: 0 !important;
word-spacing: 0 !important;
}
#codepen-footer a {
color: #a7a7a7 !important;
text-decoration: none !important;
}
#codepen-footer a:hover {
color: white !important;
}
</style>
<script>
// Kill alerts, confirmations and prompts
window.alert = function(){};
window.confirm = function(){};
window.prompt = function(){};
window.open = function(){};
window.print = function(){};
</script>
</head>
<body>
<div class="wrapper">
<label id="huemin">Hue Min: <output>0</output>&deg;<input type="range" min="0" max="360" value="0" /></label>
<label id="huemax">Hue Max: <output>360</output>&deg;<input type="range" min="0" max="360" value="360" /></label>
<label id="satmin">Saturation Min: <output>0</output>%<input type="range" min="0" max="100" value="0" /></label>
<label id="satmax">Saturation Max: <output>100</output>%<input type="range" min="0" max="100" value="100" /></label>
<label id="litmin">Lightness Min: <output>0</output>%<input type="range" min="0" max="100" value="0" /></label>
<label id="litmax">Lightness Max: <output>100</output>%<input type="range" min="0" max="100" value="100" /></label>
<label id="opcmin">Opacity Min: <output>0</output>%<input type="range" min="0" max="100" value="0" /></label>
<label id="opcmax">Opacity Max: <output>100</output>%<input type="range" min="0" max="100" value="100" /></label>
<label id="tapesd">Tapes: <output>100</output><input type="range" min="0" max="100" value="100" /></label>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
(function() {
function makeHsla(hmin, hmax, smin, smax, lmin, lmax, amin, amax){
var h = Math.floor(Math.random()*((hmax - hmin)||360))+ (hmin || 0),
s = Math.floor(Math.random()*((smax - smin) || 100))+ (smin || 0) + '%',
l = Math.floor(Math.random()*((lmax - lmin) || 100))+ (lmin || 0) + '%',
a = (Math.floor(Math.random()*((amax - smin)|| 100))+ (amin || 0))/100;
return "hsla(" + [h,s,l,a].join(',') + ")";
}
function makeSpectrum(){
var
hmin = parseInt($('#huemin input').val()),
hmax = parseInt($('#huemax input').val()),
smin = parseInt($('#satmin input').val()),
smax = parseInt($('#satmax input').val()),
lmin = parseInt($('#litmin input').val()),
lmax = parseInt($('#litmax input').val()),
amin = parseInt($('#opcmin input').val()),
amax = parseInt($('#opcmax input').val()),
tapes = parseInt($('#tapesd input').val()),
result = [];
for(var i=0; i<tapes; i++){
result.push(makeHsla(hmin, hmax, smin, smax, lmin, lmax, amin, amax) + i + 'px');
}
return '-webkit-repeating-linear-gradient(' + result.join(', ') + ')';
}
$('input[type="range"]').bind('change', function(){
$(this).parent().find('output').val( $(this).val() );
$('body').css('background', makeSpectrum());
});
document.body.style.backgroundColor = makeHsla();
})();
</script>
<div id="codepen-footer">
<a style="color: #f73535 !important;" href="https://codepen.wufoo.com/forms/m7x3r3/def/field14=" onclick="window.open(this.href, null, 'height=517, width=680, toolbar=0, location=0, status=1, scrollbars=1, resizable=1'); return false">Report Abuse</a>
&nbsp;
<a href="/phongjalvn/pen/2/2">Edit this Pen</a>
</div>
</body>
</html>
function makeHsla(hmin, hmax, smin, smax, lmin, lmax, amin, amax){
var h = Math.floor(Math.random()*((hmax - hmin)||360))+ (hmin || 0),
s = Math.floor(Math.random()*((smax - smin) || 100))+ (smin || 0) + '%',
l = Math.floor(Math.random()*((lmax - lmin) || 100))+ (lmin || 0) + '%',
a = (Math.floor(Math.random()*((amax - smin)|| 100))+ (amin || 0))/100;
return "hsla(" + [h,s,l,a].join(',') + ")";
}
function makeSpectrum(){
var
hmin = parseInt($('#huemin input').val()),
hmax = parseInt($('#huemax input').val()),
smin = parseInt($('#satmin input').val()),
smax = parseInt($('#satmax input').val()),
lmin = parseInt($('#litmin input').val()),
lmax = parseInt($('#litmax input').val()),
amin = parseInt($('#opcmin input').val()),
amax = parseInt($('#opcmax input').val()),
tapes = parseInt($('#tapesd input').val()),
result = [];
for(var i=0; i<tapes; i++){
result.push(makeHsla(hmin, hmax, smin, smax, lmin, lmax, amin, amax) + i + 'px');
}
return '-webkit-repeating-linear-gradient(' + result.join(', ') + ')';
}
$('input[type="range"]').bind('change', function(){
$(this).parent().find('output').val( $(this).val() );
$('body').css('background', makeSpectrum());
});
document.body.style.backgroundColor = makeHsla();
<div class="wrapper">
<label id="huemin">Hue Min: <output>0</output>&deg;<input type="range" min="0" max="360" value="0" /></label>
<label id="huemax">Hue Max: <output>360</output>&deg;<input type="range" min="0" max="360" value="360" /></label>
<label id="satmin">Saturation Min: <output>0</output>%<input type="range" min="0" max="100" value="0" /></label>
<label id="satmax">Saturation Max: <output>100</output>%<input type="range" min="0" max="100" value="100" /></label>
<label id="litmin">Lightness Min: <output>0</output>%<input type="range" min="0" max="100" value="0" /></label>
<label id="litmax">Lightness Max: <output>100</output>%<input type="range" min="0" max="100" value="100" /></label>
<label id="opcmin">Opacity Min: <output>0</output>%<input type="range" min="0" max="100" value="0" /></label>
<label id="opcmax">Opacity Max: <output>100</output>%<input type="range" min="0" max="100" value="100" /></label>
<label id="tapesd">Tapes: <output>100</output><input type="range" min="0" max="100" value="100" /></label>
</div>
body{font:12px/16px sans-serif;}
label{display:block; width:120px; margin:30px 0;}
input[type="range"]{float:left;}
.wrapper{background:rgba(255,255,255,0.8); overflow:hidden; width:150px;}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment