Skrive en fleksibel Grid Script for Photoshop

Writing en fleksibel Grid Script i Photoshop

Å være en dyktig webdesigner betyr å ha et solid grep på nett, spesielt hvis du ønsker å forfølge responsive web design. I denne opplæringen vil vi ta en titt på en Photoshop script for å generere dine egne nett, pluss vi vil åpne panseret og se på hvordan skriptet er faktisk laget.


Det er ganske sannsynlig at du allerede har brukt pSD-filer fra en bæresystem eller en annen. Du vil sannsynligvis ha åpnet psd, komplett med alle sine guider, så vil du har endret størrelsen på dokumentet for å gi deg selv litt pusterom.

I tilfelle av skriptet, vil det generere Photoshop guider uavhengig av størrelsen på dokumentet. Det vil gi oss mulighet til å angi antall kolonner, rennesteinen størrelse og layout bredde. Ok, nok med introduksjoner, la oss dykke i.


I denne opplæringen vil vi skal skrive en Photoshop skriptlet i Javascript. Her under

  • Bruk av variabler for aktiv dokumentreferanse.
  • Bruk av Spør om å få innspill fra brukeren. > Number () -funksjonen til å sikre Antall datatypen.

    Guides.add () for å legge til hjelpelinjer vår dokumentet.

    Bruker av "for" loop for å gjenta en prosess.

    bruk av "hvis" til betinget utføre en kode eller hoppe over det.

    Hvordan endre dokumenter måleenheter.

    Før vi hopper inn i utviklingsprosessen, la oss først raskt dekke hvordan å faktisk installere og bruke skriptet i Adobe Photoshop



    Trinn 1:. bruk laster ned og installerer

    Dette skriptet er kompatibel med Photoshop CS5 og oppover. Du kan laste ned script fra linken over: "Last ned: Kildekoden", eller du kan laste ned oppdaterte versjoner av manus fra min nettside. Etter at du har lastet ned script (den .jsx fil), kopiere filen til [Photoshop root] \\ Presets \\ Scripts

    Du vil da kunne få tilgang til manuset i Photoshop ved å gå Fil >.; Scripts som vist nedenfor



    Trinn 2:. Bruk Lansering Script

    Før du starter dette skriptet må du ha minst én aktiv dokument åpent (for tiden manus vant ' t kjøre og vil kaste en feil). Etter at du lykkes starte skriptet vil den vise sitt første spørsmål. Den vil be deg om å oppgi bredden av oppsettet som skal brukes for web design.

    Jeg har brukt en bredde på 960 x som standard, så hvis du ikke angir en bestemt verdi på dette punktet vil det gå med 960 x. Du kan legge inn noen bredde, men det bør helst være et partall. Hvis du oppgir en merkelig verdi, sier 955, beregningene i skriptet vil gjengi brøktall. Det betyr brøkdel av en piksel, som ikke er mulig der posisjonering guider er bekymret. Selv om vi var å avrunde at brøk verdi, ville vi ikke ha 100% nøyaktige posisjoner for guidene



    Trinn 3:. Bruk Antall kolonner

    Når du treffer " Enter "på første ledetekst (eller trykk på OK når innstillingen oppsettet bredde) de neste ledetekst som ber deg om å oppgi antall kolonner du vil bruke i din layout. Som standard jeg bruker 12 kolonner



    Trinn 4:. Bruks Marginer og Gutter

    Til slutt vises et tredje spørsmål som krever valuta for marginer (mellomrommet mellom grenser og og ytre kolonner ). Denne verdien blir deretter doblet for å få gutter plass, som har en tendens til å være tilfelle i 960 bæresystem



    Trinn 5:. Bruks resultatet

    Etter at du har levert verdier i alt tre ber du vil se guider i dokumentet arrangert i form av søyler. Hvis du ikke ser noen guider der, har du sannsynligvis slått av synlighet for guider. Du kan gjenopprette sin synlighet ved å gå View > Show > Guides (Ctrl +;)

    På bildet over kan du se kolonner, marginer og takrenne plass.. Disse fargene er bare for å illustrere hva som er hva. Røde farger viser kolonner; hvit for gutter og grønt for marginer. Faktisk får du ikke disse fargene; bare guider som i følgende bilde.


    Nå er vi kjent med hvordan du bruk
    dette skriptet, la oss se hvordan vi faktisk kan skrive
    det med Javascript



    Trinn 1: Utvikling Kontroll for dokument

    Før vi faktisk begynne scripting, trenger vi å vite om det er en Photoshop-dokument åpnes og aktiv i søknaden. Vi sjekker det ved hjelp av denne tilstanden: (! App.documents.length = 0)
    om {//Hele vår kode vil gå her} else {//Ingen aktive dokumentet foreligger}

    Vi skal legge alt inn følgende kode innenfor disse første klammeparentes og vi skal avslutte vår script med} spenne som ovenfor



    Trinn 2:. Utvikling Konvertering Units

    vår første oppgave vil være å konvertere måleenhetene Photoshop-dokumentet til piksler - vi trenger å være pixel perfekt mens designe for web
    //Dette skal sette måleenheter dokumenter til pixels!. preferences.rulerUnits = Units.PIXELS;



    Trinn 3:. Utvikling Dokument Bredde

    Neste vi vil bestemme dimensjonene til Photoshop-dokumentet
    Var doc = app.activeDocument; //Spare referanse av aktive dokumentet til variabelen "doc" for enklere skriving senere Var docWidth = doc.width; //Blir bredden på documentand lagrer den i "docWidth"

    Dette grid system er uavhengig av høyden på dokumentet vi derfor ikke trenger å hente den.



    Trinn 4 : Utvikling horisontal senter

    nå må vi finne den horisontale sentrum av dokumentet, eller dokumentbredde. Hvordan gjør vi dette? Enkel; . Dele dokumentet bredde med to
    Var docXcenter = docWidth /2;

    På dette punktet kan det ikke være klart hvorfor jeg vurdere dette senteret, men som vi går videre vil jeg beskrive sin bruk innenfor vår script .



    Trinn 5: utvikling bruker~~POS=TRUNC Målinger

    på dette punktet må vi spørre brukeren om utformingen bredde de ønsker å bruke, antall kolonner og gutter avstand

    For eksempel bruker 960gs følgende faste kombinasjoner:

    Layout bredde: 960 x

    første kombinasjon: 12 kolonner: 10px ytre margin: 20px indre takrenne
    < li> andre kombinasjon: 16 kolonner: 10px ytre margin: 20px indre takrenne

    tredje kombinasjon: 24 kolonner: 5px ytre margin: 10px indre takrenne

    Vi vil få bedre resultater hvis vi bruker en av disse kombinasjonene (la oss si den første) som standard.
    //Få layout bredde fra brukeren. Standard for å 960px.var layoutWidth = Number (spør ( 'Skriv layout bredde:', 960)); //Dette blir antall kolonner fra brukeren. Mest hensiktsmessig 12,16 eller 24. Standard 12 kolonner. Var kolonner = Number (spør ( 'Skriv inn antall kolonner:', 12)); //Gets marginer fra venstre til høyre fra brukeren. Som vil senere bli doblet for å få gutter. Standard 10px Var margin = Number (spør ( 'Skriv inn mellomrom mellom spalter:', 10));



    Hva er egentlig Prompt ()

    Ok, før vi går videre, la oss først? ta en titt på hva "spørsmål" er
    be ( "melding til brukeren her", "Default verdi her");

    spør viser en dialog for brukeren med en melding og en tekstboks som nedenfor.:

    brukeren angir riktig inngang, noe som medførte rask avkastning som inngangs.

    den første delen av ledeteksten (som vises før komma) setter en melding i en dialog for brukeren. Vi kan veilede brukere om inngangstypen, og gyldige verdier etc. For eksempel;
    prompt ( ". Oppgi antall kolonner Passende verdier er 12, 16, 24.", 12);

    Den andre delen av rask er standardverdien for rask dialog. I tilfelle av kolonner, bruker vi 12 som standardverdi.

    Og hva Number ()?

    Number er en metode som trekker tallene fra gitt innspill. Dersom brukeren har oppgitt noe annet enn et tall (som et navn eller en annen streng), vil metoden returnere en NaN (Not a Number). Dette sanitær gjør at du bare får antall datatype som er viktig i visse situasjoner der bare tall arbeid.


    La oss nå gå over kodebiten vi utarbeidet tidligere.

    Den første linjen blir verdien av oppsettet bredde. Den virkelige spørsmål om nettstedet vil ligge innenfor denne bredden. Som vi bruker 960gs standardverdien for dette er 960 x, men du kan endre det til hva bredde du vil.

    I den andre linjen, får vi antall kolonner vår brukeren ønsker å ha i sin layout design . 960gs bruker 12, 16 eller 24 kolonner som de jobber veldig effektivt, men de er på ingen måte obligatorisk.

    I tredje linje får vi plass som ligger mellom søylene og på grensene for layout. Denne plassen dobler vanligvis mellom kolonnene som takrenne



    Trinn 6:. Utvikling Beregning Gutter og Senter
    Var gutter = plass * 2; //Beregner den horisontale sentrum av oppsettet og så sentrum av dokumentet Var layoutHalf = layoutWidth /2;

    Her er gutter plass blir beregnet og tildelt variabelen gutter. I den andre linjen, er vi beregne halvparten av oppsettet bredde som vi får gjennom brukerundersøkelser. Med andre ord, det horisontale sentrum av vår layout



    Trinn 7:. Utviklings Definere Grenser

    I de to første linjene i denne delen av koden vi beregne posisjonen til venstre og høyre grenser for vår layout. Vi refererer til disse som ytre grenser; venstre grense er minLimitOuter og høyre grense er maxLimitOuter.

    I de følgende to linjer vi beregne de indre grensene for vår layout. Dette er effektivt vår layout bredde minus rennesteinen bredde. Tenk på det som å være den margin som ligger rett innenfor layout bredde
    //yttergrensene som er oppsettet bredde.; Var maxLimitOuter = docXcenter + layoutHalf; Var minLimitOuter = docXcenter - layoutHalf; //Indre grenser for 960gs Var minLimitInner = minLimitOuter + plass; Var maxLimitInner = maxLimitOuter - plass;

    Her kommer definisjonen av docXcenter som vi snakket om tidligere. docXcenter er sentrum for vår hele dokumentet bredde. Vi trenger å evaluere at for å plassere ting rundt sentrum av dokumentet. Vi vil ikke plassere en guide i sentrum, men vi trenger det for å plassere andre elementer.

    Så hva er layoutHalf? Dette er halvparten av bredden av utformingen som defineres av brukeren. Vi delte at bredden i halvdeler, slik at vi kan sette hver halvdel på hver side av docXcenter. Herfra kan vi bestemme plasseringen av førerne på venstre og høyre kant av layout

    Den venstre anvisning posisjon ville være (Center of dokument - halvparten av layout bredde). Og dermed guide på høyre kant ville være (Center of dokument + halvparten av layout bredde)



    Trinn 8:. Utvikling kolonnebredde

    Her er vi beregne bredden på hver kolonne. Vi trenger denne verdien senere når gjenta "legger til guide" prosess
    Var colWidth = (layoutWidth - (Cols * gutter)) /kolonner;



    Trinn 9:. Development Legge Guides til Outer Limits

    til slutt kommer vi til vår første ordentlige "guide legger til" trinn! Her legger vi to guider på layout grenser; våre yttergrenser
    doc.guides.add (Direction.VERTICAL, minLimitOuter);. doc.guides.add (Direction.VERTICAL, maxLimitOuter);

    Den første linjen legger en vertikal guide til vårt dokument om posisjonene minLimitOuter, den venstre kanten av layout og maxLimitOuter høyre kant av layout.

    La meg forklare litt mer om ovennevnte linjer med kode.
    doc.guides.add (Direction.VERTICAL /horisontale, posisjon)

    Denne linjen faktisk legger guider til våre Photoshop-dokument. "Doc" er rett og slett referansen til våre aktive dokumentet. "Guider" er et objekt av klassen guider, som ligger i dokumentet, og er ansvarlig for oppførselen og egenskapene til guider innenfor et Photoshop-dokument. "Legge" er en metode for klasse guider som legger guider til vårt dokument.

    doc.guides.add () er en metode som krever bare to parametere. Den første er i regi av guiden, som kan være vertikal eller horisontal. Den andre parameteren er bare plasseringen av guide. Hvis du setter dine enheter til å piksler vil det anta verdien sendes til andre parameter er piksler, eller henholdsvis annen



    Trinn 10:. Utvikling First Loop

    Den første sløyfen vil håndtere vår første gruppe av guider og indre grenser:
    for (i = 0; i < kolonner; i ++) {guidPos = minLimitInner + ((colWidth + gutter) * i); if (guidPos > maxLimitInner) {break; } Doc.guides.add (Direction.VERTICAL, Number (guidPos)); }

    La oss se nærmere på det. Vi gjentar (sløyfe) vår kode "Cols" tider, da dette er antall kolonner vår brukeren ønsker å bruke. I denne delen av koden vi skal også legge til våre indre grenser.

    Den første linjen etter "for" startstreken er en variabel "guidPos" for guide stilling. "MinLimitInner" sørger for at posisjonen vår første guide starter fra minLimitInner; de indre grensene. Deretter fortsetter vi å multiplisere colWidth og gutter med "i" som blir iterated 0 til "Cols" tider. På denne måten legger vi vår første gruppen av guider til dokumentet. Disse guidene vil være på venstre side av hver kolonne

    Så i andre linje sjekker vi om guidPos verdi overstiger maxLimitInner.; høyre indre grensen av dokumentet. Hvis så det bryter ut av sløyfen. Hvis denne tilstanden ikke faller sant, fortsetter løkke til betingelsen er oppfylt.

    Den tredje linje med kode bare legger føringene til dokumentet på guidPos posisjon.



    Trinn 11 : Utvikling Second Loop

    Tid for å håndtere våre andre gruppe av guider
    for (j = 0; j < kolonner; j ++) {if (j == 0) {formere = 0} else. {formere = 1; } Temp_gutter = (takrenne * multiplisere); guidPos = (minLimitOuter - plass) + ((colWidth + gutter) * (j + 1)); if (guidPos > maxLimitInner) {break; } Doc.guides.add (Direction.VERTICAL, Antall (guidPos));.

    Med noen små forskjeller dette stykke kode legger guider til høyre kant av våre søyler og til høyre indre grense

    Her er den fullstendige koden:
    if (! app.documents.length = 0) {preferences.rulerUnits = Units.PIXELS; Var layoutWidth = Number (spør ( 'Skriv layout bredde:', 960)); Var kolonner = Number (ledetekst ( "Skriv inn tall kolonner: ', 12)); Var plass = Number (spør ( 'Skriv inn mellomrom mellom spalter:', 10)); Var doc = app.activeDocument; Var docWidth = doc.width; Var docXcenter = docWidth /2; Var gutter = plass * 2; //Takrenne plass Var layoutHalf = layoutWidth /2; //Yttergrenser som er oppsettet bredde; Var maxLimitOuter = docXcenter + layoutHalf; Var minLimitOuter = docXcenter - layoutHalf; //Indre grenser for 960gs Var minLimitInner = minLimitOuter + plass; Var maxLimitInner = maxLimitOuter - plass; Var colWidth = (layoutWidth - (Cols * gutter)) /kolonner; doc.guides.add (Direction.VERTICAL, minLimitOuter); doc.guides.add (Direction.VERTICAL, maxLimitOuter); for (i = 0; i < kolonner; i ++) {guidPos = minLimitInner + ((colWidth + gutter) * i); if (guidPos > maxLimitInner) {break; } Doc.guides.add (Direction.VERTICAL, Number (guidPos)); } For (j = 0; j < kolonner; j ++) {if (j == 0) {formere = 0} else {formere = 1; } Temp_gutter = (takrenne * multiplisere); guidPos = (minLimitOuter - plass) + ((colWidth + gutter) * (j + 1)); if (guidPos > maxLimitInner) {break; } Doc.guides.add (Direction.VERTICAL, Number (guidPos)); }} //End-hvis app.documents.length else {alert ( "Ingen aktive dokumentet finnes"); }

    Selv om dette skriptet kan inneholde feil og ulemper, målet var å lære deg litt om Javascript for Photoshop innen et praktisk eksempel. Du har kanskje ikke forstått det hele tatt, men jeg håper det er minst kilte din nysgjerrighet. Hvis du har noen spørsmål i det hele tatt, kan du gjerne la dem i kommentarfeltet.