Kansilehdet ovat sisällön tuottamisen vaihe, johon enemmistön käyttäjistä ei tarvitse osallistua koskaan. Loput selviävät ajoittaisella uusien ehdollistettujen arvojen lisäämisellä.
Tästä syystä onkin erityisen olennaista puhua kansien tuottamisen keinoista. Tällä tavoin näitä käytänteitä koskeva tieto ei jää salaisuudeksi. Käytössä olevia ratkaisuja voi myös näin kehittää paremman ymmärryksen mukaisesti.
Tämä tieto auttaa ymmärtämään omaa toteutustanne, kun sen kanssa syntyy ongelmia tai sitä täytyy uudistaa. Voitte käyttää tätä tietoa suunnittelun tukena, kun ryhdytte tekemään tai joudutte tilaamaan kansilehtien uudistuksen. Vaikka kyseessä olisivat ensimmäiset kansilehtenne osana DoX CMS:n käyttöönottoa, auttavat nämä huomiot ymmärtämään sen kasaamisen prosessia. Siten ne kertovat teille esimerkiksi, millaisia tietoja teidän täytyy toimittaa meille parhaiden tuloksien saavuttamiseksi.
Eri toteutustavat
Kaikki kannet eivät perustu yhteen oikeaan toteutukseen. Eri julkaisumuodot voivat käyttää eri kansia ja näiden kansien toteutukset ovat yllättävän moninaisia. Käyn täällä läpi tuntemani tavat, joita olen nähnyt käytettävän tai jotka olen itse ottanut käyttöön.
Kaikkia näitä toteutuksia yhdistää, että kyseessä ovat tekstieditorissa kirjoitetut pohjat. Kyseiset otsikkosisällöt on merkitty siellä kansina käytettäviksi, ja ne voi tämän jälkeen valita kansiksi julkaisujen asetuksissa.
Käyttöpaikat
Eri tavoin käytetyt kannet vaativat hieman erilaisia toteutuksia. Joskin yllätyksenä voi tulla, kuinka sovitettavissa samat lähtötiedostot ovat tältä osin.
Etu- ja takakannet
Kaikkein selvin erotus kansien käyttöpaikkojen osalta on ero etu- ja takakansien välillä. Järjestelmä erottelee nämä kaksi tyyppiä vasta ne julkaisuun sijoitettaessa. Kaikki kansiksi määritetyt osuudet ovat yhtälailla käytettävissä kumpina tahansa kansina.
Tyylitiedostoja läpikäydessä täytyy huomioida, että nämä kaksi kansityyppiä käyttävät täysin eri tunnisteita niihin liittyvissä valitsijoissa. Etukanteen viitataan nimellä ’coverPageWrapper’ ja takakanteen nimellä ’backCoverPageWrapper’. Niiden kesken ei ole jaettuja tunnisteita, joihin liittyvät säännöt vaikuttaisivat molempiin.
Usein takakannet vaikutetaan itse asiassa jätettävän täysin tyhjiksi, jolloin niihin liittyen ei tule löytymään lainkaan sääntöjä. Mahdollinen poikkeus tältä osin ovat sivutyyppejä koskevat säännöt DocRaptorin kanssa käytettävissä tyylitiedostoissa. Niiden avulla määritetään esimerkiksi, että kyseisille sivuille ei lisätä sivutunnisteita.
Näiden osuuksien täytyy myös käyttää hieman eri sijoittelusääntöjä, koska ne ovat pystysuunnassa julkaisun eri päissä. Jos ne esimerkiksi käyttävät absoluuttista sijoittelua, etukannen sisällöt sijoitetaan pääasiassa suhteessa julkaisun ylärajaan ja takakannen sisällöt suhteessa sen alarajaan. Tarkkaan ottaen tämä ei ole pakollista, koska absoluuttinen sijoittelu tapahtuu suhteessa sisältöhierarkian seuraavaksi korkeimpaan erikseen sijoiteltuun osuuteen. Täten kyseisten osuuksien kehyksien sijoittelun määrittäminen antaisi sijoittaa nämä osuudet suhteessa kyseisten kehyksien ylä- ja alarajoihin riippumatta niiden tyypeistä.
Eli käytännössä kansien osuuksia kirjoitettaessa tai tutkittaessa täytyy huomioida näiden kansien vaativan täysin erilliset osuudet ja usein eri säännöt tyylitiedostoissa. Myös tyhjiksi jätetyt takakannet täytyy lisätä julkaisuihin erikseen ja niillä on tätä varten omat otsikkosisältönsä. Ellette päädy käyttämään samaa kansitiedostoa ja vain käske kasaajia piilottamaan kaikki sen sisällöt takakannessa.
Julkaisumuodot
Myös verkkojulkaisuilla voi olla kansilehdet. Ne toimivat käytännössä saapumissivuina, jos esitysasu jakaa sisällöt erillisiksi sivuiksi. Samoin sivutetuista julkaisumuodoista PDF ja DOCX vaativat itse asiassa varsin eri asioita.
Intuitiivisesti joka julkaisumuodolle voisi kuvitella vain käytettävän täysin eri otsikkosisältöjä. Tämä kuitenkin estäisi samojen julkaisupohjien uudelleenkäyttämisen, mikä rajoittaisi rakenteisesta kirjoittamisesta saatuja hyötyjä. Yksi sen avaineduista on kuitenkin sisällön itsenäisyys tyylistä. Tällä tavoin sama sisältö on julkaistavissa eri tyyleillä ja eri julkaisumuodoissa. Eri otsikkosisältöjen käyttäminen niille ei siis ole tarpeen vaan haitaksi. Jos teidän toteutuksenne perustuu niihin, tarkistakaa, vaaditaanko sitä teidänkään tapauksessanne.
DoX CMS:ssä tyylin sääntöjä voi määrittää käytetyn julkaisumuodon mukaan. Tämä käyttää ominaisuutta data-document-type eli sillä tavoin merkityt osuudet sanovat esimerkiksi [data-document-type=”dox-html”].
Tällä tavoin merkityt osuudet voivat määrittää sijoittelun lisäksi eri osuuksien näkyvyyttä. Sääntö ’display: none;’ piilottaa kyseisen sisällön valitsijan mukaisessa julkaisumuodossa. Huomioi kuitenkin, että se ei poista tätä sisältöä itse julkaisusta. Esimerkiksi siis verkkojulkaisuissa käyttäjät pystyvät palauttamaan sen näkyviin ohjauspaneelin kautta. Älä siis jätä sinne sisältöä, johon heillä ei saa olla pääsyä.
Tällaiset säännöt voivat kuitenkin muuttaa asettelua myös muilla tavoin kuten käyttämällä eri sijoittelukeinoja DOCX-julkaisuissa. Kannet ovat yksi suurimmista ongelmista niiden kohdalla, koska tämä julkaisumuoto ei salli käyttää tärkeimpiä kansien asetteluun käytettyjen sääntöjä kuten uudelleensijoittelua ja taustakuvia.
Toinen, hieman kömpelömpi keino saavuttaa vastaava tulos perustuu riittävään tyylitiedostojen osuuksien eriyttämiseen ja erillisten tyylien kasaamiseen useista tyylitiedostoista. Eri julkaisumuotojen kansien osuudet voi siis eriyttää omiksi tyylitiedostoikseen ilman yllä mainittujen tunnisteiden käyttämistä. Tämä voi myös tapahtua osana muuta eri julkaisumuotojen vaatimaa tyylien eriyttämistä eri tyylitiedostoihin. Käytännön ero tältä osin on, että kunkin julkaisumuodon osalta käyttöön täytyy valita erikseen myös sen mukainen tyyli julkaisuvaiheessa.
Kohdentamiskeinot
Valitsijat kohdentavat tyylisäännöt eri sisällön osuuksiin. Kansilehtien tapauksessa toteutustapoja tältä osin on tavallista enemmän, koska ne vaativat yleisten sääntöjen sijaan yksittäisiin osuuksiin kohdennettuja sääntöjä. Käyn alla läpi kolme tietämääni toimintatapaa.
Elementtien laskeminen
Valitsijat voi kohdentaa elementteihin niiden järjestyksen mukaisesti eli esimerkiksi kolmanteen tietyn kehyksen sisällä olevaan tekstikappaleeseen. Tähän käytetyt valitsijat käyttävät lisätunnistetta ’:nth-child(x)’, missä x on kyseisen elementin järjestysnumero toisen elementin sisällä.
Kyseessä on yleisin käytetty keino, mutta pidän tästä vaihtoehdosta vähiten ensisijaisena ratkaisuna. Syitä on kaksi.
Ensinnäkin kyseessä on käyttäjien kannalta täysin näkymätön peruste. Jos he eivät tunne tyylien toimintatapaa, voivat he epähuomiossa rikkoa kannen asettelun muokkaamalla kyseistä otsikkosisältöä. Tähän riittää uuden elementin lisääminen tai vanhan poistaminen. Kumpikin siirtää, mihin osuuteen kukin tyylitiedoston sääntö vaikuttaa. Olen kohdannut erinäisiä tältä osin hämmentyneitä käyttäjiä.
Toisekseen nämä tyylitiedostot ovat rasittavia lukea. Ne eivät kerro edes niiden muokkaajalle suoraan, mistä osuudesta kulloinkin on kyse. Kyseiset arvot täytyy myös päivittää kaikkiin alempana oleviin osuuksiin, kun elementtien määrää muutetaan. Se tekee näistä kertatoteuksien tuntuisia, koska mahdollista tulevaa päivitystarvetta ei ole huomioitu.
Toisaalta tällainen toteutus ei vaadi minkäänlaisia lisäluokituksia. Tästä syystä se on mielestäni toimiva vaihtoehto osana laajempaa toteutusta. Voit esimerkiksi käyttää näitä laskureita muulla tavoin merkittyjen osioelementtien (section) sisällä oleville tekstikappaleille.
Elementtiluokat
Oma ensimmäinen yritykseni ratkaista käyttäjille näkymistä koskeva ongelma käytti elementtiluokkia kannen eri osuuksien eriyttämiseen. Tällä tavoin tekstieditori kertoo, että kukin osuus on merkitty erikseen sen roolin mukaisesti. Vastaavasti uusien kansien tekeminen on helpompaa, kun osuudet täytyy vain merkitä oikein. Käyttäjien ei tarvitse tietää näiden osuuksien oikeaa järjestystä ja määrää ennalta.
Absoluuttiseen sijaintiin perustuvan asettelun tapauksessa näiden osuuksien ei myöskään tarvitse olla niiden lopullisessa järjestyksessä niiden oikein asettumiseksi. Tämä oli toinen pieni etu, jonka toivoin auttavan käyttäjiä uusien kansilehtien tekemisessä.
Ongelmaksi nousee tarve käytännössä kertakäyttöisille elementtiluokille. Useimmiten yksi kansitiedosto riittää. Ne täyttävät turhaan elementtiluokkalistaa ja täten tulevat muiden elementtiluokkien käytön tielle.
Periaatteessa nämä arvot voisi vain muokata kyseisille osuuksille raakasisällön kautta. Kyseisiä elementtiluokkia ei silloin tarvitse lisätä järjestelmään varsinaisina elementtiluokkina. Tyylitiedostojen näkökulmasta asialla ei ole väliä. Käyttäjien kannalta tämä järjestely olisi tosin vähintään yhtä hämmentävä kuin merkitsemättä jättäminen. Enemmistö heistä tuskin tietää voivansa lisätä vapaamuotoisia arvoja elementtiluokille raakatekstin kautta.
ID-arvot
ID-arvoihin viittaaminen tyylitiedostoissa ei yleisesti ottaen ole suositeltavaa. Tässä tapauksessa kyseessä on kuitenkin käytettävissä olevien elementtien ainoa käyttäjien suoraan hallinnoitavissa oleva tunniste. Ongelmana on, kuinka jokainen ID arvo voi olla käytössä vain kerran per julkaisu. Kansien osalta tämä on kuitenkin ongelma ainoastaan, kun julkaisu käyttää samoja kansia monta kertaa. Tämä vaikuttaa siis vain monikielisiin julkaisuihin.
Näin saavutetaan elementtiluokkien hyödyt ilman niiden haittoja. Lisäksi nämä arvot voi säätää tavoin, jotka antavat ryhmitellä osuuksia tyylitiedostossa. Jaetut aloitukset tai osana arvoja muutoin käytetyt avainsanat antavat määrittää sääntöjä jokaiselle tällaisia ehtoja vastaavalle osuudelle samanaikaisesti. Lisätietoja tällaisesta attribuutteihin sidotusta tyylittelystä löytyy täältä.
Käytän itse ID-arvoja pääasiassa osioelementeille (section) ja sitten numerointia niiden sisällä oleville tekstikappaleille. Tämä yhdistää näiden keinojen parhaat puolet eli eri osuuksien roolit ovat selvät, mutta jokaiselle osuudelle ei tarvitse antaa erillistä tunnistetta.
Sisällön muotoilu
Otsikkosisältöjen osalta toinen toteutustapojen ero koskee itse käytetyn otsikkosisällön muotoilua. Oletusarvo useimmissa tapauksissa on normaali DITA-sisältö, jossa eri osuuksiin on käytetty tekstikappaleita.
Nämä otsikkosisällöt täytyy ottaa mukaan käännöksiin jokaiselle käytetylle kielelle ainakin kerran. Käännökset tarvitaan, vaikka niissä ei olisi itsessään mitään suoraan kääntyviä osuuksia. Julkaisut ottavat tietenkin kantensa oletusarvoisesti mukaan käännöspyyntöihin, jos kyseisiä revisioita niistä ei ole jo käännetty.
Osiointi
Osioelementit (section) toimivat kehyksinä useamman elementin kokonaisuuksille. Niiden avulla voi sijoitella esimerkiksi toisiinsa nähden peräkkäisiä osuuksia samanaikaisesti. Lisäksi niihin voi kytkeä esimerkiksi sivutusta koskevia sääntöjä ja DocRaptor-julkaisujen tapauksessa toisistaan erotettuja sivuryhmiä osana sisällysluetteloa edeltävää osuutta.
Suosittelen osioiden käyttöönottoa kansissa osana niiden seuraavaa päivityskierrosta, kun sen aika koittaa.
Tyylitiedostoissa osioelementteihin viitataan tunnisteella .dita-section.
Piilotaulukot
Taulukot, joissa on näkymättömät reunukset, ovat klassinen keino lisätä tasattuja sarakkeita. Ne ovat yleisiä varsinkin sivutunnisteissa. Myös kannet voivat hyötyä niistä, kun osa sisällöistä halutaan täsmälleen samalle korkeudelle mutta alkamaan vakioiduista sijainneista leveyssuunnassa.
Näiden taulukoiden osalta täytyy kuitenkin huomioida, että ne ovat ongelmallisia ruudunlukijaohjelmistojen käyttäjille. Jokaisen solun sisältö luetaan erikseen ja niiden lukujärjestys ei aina ole intuitiivinen.
Fraasielementit
Joskus näennäisesti ylimääräiset fraasielementit (ph) ovat pakollisia osana sisältöjen sijoittelua. Ne antavat lisätä syvennystasoja, mitä edelliseksi korkeimpaan syvennystasoon kytketyt säännöt voivat vaatia. Lisäksi niille voi määrittää esimerkiksi vakioidut leveydet. Tämä antaa säätää saman rivin sisältöjen alkamiskohtia piilotaulukoita muistuttavalla tavalla.
On myös syytä huomioida, että muuttujat käyttävät aina fraasielementtejä osana niiden kehystä.
Ehdollistetuilla fraasielementeillä kansiin voi myös esimerkiksi lisätä ainoastaan esivedoksissa näytettävän varoituksen, että kyseessä ei ole lopullinen versio. Toistaiseksi tämä vaatii erillisen tagikategorian näkyvyyden tällä tavoin hallinnointiin ja kyseinen tagi täytyy muistaa poistaa käytöstä katselmoinnin päätteeksi.
Julkaisut kasataan HTML-pohjien perusteella eli tyylitiedostoissa fraasielementteihin (ph) viitataan span-elementteinä. Kaikki span-elementit eivät kuitenkaan vastaa niitä, koska niitä käytetään myös muualla.
HTML-otsikot
Otsikkosisällöt DoX CMS:ssä voivat olla myös HTML-muotoisia. Tämä on varsin yleistä kansitiedostojen osalta, koska kyseessä ovat usein vuosia muuttumattomina pysyneet osuudet. Järjestelmä oli HTML-pohjainen ennen DITA-formaattiin siirtymistä.
Mahdollisesti HTML-sisältöjä on suosittu myös myöhemmin, koska niiden tekstieditori näyttää tekstikappaleiden rajat kehyksinä. Tällä tavoin elementtien laskemiseen perustuvat ratkaisut ovat olleet edes hieman selvempiä.
HTML-sisältöihin pystyy myös lisäämään vaakaviivoja. Vaikka DITA ei anna tehdä niin omana elementtityyppinään, saa niitä lisättyä myös sillä toteutettuihin kansiin esimerkiksi elementtien alareunuksina.
Muuttujat
Muuttujat ovat olennainen osa kansien toteutusta, koska niiden avulla saadaan muutettua yhden kansitiedoston arvot vastaamaan kutakin julkaisua. Ehdollistaminen voidaan tehdä myös osana kansitiedostoa, mutta usein on helpompaa ja turvallisempaa muokata pelkkiä muuttujia itse kansipohjan sijaan. Lisäksi monia näistä samoista muuttujista tarvitaan myös sisällössä kansien ulkopuolella.
Muuttujatyypit
Eri tiedoille on tärkeää käyttää oikeanlaisia muuttujia, jotta oikeat tiedot saadaan näkymään mahdollisimman vähällä vaivalla. Alla on lista muuttujatyypeistä ja lisätietoja, kuinka kutakin niistä voi käyttää.
Perusmuuttujat
Perusmuuttujat ovat vain kääntymättömiä yhdessä paikassa hallinnoituja rivinsisäisiä osuuksia. Ne ovat kuitenkin käyttötavoiltaan yllättävän monipuolisia. Niiden arvot saa myös tarvittaessa muuttumaan käyttämällä tagisuodatusta tai upottamalla niiden sisään muita muuttujia.
Kaikkein ilmeisin käyttötapa perusmuuttujille ovat mallien tuotekoodit tai muutoin kääntymättömät nimikkeet. Näihin on tietenkin syytä käyttää suodatusta. Niitä voi tietenkin myös käyttää kansien ulkopuolella.
Lisäksi perusmuuttujat ovat paras vaihtoehto kuvien lisäämiseen. Kansikuva on harvoin käytössä useammassa sijainnissa. Muuttujan käyttäminen kuitenkin sallii pitää kansilehdet suljettuina suorille muokkauksille ja käyttää samoja kuvia eri kansitiedostoissa tarvittaessa.
Perusmuuttujia voi myös käyttää erilaisten muiden muuttujien arvojen yhdistelemiseen.
Käännösmuuttujat
Käännösmuuttujat ovat muutoin täysin vastaavia kuin perusmuuttujat, mutta niiden arvot ovat kielikohtaisia. Tämä myös tarkoittaa, että niillä ei ole arvoja, ellei niitä oteta mukaan kyseisen kielen käännöspyyntöihin ainakin kerran. Ne tulevat mukaan oletusarvoisesti ensimmäiseen kyseiselle kielelle tehtävään käännökseen niiden lisäämisen jälkeen. Kyseessä on silti vain tarpeeton mahdollisten ongelmien lähde, jos arvojen ei tarvitse olla kielikohtaisia.
Kansissa käännösmuuttujia on syytä käyttää esimerkiksi oppaan tyypin kuvaukseen. Myös laitteen tyyppi on usein kääntyvä tieto. Jos sen yhteydessä mainitaan myös sen mallikoodi, voi nämä kaksi tietoa yhdistää kahdesta eri muuttujasta. Tällöin kääntymättömiä mallikoodeja ei tarvitse kuljettaa mukana käännöksissä.
Julkaisumuuttujat
Julkaisumuuttujien arvoja hallinnoidaan julkaisukohtaisesti. Ne ovat siis oikea keino esimerkiksi toimituskohtaisten sarjanumeroiden tai erikoistilausten tunnisteiden lisäämiseen. Huomioithan, että nämä arvot voi myös jakaa useammaksi muuttujaksi ja sitten yhdistää. Esimerkiksi kielikoodit saa suoraan järjestelmämuuttujasta.
Valitettavasti tällä hetkellä vapaavalintaiset päivämääräformaatit vaativat myös päivämäärän kirjoittamista itse. Päivämäärien järjestelmämuuttuja käyttää formaattia mm/dd/yyyy ilman nollia yksinumeroisten arvojen edessä. Haluamansa päivämääräformaatin saa siis käyttöön erottamalla kunkin näistä arvoista omaksi julkaisumuuttujakseen ja järjestämällä ne perusmuuttujan sisään halutussa formaatissa. Järjestelmämuuttujien kehittäminen eri vaihtoehtojen huomioimiseksi on kuitenkin korkea jatkokehityksen prioriteetti.
Koska julkaisumuuttujien arvot kirjoitetaan, ei niitä voi käyttää esimerkiksi julkaisukohtaiseen kuvien vaihtamiseen. Tällaiseen kuvien julkaisukohtaiseen hallinnointiin löytyy kuitenkin muita keinoja.
Järjestelmämuuttujat
DoX CMS sisältää erinäisiä järjestelmämuuttujia, joiden avulla julkaisuihin saa haettua haluamiaan arvoja järjestelmän tietokannasta.
Tällä tavoin kanteen tai osaksi siinä käytettyjä arvoja saa esimerkiksi
- julkaisun kielitunnisteen,
- julkaisun revisionumeron eri osat,
- julkaisun nimiarvon tai
- julkaisun ulos ottaneen käyttäjän käyttäjänimen esivedoksiin.
Lista järjestelmämuuttujista löytyy oppaastamme.
Upotetut muuttujat
Muuttujia voi käyttää sisäkkäin toistensa kanssa, vaikka muuttujien tekstieditori ei näytä listaa muista muuttujista. Niiden nimet tarvitsee vain kirjoittaa kaksien aaltosuljeparien sisään osana toisen muuttujan sisältöä.
Olen maininnut joitakin upotettujen muuttujien käyttötapoja yllä. Esimerkkejä niistä ovat
- erikoismerkkien kuten ™ tai ® lisääminen upotetun muuttujan arvoon,
- julkaisumuuttujista kasatut päivämääräformaatit,
- myös yksin käytettyjä arvoja yhdistävät arvot kuten laitteen tyyppi ja malli yhdessä ja
- useista osista kasatut tunnistearvot.
Useista osista kasatut tunnistearvot ovat todella alikäytettyjä. Pääasiassa niihin näkee käytettävän pelkkiä julkaisumuuttujia, jotka täytyy kirjoittaa erikseen jokaiselle julkaisulla. Ne ovat siis riippuvaisia sekä oikean arvon muistamisesta että sen oikein kirjoittamisesta. Vaikka näihin arvoihin liittyy usein uniikki osa, jonka voi edelleen pitää julkaisumuuttujana, muut osuudet voi lisätä ehdollistettuina muuttujina. Nämä arvot saa sitten kasattua yhteen upottamalla ne kaikki peräkkäin yhteen muuttujaan. Tällöin oikeat arvot tulevat käyttöön valitsemalla käyttöön niitä vastaavat tagit. Usein sisällön oikein suodattaminen vaatisi joka tapauksessa samoja tageja.
Esimerkiksi tällaisen muuttujan raakasisällön arvo voisi olla ’{{ProductID}}{{VersionID}}{{DeliveryID}}/{{Language}}’, missä ProductID ja VersionID ovat sisällöiltään ehdollistettuja perusmuuttujia ja DeliveryID on julkaisumuuttuja. Tarvittaessa niiden nimiin voi jopa lisätä muistutukset kuten montako numeroa kukin kattaa. Lopputuloksena julkaisussa tällöin voisi siis olla koodi kuten ’671025567/EN’, joka koostuu kyseisistä palasista ilman selkeää erottelua niiden välillä lopputuloksessa muille kuin taustalogiikan tietäville.
Tyylisäännöt
Rakenteen ja muun sisällön lisäksi kannet koostuvat tietenkin niiden asettelun määrittävistä tyylitiedostojen osuuksista. Kansissa tärkeimmät näistä säännöistä koskevat eri osuuksien sijoittelua ja kuvien toteutusta. Muut seikat kuten käytetyt fontit ja kirjasinkoot ovat osa toteutusta, mutta niiden toteutuksen yksityiskohtia ei tarvitse miettiä omaa tyyliopastanne pidemmälle.
Sijoittelu
Eri osuuksilla on tarkkaan määritetyt sijainnit ja ne saa sijoitettua näihin kohtiin eri sijoittelusäännöillä.
Huomioithan, että varsinkin samojen tyylien ollessa käytössä myös verkkojulkaisuissa, täytyy käytetyt yksiköt valita tarkkaan. Sivutetuissa julkaisuissa on hyväksyttävää käyttää absoluuttisia yksiköitä kuten millimetrejä. Verkkojulkaisujen täytyy kuitenkin huomioida myös mahdolliset muutokset päätteiden näyttöjen koossa. Tähän voi käyttää myös päätelaitteiden perusteella ehdollistettuja tyylejä.
Sijainti
Jos kannen asettelu poikkea lainkaan normaalista rivityksestä, on yleisin sijoituskeino absoluuttinen sijainti suhteessa ylempään sisällön tasoon. Tämä vaatii kyseisille osuuksille voimaan sääntöä ’position: absolute;’ sekä määreitä niiden leveys- ja pituuskoordinaateille. Nämä määritetään suhteessa joko oikeaan tai vasempaan reunaan (right, left) ja ylä- tai ala-reunaan (top, bottom). Annettu arvo määrittää kyseisen elementin alkamiskohdan eli vasemmalta oikealle luettaessa vasemman yläreunan.
Absoluuttinen sijoittelu poistaa sisällön normaalista tekstin rivityksestä, mutta se astuu voimaan vasta tilan sille varaamisen jälkeen. Täten se voi jättää jälkeensä tyhjiä sivuja, jos kyseisen sisällön normaali pituus on yhtä sivua pidempi. Kansia ei siis tule ahtaa liian täyteen. Jos tila ei riitä muutoin, voi toki harkita myös pelkkien allekkaisten elementtien sijaan sivusuuntaista laajentamista esimerkiksi piilotaulukoilla.
Absoluuttinen sijainti ei kuitenkaan toimi esimerkiksi DOCX-julkaisuissa, koska ne eivät salli sisällön uudelleensijoittelua käyttämämme kasaajan kanssa. Tällöin vaihtoehtoisena keinona voi käyttää myös eri osuuksien marginaaliarvoja.
Tarkkaan ottaen useammin käytössä ovat sisämarginaalit (padding), koska ulkomarginaalit voivat laskostua päällekkäin vain isomman arvon voimaan jättämiseksi. Sisämarginaaleilla toteutetut sijoittelut ovat tästä syystä ennakoitavampia. Tällöin näiden osuuksien ulkomarginaalit täytyy muistaa poistaa, jotta ne eivät häiritse laskelmia.
Tällöin rajoitteena on, kuinka nämä osuudet täytyy sijoitella niiden alkuperäisen järjestyksen mukaisesti. Lisäksi niiden vaatima rivien määrä ei saa muuttua, koska tämä vaikuttaa myös muiden sisältöjen asettumiseen. Useamman osuuden sijoittaminen rinnakkain sivuttaissuunnassa vaatii joko piilotaulukoita tai fraasielementtejä (ph), joille on määritetty vakioidut leveydet.
Koko
Eri osuuksille voi myös määrittää vakioidut koot. Tällä tavoin voi määrittää esimerkiksi sallitun rivien pituuden, jos sisältö jaetaan mieluummin useammalla riville kuin sen annetaan esimerkiksi tulla tuotekuvan päälle.
Kokomääreitä ei voi antaa oletusarvoisesti kaikille elementeille. Mikä tahansa elementti on kuitenkin sovitettavissa kokomääreet hyväksyväksi. Tämä vaatii vain niiden esitystavan muuttamista leveysmääreet hyväksyväksi eli esimerkiksi fraasielementeille (ph) voi antaa voimaan säännön kuten ’display: inline-block;’ tai ’display: block;’, jotta niiden leveyttä voi hallinnoida. Nämä eivät ole ainoat vaihtoehdot siltä osin.
Varsinaisien kokomääreiden eli width ja height lisäksi eri osuuksille voi asettaa sekä vähimmäiskoon (min-width ja min-height) tai koon ylärajan (max-width ja max-height). Enimmäisarvojen tapauksessa liikasisältö voi vuotaa yli käytössä olevien ylivuotosääntöjen perusteella. Näillä arvoilla voi rajoittaa varsinkin kuvien asettumista ilman tarvetta määrittää niille tarkkarajaisia ja mahdollisesti kuvasuhdetta vääristäviä kokoarvoja. Esimerkiksi ylärajat varmistavat, että kuvan koon skaalautuminen pysähtyy ennen muun sisällön kanssa päällekkäin asettumista kummassakaan suunnassa.
Osuudet
Usein kansiin kuuluu enemmän kuin pelkkä ulkokuori. Tämän yhden otsikkosisällön täytyy sisältää kaikki ennen sisällysluetteloa näytettävät osuudet. (Teknisesti ottaen tämä rajoite on ohitettavissa osassa julkaisuista, mutta kyseiset keinot eivät ole vaaditun lisävaivan arvoisia.)
Suosittelen lisäämään pakotetun sivunvaihdon ennen sisäkannen sisältöjä ja mieluiten eri osuuksien tältä osin väliin. Tällä tavoin kunkin niistä asettumisen voi määrittää erikseen uudella sivulla ilman tarvetta huolehtia edellisten osuuksien asettumisesta. Osioelementit (section) ovat erinomainen keino hallinnoida eri osuuksia. Näin sivunvaihdon voi kytkeä näihin osioelementteihin niiden järjestysluvun tai tunnisteiden avulla.
Ulkokannen lisäksi yleisiä tällaisia osuuksia ovat lakitekstit kuten tekijänoikeuslauseke ja revisiotaulukot.
Jos lakiteksti tarvitsee toistaa useammassa eri kansitiedostossa, voi siihen käyttää joko sisältöviitteitä (conref) tai jopa pelkkää muuttujaa koko tekstille. Näin se pysyy yhdenmukaisena jokaista eri kansitiedostoa käyttävän julkaisun kesken. Poikkeavat osuudet voi edelleen ehdollistaa. Suosittelen niiden asetteluun marginaaleihin perustuvaa keinoa pystysyvennykseen ja mahdollisesti tekstiosuuksien leveyden rajaamista.
Revisiotaulukot ovat julkaisukohtaisia. Täten ne täytyy ehdollistaa asianmukaisesti. Käyttäisin pohjaelementtinä tähän toteutuksen tarpeista riippuen eri elementtejä:
- Täysi taulukko: Erilliset otsikot jokaiselle eri taulukolle.
- Taulukkorunko (tbody): Jaettu otsikko mutta erotetut taulukot. Lisää näitä täysien taulukoiden kehyksien sisään niiden oletuselentteinä.
- Perustaulukko: Ei otsikoita.
Jaetut arvot näiden taulukoiden otsikkoriveissä saa helpoiten toistumaan oikein niiden välillä lisäämällä ne käännösmuuttujina. Näin ne myös päivittyvät jokaiseen taulukkoon kerralla, jos niitä halutaan koskaan muuttaa.
Tarvittaessa tähän taulukkoon saa linkitettyä muokattuja osuuksia ja DocRaptorin avulla julkaistaessa näyttää niiden alkamiskohdan sivunumerot. Alla on esimerkkitoteutus tälle.
#Cover_Revision_History a[href^="#"]:empty::before {content: target-counter(attr(href), page);}
#Cover_Revision_History a[href^="#"]:empty:not(:last-of-type)::after {content: ", ";}
Käytännössä ID-arvon Cover_Revision_History omaavan elementin (section tai table) sisällä olevat linkit, jotka viittaavat julkaisun sisäisiin osuuksiin #-alkuisella viitearvolla, ja ovat tyhjiä, hakevat kohteensa sivunumeron. Kun kyseessä ei ole viimeinen näistä arvoista, lisätään sivunumeron perään automaattisesti pilkku.
Myös yksinkertaisempi ratkaisu olisi soveltuva tähän, mutta halusin olla mahdollisimman yksiselitteinen. Elementin tyhjyys on vain keino varmistaa, että mahdolliset muut sisäiset linkit samassa osiossa eivät saa näitä lisäyksiä. Kyseessä on osaltaan pienen bugin hyväksikäyttö, koska julkaisujen kasaamistavan vuoksi sisäiset linkit kansien osana eivät osaa hakea automaattisesti muutoin lisättäviä viitteitä kyseisiin kohteisiin eli niiden numeroita tai otsikoita. Samasta syystä kansien sisäiset numeroitavia elementtejä ei huomioida, kun muualla julkaisussa lasketaan näiden elementtien järjestysnumerot.
Näitä osuuksia voi myös piilottaa osassa julkaisumuodoista ottamalla kyseisien julkaisumuotojen sisällä niiden käyttöön säännön ’display: none;’. Tämä on kuitenkin ainoastaan piilottamista, ei poistamista. Erolla on merkitystä, koska tällöin sisällön saa palautettua näkyviin verkkojulkaisuissa.
Kuvat
Kansien kuvat vaativat sijoittelusääntöjen lisäksi joitakin lisähuomioita. Nämä säännöt koskevat sekä kuvien lisäämisen keinoja että niiden esitystavan säätämistä.
Taustakuvat
Kuvien asettaminen taustakuviksi voi tuntua ilmeiseltä oikealta tavalta niiden kansissa käyttämiseen. Varsinkin kyseessä ollessa mallien välillä muuttumattomien taustagrafiikkojen.
Taustakuvien käyttämisen suurin ongelma on, että ne voivat jatkua vain yhtä pitkälle kuin elementti, jolle ne on asetettu. Joskus käyttäytyminen tältä osin on arvaamatonta. Vaikka kyseiselle elementille määrittäisi erikseen korkeuden, saattaa taustakuva tulla näkyviin vain osuuksiin, jotka sen varsinaiset sisällöt kattavat.
Lisäksi PDF:ien oletuskasaajamme ei tarjoa taustakuvina asetetuille kansikuville ylivuotoaluetta. DocRaptorissa sellainen löytyy painettuja julkaisuja varten, kun kannet painetaan isommalle arkille ja leikataan siitä. Ilman ylivuotoaluetta, pieninkään sivurajojen yli ulottuva osuus tulee näkyviin seuraavalle sivulle. Tällöin varsinkin läpivärjätyt taustakuvat täytyy säätää pikselitarkasti. En siis voi suositella tätä ratkaisua varsinkaan niiden kanssa.
Näistä syistä en itse asiassa yleensä suosittele kannen kuvien asettamista käyttöön taustakuvina. Kuvat voi lisätä osaksi otsikkosisältöä ja sen jälkeen asetella suhteessa muuhun sisältöön absoluuttisen sijainnin perusteella. Uudelleensijoittelu ei toimi DOCX-julkaisuissa. Mutta niin eivät toimi taustakuvatkaan. Käytännössä kannet täytyisi suunnitella alusta alkaen nämä rajoitteet huomioiden, jos ne tarvitaan oikeannäköisinä myös tässä formaatissa.
Sijoitussyvyys
Monille absoluuttisen sijoittelun haasteeksi voi ensiyrittämällä kuitenkin osoittautua, että kuva tulee tekstisisällön päälle. Tähän voi vaikuttaa muuttamalla sisällön järjestystä. Se on tosin kömpelöä ja toimintalogiikka siltä osin ei välttämättä ole selvä myöhemmille käyttäjille.
Sen sijaan sisällöille voi määrittää myös niiden syvyyshierarkian erillisellä säännöllä. Tällä tavoin kuvat voi puskea tekstisisällön taakse. Tähän käytetty sääntö on z-index, ja korkeamman arvon sen osalta omaavat osuudet asettuvat pienemmän arvon omaavien päälle. Kaikkein helpoin keino tältä osin on antaa kannen taustakuville käyttöön sääntö ’z-index: -1;’. Se puskee ne oletusarvoisesti muiden sisältöjen taakse.
Läpikuultavuus
Tarvittaessa kuvista voi tehdä haaleampia tekemällä niistä osittain läpinäkyviä — varsinkin sivun niiden takana ollessa yksivärinen. Tähän käytetty sääntö on opacity, jonka arvo vaihtelee välillä 0 ja 1. Pienemmät desimaaliarvot tarkoittavat läpinäkyvämpiä kuvia.
Sama tulos on tietenkin saavutettavissa myös muokkaamalla kuvia ennakkoon. Tällä tavoin kyseisen vaiheen voi kuitenkin poistaa, kun kansiin lisätään uusia tällaisia kuvia tai kun samoja kuvia käytetään osana julkaisua muualla.
Yhteenveto
Kansilehdet ovat useille vain pystytyksen yhteydessä vaadittu tyylioppaan ehtojen täyttäjä. Autamme ympäristöjen pystytyksissä kirjoittamalla niiden tyylit myös kansille, jolloin tehdyt ratkaisut jäävät turhan usein salaisuuksiksi käyttäjille. Näiden toteutustapojen parempi ymmärtäminen kuitenkin sallii käydä kirjoitusvaiheessa keskustelua parhaista toteutustavoista, ymmärtää nykyisiä toteutuksia ja tarvittaessa kehittää parempia toteutuksia tilalle.
Etu- ja takakannet käyttävät molemmat otsikkosisältöjä, jotka on merkitty valittavissa oleviksi kansilehdiksi. Niillä on kuitenkin eri tunnisteet varsinaisessa julkaisussa ja niiden on syytä käyttää hieman eri sääntöjä esimerkiksi absoluuttisen sijoittelun pystysuunnan osalta.
Eri julkaisumuodot voivat käyttää eri kansitiedostoja, mutta tällöin ne täytyisi erottaa eri julkaisupohjiksi. Näin ei tarvitse toimia, koska asettelun säännöt voidaan määrittää erikseen eri julkaisumuodoilla ja tarvittaessa sisällön palasia saa piiloon osassa niistä. Piilottaminen ei kuitenkaan täysin poista kyseistä sisältöä. Mukaan ei siis saa tulla osuuksia, joiden mukainen tieto ei saa vuotaa ulospäin.
Varsinaisessa toteutuksessa säännöt eri osuuksille voi kohdentaa niiden järjestyksen tai niille annettujen tunnisteiden perusteella. Näitä tunnisteita ovat esimerkiksi elementtiluokat ja ID-arvot. Eri keinoja voi yhdistellä, mutta suositukseni on käyttää ID-arvoja ja laskureita niiden sisällä. Pelkät järjestyslaskurit ovat täysin näkymättömiä peruskäyttäjille ja siten ne on helppoa rikkoa muokkauksien yhteydessä. Vastaavasti elementtiluokkien heikkous on, kuinka ne jäävät viemään tilaa listalla elementtiluokista. ID-arvot puolestaan eivät kohdennu oikein kuin yksiin kansiin monikielisissä julkaisuissa.
Kansien sisällön muotoilun tukena voi käyttää osioelementtejä (section), piilotaulukoita tai fraasielementtejä (ph). Lisäksi ne voi lisätä HTML-sisältöinä DITA-sisältöjen sijaan, jos niihin halutaan vaakaviivoja tai editorissa selkeästi toisistaan erotetut tekstikappaleet järjestykseen perustuvan asettelun tueksi.
Muuttujat ovat olennainen osa kansien julkaisukohtaisesti sovittamista. Eri tehtäviin tarvitaan eri muuttujia. Perusmuuttujat toimivat kääntymättömille osuuksille ja muiden muuttujien arvojen yhdistelemiseen. Käännösmuuttujia vaaditaan kääntyville mutta vakioiduille osuuksille. Kumpikin näistä voi sisältää tageilla ehdollistettuja arvoja. Julkaisumuuttujia vaaditaan julkaisukohtaisiin arvoihin kuten toimituskohtaisiin tunnisteisiin. Nämä arvot voi kuitenkin myös paloitella eri muuttujiin, jos niissä on myös vakioituja osuuksia. Järjestelmämuuttujilla haetaan järjestelmästä tietoja kuten revisionumeroita tai julkaisun kielikoodi.
Kansien tyylit vaativat niiden sisällön sijoittelua. Tähän voi käyttää absoluuttista sijoittelua tai kasvatettuja marginaaleja. Sisällöille voi myös joutua antamaan kokomääreitä esimerkiksi niiden rivipituuden määrittämiseksi. Kuvien lisääminen vaatii kanssa erityishuomioita. Niiden taustakuviksi määrittäminen voi yllättäen leikata ne. Tästä syystä suosittelen mieluummin absoluuttista sijaintia ja sijoitussyvyyden säätämistä.