La interfaz de usuario de JQuery puede agregar mucho a una página web. Hay muchos widgets diferentes que proporciona la interfaz de usuario. Una estrella en ascenso es el deslizador. En este tutorial, te mostraré cómo usar un control deslizante para controlar el tamaño del texto de un artículo en una página. Esto permite al usuario controlar exactamente el tamaño que se adapta a ellos, y también es una característica bastante impresionante de tener en un sitio!
La parte deslizante de este tutorial reproduce una técnica creada originalmente por Buck Wilson.
Eventualmente querremos que nuestra página se vea algo como esto:
Comportamiento:
Obviamente necesitamos JQuery, pero también necesitaremos algunos archivos de UI para extender JQuery. Podemos obtener un archivo de UI que se adapta a nuestras necesidades en la página de JQuery UI Build Your Download.
Como puedes ver, hay algunos efectos de sonido realmente geniales allí! Por muy tentador que sea, no necesitamos todos estos efectos para lograr el producto deseado. Todo lo que necesitamos es:
Para este tutorial, no voy a perder el tiempo explicando los conceptos básicos de HTML y creando un diseño utilizando esto y CSS. Si desea obtener más información acerca de eso, hay otros tutoriales aquí, como mi tutorial del Panel superior o el tutorial de contenido en pestañas de Collis.
Nettuts Slider Control deslizante de tamaño de texto
Tamaño de fuente actual:Lorem Ipsum es simplemente un texto de relleno de la industria de impresión y tipografía. Lorem Ipsum ha sido el texto ficticio estándar de la industria desde la década de 1500, cuando una impresora desconocida tomó una galera de tipos y la revolvió para hacer un libro de muestras tipo. Ha sobrevivido no solo cinco siglos, sino también el salto a la composición electrónica, permaneciendo esencialmente sin cambios. Se popularizó en la década de 1960 con el lanzamiento de las hojas de Letraset que contenían pasajes de Lorem Ipsum y, más recientemente, con un software de edición de escritorio como Aldus PageMaker, que incluye versiones de Lorem Ipsum..
Así notarás varias cosas:
NOTA: Para que el control deslizante funcione, necesitamos tener una barra y un asa.
Aquí está el CSS para hacer que la página se vea un poco mejor. Esta página es bastante simple, y por lo tanto el CSS también es bastante simple:
cuerpo fondo: # 373737; text-align: center; margen: 0px; #header width: 700px; altura: 200px; fondo: # 48887d url (images / header.jpg); margen izquierdo: auto; margen derecho: auto; posición: relativa; .slider_container position: absolute; altura: 25px; arriba: 170px; izquierda: 165px; .minus background: url (images / minus-trans.png) no se repite; altura: 9px; ancho: 25px; desbordamiento: oculto; flotador izquierdo; cursor: puntero; .slider_bar background: url (images / bar-trans.png) no se repite; altura: 9px; ancho: 316px; flotador izquierdo; margen: 0px 5px; posición: relativa; .add background: url (images / add-trans.png) no se repite; altura: 25px; ancho: 23px; flotador izquierdo; posición: relativa; arriba: -5px; cursor: puntero; .slider_handle background: url (images / selector-trans.png) no se repite; altura: 25px; ancho: 12px; posición: absoluta; arriba: -8px; #slider_caption background: url (images / caption-trans.png) no se repite; altura: 45px; ancho: 38px; desbordamiento: oculto; posición: absoluta; arriba: -50px; margen izquierdo: -10px; relleno: 5px 0px 0px 0px; familia de fuentes: "Myriad Pro"; color: # 36665d; font-weight: negrita; text-align: center; #text font-family: Helvetica, Arial, sans-serif; ancho: 655px; fondo: # f9f9f9; margen izquierdo: auto; margen derecho: auto; relleno: 20px 20px 20px 25px; posición: relativa; #text p font-size: 12px; alineación de texto: izquierda; de color negro; #text h1 text-align: left; margen izquierdo: 20px; p font-family: Arial, Helvetica, sans-serif; color: #CCCCCC; #font_indicator position: absolute; derecha: 100px; superior: 50px; tamaño de fuente: 10px; pantalla: ninguna;
Nuevamente, tampoco voy a entrar en gran detalle con el CSS. Si aún necesita más ayuda con eso, asegúrese de revisar los dos tutoriales que mencioné anteriormente. Si tiene alguna pregunta, asegúrese de avisarme en los comentarios..
Observe que todas las imágenes png que tienen transparencia alfa tienen una terminación -trans.png.
Cuando aprendí por primera vez sobre el efecto deslizante, lo busqué en Google para investigar un poco más sobre él y cómo funciona. Bueno, tuve la suerte de encontrar este increíble screencast. También tenía un efecto muy bueno; un título que parecía mostrar la posición del control deslizante, en la parte superior del control deslizante. Por desgracia, se detuvieron allí. Vamos a utilizar una variación de su código JQuery como punto de partida:
$ (function () $ ('# slider_caption'). hide (); var captionVisible = false; $ ('. slider_bar'). slider (handle: '.slider_handle', startValue: 26, minValue: 0, maxValue : 100, start: function (e, ui) $ ('# slider_caption'). FadeIn ('fast', function () captionVisible = true;);, stop: function (e, ui) if ( captionVisible == falso) $ ('# slider_caption'). fadeIn ('fast', function () captionVisible = true;); $ ('# slider_caption'). css ('left', ui.handle.css ('left')). text (Math.round (ui.value * 15/100 + 8)); $ ("div # text p"). animate (fontSize: ui.value * 15/100 + 8 ) .fadeIn ("slow"); $ ('# slider_caption'). fadeOut ('fast', function () captionVisible = false;);, slide: function (e, ui) $ ('# slider_caption '). css (' left ', ui.handle.css (' left ')). text (Math.round (ui.value * 15/100 + 8)); $ ("div # text p"). css (fontSize: ui.value * 15/100 + 8). fadeIn ("slow"););
Algunas ideas clave:
$ (function () $ ('# slider_caption'). hide (); var calloutVisible = false; $ ('. slider_bar'). slider (handle: '.slider_handle', startValue: 26, minValue: 0, maxValue : 100, start: function (e, ui) $ ('# slider_caption'). FadeIn ('fast', function () calloutVisible = true;); $ ('# font_indicator'). FadeIn ('slow' );, stop: function (e, ui) if (calloutVisible == false) $ ('# slider_caption'). fadeIn ('fast', function () calloutVisible = true;); $ ('# font_indicator '). fadeIn (' slow '); $ (' # slider_caption '). css (' left ', ui.handle.css (' left ')). text (Math.round (ui.value * 15/100 + 8)); $ ('# font_indicator b'). Text (Math.round (ui.value * 15/100 + 8)); $ ("div # text p"). Animate (fontSize: ui.value * 15/100 + 8). FadeIn ("slow"); $ ('# slider_caption'). FadeOut ('fast', function () calloutVisible = false;); $ ('# font_indicator'). fadeOut ('slow');, slide: function (e, ui) $ ('# slider_caption'). css ('left', ui.handle.css ('left')). text (Math.round ( ui.value * 15/100 + 8)); $ ('# font_indicator b'). text (Math.round (ui. valor * 15/100 + 8)); $ ("div # text p"). css (fontSize: ui.value * 15/100 + 8). fadeIn ("slow"); );
Ideas clave sobre #font_indicator
Esto simplemente no sería un diseño funcional, si no damos las acciones de signos de más y menos al hacer clic. Este código puede ser un poco descuidado y no perfectamente eficiente, pero hace el trabajo. Este proyecto requirió una cantidad sorprendente de matemáticas, lo que explica algunos de los números extravagantes que terminan siendo utilizados.
Sin más preámbulos, aquí está el resto de JavaScript, lo explicaré después:
$ (". add"). click (function () var currentFontSize = $ ('# text p'). css ('font-size'); var currentFontSizeNum = parseFloat (currentFontSize, 10); var newFontSize = currentFontSizeNum + 1; if (newFontSize < 24) $('#text p').css('font-size', newFontSize); $('#slider_caption').css('left', newFontSize*19.75 - 158).fadeIn('fast').text(Math.round(newFontSize )).fadeOut(); $('.slider_handle').css('left', newFontSize*19.75 - 158); $('#font_indicator').fadeIn('slow'); $('#font_indicator b').text(Math.round(newFontSize )); $('#font_indicator').fadeOut('slow'); else $('#font_indicator').fadeIn('slow'); $('#font_indicator b').text("Isn't 23 big enough?"); $('#font_indicator').fadeOut('slow'); return false; ); $(".minus").click(function() var currentFontSize = $('#text p').css('font-size'); var currentFontSizeNum = parseFloat(currentFontSize, 10); var newFontSize = currentFontSizeNum-1; if (newFontSize > 8) $ ('# text p'). Css ('font-size', newFontSize); $ ('# slider_caption'). css ('left', newFontSize * 19.75 - 158) .fadeIn ('fast'). text (Math.round (newFontSize)). fadeOut (); $ ('. slider_handle'). css ('left', newFontSize * 19.75 - 158); $ ('# font_indicator'). fadeIn ('slow'); $ ('# font_indicator b'). text (Math.round (newFontSize)); $ ('# font_indicator'). fadeOut ('slow'); else $ ('# font_indicator'). fadeIn ('slow'); $ ('# font_indicator b'). text ("¿No es 8 lo suficientemente pequeño?"); $ ('# font_indicator'). fadeOut ('slow'); falso retorno; );
Algunas notas clave:
Tiempo de matematicas
Ajustar el controlador y el título para reaccionar ante los clics más y menos fue un verdadero desafío. Lo que terminé haciendo fue calcular el ancho de la barra (316px) y dividirlo entre los 16 tamaños de fuente posibles (8-23) para calcular cuánto espacio tomó cada incremento.
316/16 =
Para estar seguro, entonces necesitaba averiguar el punto de partida para el tamaño de fuente. Sabía que esto no era exactamente 12, porque lo modifiqué ligeramente con el 15/100 + 8. Así que tomé el valor de inicio del mango (26) y lo multiplicé por eso:
26 * 15/100 + 8 =
Pensé que, como estaba redondeado, serían doce de todos modos..
Así que pensé que el controlador sería el [tamaño de fuente * 19.75 - 158 (los primeros 8 tamaños)] px.
Pensé que te daría un vistazo a mi matemática extraña y complicada;). Probablemente haya formas mucho más fáciles de hacerlo, pero creo que esta es mi lógica..
Para tratar con las cookies utilicé el excelente complemento de cookies de Klaus Hartl. Puede ver la sintaxis básica del complemento en el enlace que proporcioné. El desafío era encontrar un lugar que configurara la cookie de manera confiable. Terminé configurándolo cuando el navegador actualiza o cambia la página. De esta manera, solo lo hace cuando es necesario y también de manera realista. Primero agregamos el código a la parte superior del archivo javascript para leer la cookie:
var startSize = $ .cookie ('fontSize'); var startSize = parseFloat (startSize, 12); $ ('# text p'). css ('font-size', startSize);
Como mencioné anteriormente, debemos configurar la cookie cuando se salga de la página. Hacemos esto usando el siguiente código:
window.onbeforeunload = leaveCookie; function leaveCookie () var FontSize = $ ('# text p'). css ('font-size'); var IntFontSize = parseFloat (FontSize, 10); $ .cookie ('fontSize', IntFontSize);
Lo que hice:
Espero que hayas encontrado este tutorial útil! Por favor, disculpe mi lógica de programación, no siempre pienso tan eficientemente: P. Si tiene alguna pregunta o comentario, no dude en hacérmelo saber en los comentarios.!