const dvRed=29.9, dvGreen=58.7; //defaults
var dvs=[dvRed, dvRed+dvGreen];
$(document).ready( function(){ //setup slider
$('#slider').slider({
min: 0,
max: 100,
step: 0.1,
values: dvs,
range: true,
slide: function(event, ui) {
$.each(ui.values, function(i, v) {
updateSlider(); //update vals on change
});
}
});
updateSlider(); //initial update of vals
});
function updateSlider(){
//get slider values
var R=Math.round($('#slider').slider('values')[0]*10)/10,
B=Math.round((100-$('#slider').slider('values')[1])*10)/10,
G=Math.round(((100-(R+B)))*10)/10;
//set slider track to 3 colors
$('.ui-slider').css('background','linear-gradient(90deg, red 0% '+R+'%, green '+R+'% '+(G+R)+'%, blue '+(G+R)+'% 100%');
//center labels between handles
$('#val1').html(R+'%').css('left',R/2+'%');
$('#val2').html(G+'%').css('left',R+(G/2)+'%');
$('#val3').html(B+'%').css('left',R+G+(B/2)+'%');
//set body background color
var bg='rgb('+R*2.55+','+G*2.55+','+B*2.55+')';
$(document.body).css('background', bg);
}
body{ font-family: Roboto, Helvetica, Arial, sans-serif; }
#slider_cont{ position:relative; width:60vw; margin:5vh 20vw 10vh; }
#slider{ width:100%; }
#slider_vals{ width:100%; }
#val1{ position:absolute; left:33%; color:red; }
#val2{ position:absolute; left:50%; color:green; }
#val3{ position:absolute; left:66%; color:blue; }
.ui-slider-range { background:transparent !important;}
.ui-slider{background-image:linear-gradient(90deg, red 0 40%, green 40% 60%, blue 60% 100%);}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" >
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div id='slider_cont'>
<div id='slider'></div>
<div id='slider_vals'>
<div id='val1'></div>
<div id='val2'></div>
<div id='val3'></div>
</div>
</div>
<div id='colors'></div>