Cuando miré esta pregunta, necesitaba algo simple. Ya hay una serie de respuestas marco sobre cómo hacer esto, pero a veces es más ligero y flexible solo para crear el suyo. Por supuesto, obtienes una cierta cantidad de forma gratuita con un marco (y a menudo es la opción correcta si es una buena opción), pero luego tienes que preocuparte por la compatibilidad del marco, soporte y excavación en las profundidades del marco para ir fuera de sus fronteras
Aquí hay un control deslizante simple solo de javascript. Básicamente es un img para el control deslizante, un img para el botón y una devolución de llamada con un porcentaje de progreso. No es un control deslizante que canta y baila, sino algo simple de construir.
The demo
El HTML
<div id='bb_sliderContainer' ondragstart="return false;" ondrop="return false;">
<img id='bb_slider' src='slider.png'/>
<img id='bb_sliderButton' src='sliderbutton.png'/>
</div>
El guión
Colocar en un archivo javascript:
(function(bb,undefined){
bb.Slider = function(buttonCssId,sliderCssId,initialPercentage,progressUpdate)
{
var halfButtonWidth = 5;
var sliderMoving = false;
var buttonElement = document.getElementById(buttonCssId);
var sliderElement = document.getElementById(sliderCssId);
var length = sliderElement.clientWidth;
var leftPos = 0;
var rightPos = leftPos + length;
length = rightPos - leftPos;
if(initialPercentage)
{
var buttonPos = leftPos + initialPercentage/100 * length;
buttonElement.style.left = buttonPos - halfButtonWidth + 'px';
}
buttonElement.addEventListener('mousedown', function(){
sliderMoving = true;
});
document.addEventListener('mousemove', function(event){
if(sliderMoving == true)
{
var rect = sliderElement.getBoundingClientRect();
var mouseX = event.clientX - rect.left;
var prop = mouseX/length;
if(prop < 0)
{
prop = 0;
mouseX = 0;
}
if(prop > 1)
{
prop = 1;
mouseX = length;
}
buttonElement.style.left = leftPos + prop * length - halfButtonWidth + 'px';
progressUpdate(prop * 100);
}
});
document.addEventListener('mouseup', function(){
sliderMoving = false;
});
}
}(window.bb = window.bb || {}));
Ejemplo utilizar
HTML:
<img src='space.png' style='width:50%;position:relative;top:20px' id='bb_sliderSubject'>
Javascript:
function sliderUpdate(percentage)
{
var sliderSubject = document.getElementById('bb_sliderSubject');
sliderSubject.style.width = percentage + '%';
}
window.onload=function()
{
var slider = new bb.Slider('bb_sliderButton','bb_slider',50,sliderUpdate);
}
Con una combinación de JavaScript? A través de CSS, puede hacer que la entrada no se muestre y hacer que wathever se adapte: antes y después del elemento. A continuación, a través de javascript maneja cómo todo eso se interrelaciona. – Serge
Aquí hay un excelente artículo sobre este tema: http://www.hongkiat.com/blog/html5-range-slider-style/. – Annie
Sería útil si dejara de aceptar la respuesta actualmente aceptada (y quizás acepte otra que le guste). Tener una respuesta que diga "ni siquiera intentes esto, la tecnología es demasiado nueva" de * 5 años atrás * todavía fijada en la parte superior de la lista de respuestas ayuda a nadie. –