JQuery's brukergrensesnitt kan legge til så mye på en nettside. Det er mange forskjellige widgets som brukergrensesnittet gir. En opp og kommende stjerne, er glidebryteren. I denne veiledningen vil jeg vise deg hvordan du bruker en glidebryter for å kontrollere tekststørrelsen på en artikkel på en side. Dette lar brukeren kontrollere nøyaktig størrelsen som passer dem, og er også en ganske imponerende funksjon å ha på et nettsted!
Den glidende delen av denne opplæringen reproduserer en teknikk opprinnelig laget av Buck Wilson.
Vi vil til slutt få vår side til å se slik ut:
Oppførsel:
Selvfølgelig trenger vi JQuery, men vi skal også ha noen brukergrensesnitt for å utvide JQuery. Vi kan få en brukerfil som er tilpasset våre behov på JQuery-brukergrensesnittet. Bygg nedlastingssiden.
Som du kan se, er det noen virkelig flotte lydende effekter der! Så fristende som det kan være, trenger vi ikke alle disse effektene for å oppnå ønsket produkt. Alt vi trenger er:
For denne opplæringen kommer jeg ikke til å kaste bort tid for å forklare grunnleggende om HTML, og lage et layout ved hjelp av det og CSS. Hvis du vil lære mer om det, er det andre opplæringsprogrammer her som min Top Panel-opplæring eller Collis 'Tabbed Content-veiledning.
Nettutløser Tekststørrelse Slider
Nåværende skriftstørrelse:Lorem Ipsum er rett og slett dummy tekst av utskrift og typesetting industrien. Lorem Ipsum har vært bransjens standard dummy-tekst helt siden 1500-tallet, da en ukjent skriver tok et typegalleri og scrambled det for å lage en type prøvebok. Det har overlevd ikke bare fem århundrer, men også spranget i elektronisk typegodkjenning, gjenværende i det vesentlige uendret. Det ble popularisert på 1960-tallet med utgivelsen av Letraset-ark som inneholdt Lorem Ipsum-passasjer, og mer nylig med desktop publishing-programvare som Aldus PageMaker, inkludert versjoner av Lorem Ipsum.
Så du vil legge merke til flere ting:
MERK: For glidebryteren skal vi ha en bar og et håndtak.
Her er CSS for å få den siden til å se litt bedre ut. Denne siden er ganske enkel, og derfor er CSS ganske enkel også:
kropp bakgrunn: # 373737; tekst-align: center; margin: 0px; #header width: 700px; høyde: 200px; bakgrunn: # 48887d url (bilder / header.jpg); margin-left: auto; margin-høyre: auto; stilling: relativ; .slider_container posisjon: absolutt; høyde: 25px; topp: 170px; igjen: 165px; .minus bakgrunn: url (bilder / minus-trans.png) no-repeat; høyde: 9px; bredde: 25px; overløp: skjult; flyte: venstre; markør: pointer; .slider_bar bakgrunn: url (images / bar-trans.png) no-repeat; høyde: 9px; bredde: 316px; flyte: venstre; margin: 0px 5px; stilling: relativ; .add bakgrunn: url (bilder / add-trans.png) no-repeat; høyde: 25px; bredde: 23px; flyte: venstre; stilling: relativ; topp: -5px; markør: pointer; .slider_handle bakgrunn: url (images / selector-trans.png) no-repeat; høyde: 25px; bredde: 12px; posisjon: absolutt; topp: -8px; #slider_caption bakgrunn: url (images / caption-trans.png) no-repeat; høyde: 45px; bredde: 38px; overløp: skjult; posisjon: absolutt; topp: -50px; margin-left: -10px; polstring: 5px 0px 0px 0px; font-familie: "Myriad Pro"; farge: # 36665d; font-weight: bold; tekst-align: center; #text font-family: Helvetica, Arial, sans-serif; bredde: 655px; bakgrunn: # f9f9f9; margin-left: auto; margin-høyre: auto; polstring: 20px 20px 20px 25px; stilling: relativ; #text p font-size: 12px; tekstjustering: venstre; farge svart; #text h1 text-align: left; margin-venstre: 20px; p font-familie: Arial, Helvetica, sans-serif; farge: #CCCCCC; #font_indicator posisjon: absolutt; høyre: 100px; topp: 50px; skriftstørrelse: 10px; skjerm: ingen;
Igjen, jeg kommer heller ikke til å gå i detalj med CSS heller. Hvis du fortsatt trenger mer hjelp med det, må du sjekke ut de to opplæringsprogrammene jeg nevnte ovenfor. Hvis du har noen spørsmål, vær så snill å gi meg beskjed i kommentarene.
Legg merke til at alle png-bildene som har alfa-gjennomsiktighet, har a-trans.png-slutt.
Da jeg først lærte om glidebryteren, ga jeg det til å undersøke litt mer om det og hvordan det virker. Vel, jeg var heldig å finne denne fantastiske screencast. Det hadde en veldig fin effekt også; en bildetekst som syntes å vise posisjonen til skyveknappen, på toppen av glidebryteren. Dessverre stoppet de der. Vi skal bruke en variant av deres JQuery-kode som et hoppe av punkt:
$ (funksjon () $ ('# slider_caption'). skjul (); var captionVisible = false; $ ('slider_bar'). skyveknappen (håndtak: '.slider_handle', startValue: 26, minValue: 0, maxValue : 100, start: funksjon (e, ui) $ ('# slider_caption'). FadeIn ('fast', funksjon () captionVisible = true;);, stopp: funksjon (e, ui) if captionVisible == false) $ ('# slider_caption'). fadeIn ('fast', funksjon () captionVisible = true;); $ ('# slider_caption'). css ('left', ui.handle.css ("font": ui.value * 15/100 + 8) (tekstfeltet: Math.round (ui.value * 15/100 + 8)); $ ("div # text p" fadeIn ("slow"); $ ('# slider_caption'). fadeOut ('fast', funksjon () captionVisible = false;);, lysbilde: funksjon (e, ui) $ ('# slettet_caption '). css (' left ', ui.handle.css (' left ')). tekst (Math.round (ui.value * 15/100 + 8)); $ ("div # text p"). css (fontSize: ui.value * 15/100 + 8). fadeIn ("slow"););
Noen viktige ideer:
$ (funksjon () $ ('# slider_caption'). skjul (); var calloutVisible = false; $ ('slider_bar'). skyvekontroll (håndtak: '.slider_handle', startValue: 26, minValue: 0, maksValue : 100, start: funksjon (e, ui) $ ('# slider_caption'). FadeIn ('fast', funksjon () calloutVisible = true;); $ ('# font_indicator' );, stopp: funksjon (e, ui) if (calloutVisible == false) $ ('# slider_caption'). fadeIn ('fast', funksjon () calloutVisible = true;); $ font_indicator '). fadeIn (' slow '); $ (' # slider_caption '). css (' left ', ui.handle.css (' left ')). tekst (Math.round (ui.value * 15/100 + 8)); $ ('# font_indicator b'). Tekst (Math.round (ui.value * 15/100 + 8)); $ ("div # text p"). Animate (fontSize: ui.value * 15/100 + 8). FadeIn ("slow"); $ ('# slider_caption'). FadeOut ('fast', funksjon () calloutVisible = false;); $ ('# font_indicator'). fadeOut ('slow');, slide: funksjon (e, ui) $ ('# slider_caption'). css ('left', ui.handle.css ('left')). ui.value * 15/100 + 8)); $ ('# font_indicator b'). tekst (Math.round (ui. verdi * 15/100 + 8)); $ ("div # text p"). css (fontSize: ui.value * 15/100 + 8). fadeIn ("slow"); );
Viktige ideer om #font_indicator
Dette ville bare ikke være et funksjonelt design, hvis vi ikke ga pluss- og minus-tegnene handlinger på klikk. Denne koden kan være litt sløv og ikke helt effektiv, men det blir jobben gjort. Dette prosjektet krevde en overraskende mengde matematikk, noe som forklarer noen av de brutale tallene som blir brukt.
Uten videre ado, her er resten av javascript, vil jeg forklare det etterpå:
$ (". add"). klikk (funksjon () var currentFontSize = $ ('# text p'). css ('font size'); var currentFontSizeNum = parseFloat (currentFontSize, 10); var newFontSize = currentFontSizeNum + 1; hvis (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') .tekst (Math.round (newFontSize)) .fadeOut (); $ ('slider_handle'). css ('left', newFontSize * 19,75 - 158); $ ( '# Font_indicator') fadeIn ( 'sakte.'); $ ('# font_indicator b'). tekst (Math.round (newFontSize)); $ ( '# Font_indicator') fadeout ( 'sakte.'); ellers $ ('# font_indicator'). fadeIn ('slow'); $ ('# font_indicator b'). tekst ("Er ikke 8 liten nok?"); $ ( '# Font_indicator') fadeout ( 'sakte.'); returner falsk; );
Noen viktige notater:
Matematikk tid
Justering av håndtaket og bildeteksten for å reagere på pluss og minus-klikk var en reell utfordring. Det jeg endte med å gjøre var å finne ut bredden på linjen (316px), og dele den mellom de 16 mulige skriftstørrelsene (8-23) for å finne ut hvor mye plass hvert trinn tok.
316/16 =
For å være trygg måtte jeg finne ut startpunktet for skriftstørrelsen. Jeg visste at dette ikke var akkurat 12, fordi jeg endret det litt med 15/100 + 8. Så jeg tok startverdien av håndtaket (26) og multiplisert det med det:
26 * 15/100 + 8 =
Jeg skjønte at siden det var avrundet, ville det være tolv uansett.
Så jeg skjønte at håndtaket ville være [skriftstørrelse * 19,75 - 158 (de første 8 størrelsene)] px.
Bare trodde at jeg ville gi deg et glimt inn i min rare og over kompliserte matte;). Det er sannsynligvis mye enklere måter å gjøre det på, men jeg antar at dette er logikken min.
For å håndtere informasjonskapsler brukte jeg Klaus Hartls utmerkede cookie-plugin. Du kan se grunnleggende syntaks for pluginet i lenken jeg oppgav. Utfordringen var å finne et sted som på en pålitelig måte ville sette cookien. Jeg endte opp med å sette den når nettleseren oppdaterer eller endrer siden. Denne måten gjør det bare når det er nødvendig og realistisk også. Først legger vi koden til toppen av javascriptfilen for å lese informasjonskapselen:
var startSize = $ .cookie ('fontSize'); var startSize = parseFloat (startSize, 12); $ ('# text p'). css ('font-size', startSize);
Som nevnt ovenfor må vi sette informasjonskapsel når siden er avsluttet. Vi gjør dette ved å bruke følgende kode:
window.onbeforeunload = leaveCookie; funksjon leaveCookie () var FontSize = $ ('# text p'). css ('font-size'); var IntFontSize = parseFloat (FontSize, 10); $ .cookie ('fontSize', IntFontSize);
Hva jeg gjorde:
Håper du fant denne opplæringen nyttig! Vennligst unnskyld min programmeringslogikk, jeg tror ikke alltid så effektivt: P. Har du spørsmål eller kommentarer, vær så snill å gi meg beskjed i kommentarene!