CSS ja tulostuksen rajaus

Kuinka saisin css:ää käyttämällä rajattua tulostuksen (tulostimella paperille) siten että ainoastaan sivulla oleva yksi kuva tulostuisi.

Toimisiko se jotenkin tyyliin body{display:none;} ja div.kuva{xxxx:xxxx;}? Mitä tuonne x:ien tilalla tulisi laittaa? Vai olisiko joku toinen ratkaisu parempi?
1346
Äänestä

Muut lukivat myös

Vastaukset 1

Vanhimmat

CSS:llä sujuu aika hyvin se, että tulostuksesta jätetään jotain pois (esim. vakionavigointi tai [itsessään typerät] "Takaisin alkuun" -linkit). Huomattavasti hankalampaa on saada aikaan jotain sellaista, mitä nyt yrität.

Hahmottelemasi lähestymistapa kaatuu jo siihen, että jos body-elementille asetetaan display: none, mitään ei tulostu. Body-elementtihän vastaa koko sivua. Jos sitä ei tulostu, niin mitään ei tulostu. Ei ole väliä, määritelläänkö tulostumattoman elementin jokin osa tulostuvaksi.

Sen sijaan seuraavalla tavalla onnistuisi _tavallaan_:

body { visibility: hidden; }
div.kuva img { visibility: visible; }

Silloin kuitenkin kuva tulostuu juuri siihen, mihin se muutoinkin tulostuisi, joka voi olla vaikka sivulla 42. Kaikki muu "on" siellä, mihin se sijoittuu, mutta näkymättömissä.

Jos haluat kuvan ihan alkuun, voit lisätä esimerkiksi

div.kuva img { position: absolute; top: 1cm; left: 2cm; }

Siihen sitten tietysti sellaiset top- ja left-arvot (ylämarginaali ja vasen marginaali) kuin tuntuu sopivalta.

Tällöinkin voi sitten tulostua esimerkiksi 42 tyhjää sivua, koska kaikki muu edelleenkin "on" mukana, vain näkymättömissä.

Seuraava voi siis olla parempi lähestymistapa: käytetään merkkausta


...

...


jolloin tyyliohjeessa on (@media print -osassa) vain

.alku, .loppu { display: none; }

Jään ihmettelemään, minkälaisessa tilanteessa olisi mielekästä, että vain kuva tulostuisi.

Äänestä

Kommentoi aloitusta


Avuton... kirjoitti:

Kuinka saisin css:ää käyttämällä rajattua tulostuksen (tulostimella paperille) siten että ainoastaan sivulla oleva yksi kuva tulostuisi.

Toimisiko se jotenkin tyyliin body{display:none;} ja div.kuva{xxxx:xxxx;}? Mitä tuonne x:ien tilalla tulisi laittaa? Vai olisiko joku toinen ratkaisu parempi?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu