Foros del Web » Programando para Internet » Javascript »

Barra de volumen

Estas en el tema de Barra de volumen en el foro de Javascript en Foros del Web. Hola como puedo crear una barra de volumen tal como se muestra en esta imagen supongamos que que tenga un rango 10 puntos, entonces por ...
  #1 (permalink)  
Antiguo 04/09/2012, 14:17
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Barra de volumen

Hola como puedo crear una barra de volumen tal como se muestra en esta imagen



supongamos que que tenga un rango 10 puntos, entonces por código si subo la zona verde va aumentando, se entiende?, no hace falta que se deslice con el mouse, solo lo quisiera cambiar por código.

intente poner dos div superpuestos con una imagen de fondo(uno con una imagen gris y otro con una imagen verde) pero si achico el superior, la imagen se ensancha también intente con la propiedad background-position pero no puedo hacerlo.

como lo harían ustedes.

disculpen si esto es mas css o html que javascript pero creo que pertenece a este foro
__________________
www.leandroascierto.com
  #2 (permalink)  
Antiguo 04/09/2012, 14:29
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Barra de volumen

Mas o menos quedras esto

http://media02.hongkiat.com/jquery-u...emo/index.html
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 04/09/2012, 16:31
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Respuesta: Barra de volumen

Hola, muchas gracias Dradi7 pero en realidad lo que busco es algo mas sensillo, pense tambien la idea de usar un sprite de imagenes pero para darte una idea el tamaño real es como de la imagen que puse antes osea es "grande" y si ago un sprite de la secuensia seria una imagen muy grande, seguramente hay una opcion mejor.

alguien tiene otra sugerencia?

saludos.
__________________
www.leandroascierto.com
  #4 (permalink)  
Antiguo 04/09/2012, 18:33
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: Barra de volumen

Me a parecido muy interesante el asunto y se me ocurrio que se puede hacer con dos <div> superpuestos y dos imagenes de fondo para estos. El <div> que esté abajo tendrá color gris de fondo y utilizará como imagen de fondo un rectangulo color verde del mismo tamaño que la barra completa, el <div> que estará encima sólo utulizará una imagen de fondo dividida diagonalmente por la mitad, una mitad será transparente y la otra tendra el mismo color de fondo de la página o del elemento contenedor de la barra. Lo importante es posicionar la image de fondo color verde inicialmente fuera, por debajo de <div> inferior e ir subiendola modificando el atributo backgroundPosition cuando se requiera, dejo un código que realiza el aumento de la barra cada segundo despues de cargarse la página.
Código Javascript:
Ver original
  1. <script>
  2. var contador= 400;
  3. function aumentar()
  4. {
  5.     var barra=document.getElementById('abajo');
  6.     if(contador<=0)
  7.         contador= 400;
  8.     else
  9.         contador-= 40;
  10.     barra.style.backgroundPosition= '0px ' +contador+ 'px';
  11. }
  12. </script>
  13. <style>
  14. #abajo {
  15. width: 150px;
  16. height: 400px;
  17. padding: 0px;
  18. background-color: #999999;
  19. background-image: url('verde.png');
  20. background-repeat: no-repeat;
  21. background-position: 0px 400px;
  22. }
  23. #arriba {
  24. width: 100%;
  25. height: 100%;
  26. padding: 0px;
  27. background-image: url('blanco.gif');
  28. }
  29. </style>
  30.  
  31. <body onload="setInterval('aumentar()', 1000)">
  32. <div id="abajo">
  33. <div id="arriba"></div>
  34. </div>
  35. </body>

Se puede ver en funcionamiento en esta página:
http://galeon.com/chiforimpula/barra.html

P.D. no estoy seguro si poner esa dirección está permitido, si no es así, agradeceré que alguien edite el mensaje y la elimine.

Última edición por lubtufano; 04/09/2012 a las 18:40
  #5 (permalink)  
Antiguo 04/09/2012, 20:58
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Barra de volumen

podés usar algo asi
http://foros.emprear.com/html5/audio...o-html5-v.html

Requeriría algunas modificaciones para darle la estética necesaria

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 05/09/2012, 05:32
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Respuesta: Barra de volumen

Muy bueno lubtufano de lujo!, muchas gracias a todos por sus respuestas.
__________________
www.leandroascierto.com
  #7 (permalink)  
Antiguo 23/09/2012, 13:13
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Barra de volumen

No sé si voy a aportar algo útil. Pero desde que leí el tema me quedé pensando en darle una vuelta más al asunto, y terminé haciendo otra versión.

Antes de la introducción al ejemplo, quería comentar que el uso de una imagen tiene la ventaja de que permite el mapeo, y eventos onmouseover, onclick, ondragstart, ... a cada una de las áreas. Eso facilita usarlo no sólo como "gráfico" sino también como control, tal como propuso emprear.

El detalle de tu método, lubtufano, es justamente que está hecho con una imagen, que hay que agregarla. No es grave, porque el gráfico de volumen no es nativo de ningún navegador y es obvio que hay que agregarlo por nuestra cuenta; pero como las imágenes son rectangulares, y necesitamos el "triángulo" transparente como "ventana" para ver la animación, nos pasa que la otra mitad debe ser del color del fondo para que termine disimulada.
Y si el fondo tiene diseño, o es una barra flotante ya no nos sirve. Hay que inventar otra cosa.

Quise bajar dos pájaros de un hondazo, y preparé un ejemplo que no trae imágenes, y permite que la mitad que no se usa quede transparente. No sé en cuántos navegadores funcionará, pero es cuestión de probar. (Descarté canvas, VML y SVG porque ya sabemos que no son totalmente compatibles.)

Código:
<!DOCTYPE html>
<html lang="es-ar">
<head>
<meta charset="utf-8">
<meta http-equiv="msthemecompatible" content="no" >
<title></title>

<style type="text/css">
	body {background-color: transparent; 
background-image: url('http://imageshack.us/a/img263/8876/lamp1cf6.gif'); 
background-attachment: fixed; }

	h1 {font: 900 250%/270% cursive; 
background-color: rgba(50, 0, 0, .65); 
text-align: center; 
color: red; 
text-decoration: underline; }

#barra {width: 100px; 
height: 400px; 
position: relative; 
	margin-left: 100px; }

#pista, #nivel {width: 100px; 
height: 400px; 
position: absolute; 
top: 0; 
left: 0; 
-webkit-box-sizing:border-box; 
-moz-box-sizing:border-box; 
-o-box-sizing:border-box; 
-ms-box-sizing:border-box; 
box-sizing:border-box; 
overflow: hidden; 
border-color: silver transparent transparent silver; 
border-style: solid; 
border-width: 200px 50px; }

#nivel {width: 50px; 
height: 200px; 
top: 200px; 
left: 0; 
border-color: lime transparent transparent lime; 
border-width: 100px 25px; }

	#control1a {background-color: scrollbar; 
border: 2px outset; 
margin-left: 150px; 
color: black; }


#control2a {height: 30px;
width: 200px;
background-color: transparent;
overflow: auto;
	margin-left: 150px; 
	margin-bottom: 50%; }

#control2b {height: 1px;
width: 2200px;
background-color: transparent;}
</style>

<script type="text/javascript">
var alto = 400; /*alto de la barra*/
var ancho = 100; /*ancho de la barra*/

var bravo = alto/2;
var charly = ancho/2;

function cambia(T) {
var alfa = (isNaN(T.value))? T.scrollLeft/2000 : T.value/100 ; 

document.getElementById("nivel").style.top = alto - (alto*alfa) + "px";

document.getElementById("nivel").style.width = ancho*alfa + "px";

document.getElementById("nivel").style.borderWidth = bravo*alfa + "px " + charly*alfa +"px";

document.getElementById("nivel").style.height = alto*alfa + "px";

	document.title = parseInt(alfa*10);
}

onload = function(){
document.getElementById("control2a").scrollLeft = 1000;
	document.body.style.backgroundColor = 
"#" + ((Math.floor(Math.random()*4096)+4095).toString(16)).substring(1); 
}
</script>

</head>
<body>
<h1>Barra nivel vertical.</h1>
<div id=barra>
<div id=pista></div>
<div id=nivel></div>
</div>

<span id=control1a>
<input type=range min=0 max=100 id=control1b onchange="cambia(this)" value=50 step=1/>
</span>
<div id=control2a onscroll="cambia(this)">
<div id=control2b></div>
</div>
	<hr>
</body>
</html>
Para simular el control de volumen use un input type=range. Pero como aún hay navegadores que no lo muestran, le agregué una barra con botón deslizante debajo. En el código andan los dos, pero por supuesto que mañana quedará sólo el de HTML5.


Alguien se preguntará "¿y ayer?". Supongo que con el único que habría que hacer una compatibilidad es con IE. Y en la versión 6 ni va a funcionar la transparencia.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta http-equiv="msthemecompatible" content="no" >
<title></title>

<style type="text/css">
	body {background-color: black; }

	h1 {font: 900 250%/270% cursive; 
text-align: center; 
color: red; }

#barra {width: 100px; 
height: 400px; 
position: relative;}

#pista, #nivel {width: 0; 
height: 0; 
position: absolute; 
top: 0; 
left: 0; 
overflow: hidden; 
border-color: silver black black silver; 
border-style: solid; 
border-width: 200px 50px; }

#nivel {width: 0; 
height: 0; 
top: 400px; 
left: 0; 
border-color: lime black black lime; 
border-width: 0; }


#control2a {width: 30px;
height: 400px;
overflow-y: auto;
	float: left; 
	scrollbar-face-color: black; 
	scrollbar-arrow-color: white; 
	margin-left: 20%; }

#control2b {width: 1px;
height: 2400px;
	background-color: black; }
</style>

<script type="text/javascript">
var alto = 400;
var ancho = 100;

var bravo = 0.005*alto;
var charly = 0.005*ancho;

function cambia(T) {
var alfa = T.scrollTop/2000; 
var delta = 100 - parseInt(alfa*100)

document.getElementById("nivel").style.top = (alto*alfa) + "px";

document.getElementById("nivel").style.borderWidth = delta*bravo + "px " + delta*charly +"px";

	document.title = delta;
}

onload = function() {document.getElementById("control2a").scrollTop = 2000;}
</script>
</head>
<body>

<h1>Barra nivel vertical. (IE6)</h1>

<div id=control2a onscroll="cambia(this)">
<div id=control2b></div>
</div>

<div id=barra>
<div id=pista></div>
<div id=nivel></div>
</div>

</body>
</html>

Como es mi costumbre, ni hay comentarios, ni explicaciones, ni nada.
A probar y destripar.


slidebar / trackbar en html ...

Botones tipicos con cabeza de flecha

vml con html (xml). codigo raro. (Acá cometí un error en la interpretación del 'coordsize', que sí permite decimales)

Dibujar linea de punto X a un punto Y

canvas

Etiquetas: barra, html, volumen
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:58.