Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/07/2015, 15:31
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Botón de play/pause para poder aplicarles css

También puedes usar solo CSS para la elaboración y control visual del botón. Por ejemplo, los elementos <input> pueden ser marcados y desmarcados (checkbox, los radio button solo pueden ser marcados) o tomar el enfoque (text) cuando se da un clic en un elemento <label> cuyo atributo for posee como valor el id del <input> en cuestión.

Sabiendo esto, puedes usar un <label> como botón y un <input> de tipo checkbox para dos cosas: Determinar cuál será el texto que se mostrará en el botón y qué acción se ejecutará; si reproducir el sonido o pausarlo. Para el control del texto del botón, puedes usar el pseudo-elemento :before y la propiedad content, mientras que para la ejecución de la instrucción en JavaScript, puedes delegar una función al checkbox cuando este sea marcado o desmarcado, produciéndose el evento change.

Un pequeño ejemplo:

Código HTML:
Ver original
  1. <input type = "checkbox" id = "audio" />
  2. <label id = "boton" for = "audio"></label>

Código CSS:
Ver original
  1. #audio{
  2.     display: none;
  3. }
  4.  
  5. #boton{
  6.     padding: 2.5% 5%;
  7.     background: limegreen;
  8.     color: snow;
  9.     font-size: 1.25rem;
  10.     border: .1rem #FAFAD2 solid;
  11.     border-radius: .75rem;
  12.     cursor: pointer;
  13.     user-select: none;
  14.     -webkit-user-select: none;
  15.     -moz-user-select: none;
  16.     -o-user-select: none;
  17.     transition: .5s;
  18. }
  19.  
  20. #boton:active, #audio:checked ~ #boton{
  21.     background: lightcoral;
  22. }
  23.  
  24. #boton:before{
  25.     content: "Play"
  26. }
  27.  
  28. #audio:checked ~ #boton:before{
  29.     content: "Pause";
  30. }

Código Javascript:
Ver original
  1. var play = function(){
  2.         console.log("El sonido se está reproduciendo");
  3.         /* Aquí irá el script para reproducir el sonido */
  4.     },
  5.     pause = function(){
  6.         console.log("El sonido ha sido pausado");
  7.         /* Aquí irá el script para pausar el sonido */
  8.     };
  9.  
  10. document.querySelector("#audio").addEventListener("change", function(){
  11.     if (this.checked){
  12.         play();
  13.     }
  14.     else{
  15.         pause();
  16.     }
  17. }, false);

Como verás, oculto al checkbox y le aplico estilos al <label> para que tome una forma similar a la de un botón de forma rectangular. Mediante la pseudo-clase :checked, puedo trabajar con el checkbox cuando esté marcado y cuando esto suceda, afecto al botón, modificando su texto que previamente establecí mediante el pseudo-elemento :before y la propiedad content.

En cuando al script de JavaScript, defino las funciones que ejecutarán la reproducción y pausado del sonido, luego, tomo al checkbox y cuando se produzca un "cambio" en él, ejecuto una función en la cual verifico si está marcado o no y de acuerdo a eso ejecuto una función u otra.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand