De gebruikersinterface van JQuery kan zoveel toevoegen aan een webpagina. Er zijn veel verschillende widgets die de gebruikersinterface biedt. Een opkomende ster, is de schuifregelaar. In deze zelfstudie laat ik u zien hoe u een schuifregelaar gebruikt om de tekstgrootte van een artikel op een pagina te bepalen. Hiermee kan de gebruiker precies het formaat instellen dat bij hem past, en het is ook een behoorlijk indrukwekkende functie op een site!
Het schuifgedeelte van deze zelfstudie reproduceert een techniek die oorspronkelijk door Buck Wilson is gemaakt.
We willen uiteindelijk dat onze pagina er ongeveer zo uitziet:
Gedrag:
Natuurlijk hebben we JQuery nodig, maar we hebben ook enkele UI-bestanden nodig om JQuery uit te breiden. We kunnen een UI-bestand krijgen dat aangepast is aan onze behoeften op de JQuery UI Build Your Download-pagina.
Zoals je kunt zien, zijn er een aantal echt geweldig klinkende effecten daar! Hoe verleidelijk het ook mag zijn, we hebben niet al deze effecten nodig om het gewenste product te bereiken. Alles wat we nodig hebben is:
Voor deze zelfstudie ga ik geen tijd verspillen aan het uitleggen van de basisprincipes van HTML en het maken van een lay-out met deze en CSS. Als je daar meer over wilt weten, zijn er andere tutorials hier, zoals mijn Top Panel-zelfstudie of de tutorial Zelfstudie met tabs van Collis.
Nettuts schuifregelaar Tekstformaat schuifregelaar
Huidige lettergrootte:Lorem Ipsum is gewoon dummy tekst van de drukkerij- en zetbranche. Lorem Ipsum is de standaard dummy-tekst van de industrie sinds de jaren 1500, toen een onbekende printer een keuken van het type in beslag nam en deze tot een soort exemplaar boek maakte. Het heeft niet alleen vijf eeuwen overleefd, maar ook de sprong naar elektronisch zetwerk, en bleef in wezen onveranderd. Het werd gepopulariseerd in de jaren zestig met de uitgave van Letraset-bladen met Lorem Ipsum-passages en meer recent met desktop publishing-software zoals Aldus PageMaker inclusief versies van Lorem Ipsum.
U zult dus verschillende dingen opmerken:
OPMERKING: Om de schuifregelaar te laten werken, hebben we een staaf en een handvat nodig.
Hier is de CSS om die pagina er een beetje beter uit te laten zien. Deze pagina is vrij eenvoudig en daarom is de CSS ook vrij eenvoudig:
lichaam achtergrond: # 373737; text-align: center; marge: 0px; #header width: 700px; hoogte: 200 px; achtergrond: # 48887d url (images / header.jpg); marge links: auto; marge-rechts: auto; positie: relatief; .slider_container position: absolute; hoogte: 25px; top: 170px; links: 165px; .minus background: url (images / minus-trans.png) geen herhaling; hoogte: 9px; breedte: 25px; overloop verborgen; zweven: links; cursor: pointer; .slider_bar background: url (images / bar-trans.png) geen herhaling; hoogte: 9px; breedte: 316 px; zweven: links; marge: 0px 5px; positie: relatief; .add background: url (images / add-trans.png) geen herhaling; hoogte: 25px; breedte: 23 px; zweven: links; positie: relatief; top: -5px; cursor: pointer; .slider_handle background: url (images / selector-trans.png) geen herhaling; hoogte: 25px; breedte: 12px; positie: absoluut; top: -8px; #slider_caption background: url (images / caption-trans.png) geen herhaling; hoogte: 45 px; breedte: 38px; overloop verborgen; positie: absoluut; top: -50px; margin-left: -10px; opvulling: 5px 0px 0px 0px; font-family: "Myriad Pro"; kleur: # 36665d; lettertype: vet; text-align: center; #text font-family: Helvetica, Arial, sans-serif; breedte: 655px; achtergrond: # f9f9f9; marge links: auto; marge-rechts: auto; opvulling: 20px 20px 20px 25px; positie: relatief; #text p font-size: 12px; text-align: left; de kleur zwart; #text h1 text-align: left; marge links: 20 px; p font-family: Arial, Helvetica, sans-serif; kleur: #CCCCCC; #font_indicator positie: absoluut; rechts: 100px; top: 50px; lettergrootte: 10px; Geen weergeven;
Nogmaals, ik ga ook niet in detail treden met de CSS. Als je daar nog steeds meer hulp bij nodig hebt, moet je die twee tutorials die ik hierboven noemde eens bekijken. Als je nog vragen hebt, laat het me dan weten in de comments.
Merk op dat alle png-afbeeldingen met alfatransparantie een -trans.png einde hebben.
Toen ik voor het eerst hoorde over het schuifeffect, heb ik het Googled om er iets meer over te onderzoeken en hoe het werkt. Nou, ik had het geluk om deze geweldige screencast te vinden. Het had ook een heel net effect; een bijschrift dat de positie van de schuifbalk boven aan de schuif leek weer te geven. Helaas zijn ze daar gestopt. We gaan een variatie van hun JQuery-code als startpunt gebruiken:
$ (function () $ ('# slider_caption'). hide (); var captionVisible = false; $ ('. slider_bar'). slider (handle: '.slider_handle', startValue: 26, minValue: 0, maxValue : 100, start: functie (e, ui) $ ('# slider_caption'). FadeIn ('fast', function () captionVisible = true;);, stop: function (e, ui) if ( captionVisible == false) $ ('# 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"). anim (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"););
Enkele belangrijke ideeën:
$ (function () $ ('# slider_caption'). hide (); var calloutVisible = false; $ ('. slider_bar'). slider (handle: '.slider_handle', startValue: 26, minValue: 0, maxValue : 100, start: functie (e, ui) $ ('# slider_caption'). FadeIn ('fast', function () calloutVisible = true;); $ ('# font_indicator'). FadeIn ('langzaam' );, stop: function (e, ui) if (calloutVisible == false) $ ('# slider_caption'). fadeIn ('fast', function () calloutVisible = true;); $ ('# font_indicator '). fadeIn (' langzaam '); $ (' # slider_caption '). css (' left ', ui.handle.css (' left ')). tekst (Math.round (ui.value * 15/100 + 8)); $ ('# font_indicator b'). Text (Math.round (ui.value * 15/100 + 8)); $ ("div # text p"). Animeren (fontSize: ui.value * 15/100 + 8). FadeIn ("slow"); $ ('# slider_caption'). FadeOut ('fast', function () calloutVisible = false;); $ ('# font_indicator'). fadeOut ('slow');, slide: functie (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. waarde * 15/100 + 8)); $ ("div # text p"). css (fontSize: ui.value * 15/100 + 8). fadeIn ("langzaam"); );
Belangrijke ideeën over #font_indicator
Dit zou gewoon geen functioneel ontwerp zijn, als we de plus- en mintekens-acties niet op klikken zouden geven. Deze code is misschien een beetje slordig en niet perfect efficiënt, maar het klopt. Dit project vereiste een verrassende hoeveelheid wiskunde, wat enkele van de maffe nummers verklaart die uiteindelijk worden gebruikt.
Zonder verder oponthoud, hier is de rest van het javascript, ik zal het naderhand uitleggen:
$ (". add"). klik (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) $ ('# tekst 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') fade-out ( 'slow.'); else $ ('# font_indicator'). fadeIn ('langzaam'); $ ('# font_indicator b'). tekst ("Is 8 niet klein genoeg?"); $ ( '# Font_indicator') fade-out ( 'slow.'); return false; );
Enkele belangrijke opmerkingen:
Wiskunde tijd
Het aanpassen van de hendel en het bijschrift om te reageren op de plus- en minklik was een echte uitdaging. Wat ik uiteindelijk deed, was het uitzoeken van de breedte van de balk (316px), en die delen tussen de 16 mogelijke lettergroottes (8-23) om uit te zoeken hoeveel ruimte elke stap in beslag nam.
316/16 =
Om veilig te zijn, moest ik vervolgens de startplaats voor de lettergrootte bepalen. Ik wist dat dit niet precies 12 was, omdat ik het enigszins had aangepast met de 15/100 + 8. Dus nam ik de startwaarde van het handvat (26) en vermenigvuldigde het daarmee:
26 * 15/100 + 8 =
Ik dacht dat, aangezien het afgerond was, het toch twaalf zou zijn.
Dus ik dacht dat het handvat de [lettergrootte * 19,75 - 158 (de eerste 8 maten)] px zou zijn.
Ik dacht dat ik je een blik zou gunnen in mijn rare en te ingewikkelde wiskunde;). Er zijn waarschijnlijk veel gemakkelijkere manieren om het te doen, maar ik denk dat dit mijn logica is.
Voor het omgaan met cookies heb ik de uitstekende cookie-plug-in van Klaus Hartl gebruikt. U kunt de basissyntaxis van de plug-in bekijken in de link die ik heb verstrekt. De uitdaging was om een plek te vinden die de cookie betrouwbaar zou instellen. Ik heb het uiteindelijk ingesteld toen de browser de pagina vernieuwde of veranderde. Op deze manier doet het het alleen wanneer nodig en ook realistisch. Eerst voegen we de code toe aan de bovenkant van het JavaScript-bestand om de cookie te lezen:
var startSize = $ .cookie ('fontSize'); var startSize = parseFloat (startSize, 12); $ ('# text p'). css ('font-size', startSize);
Zoals ik hierboven al zei, moeten we de cookie instellen wanneer de pagina wordt afgesloten. We doen dit door de volgende code te gebruiken:
window.onbeforeunload = leaveCookie; function leaveCookie () var FontSize = $ ('# text p'). css ('font-size'); var IntFontSize = parseFloat (FontSize, 10); $ .cookie ('fontSize', IntFontSize);
Wat ik deed:
Ik hoop dat je deze tutorial nuttig hebt gevonden! Excuses mijn programmeerlogica, ik denk niet altijd zo efficiënt: P. Als je vragen of opmerkingen hebt, aarzel dan niet om het me te laten weten in de comments!