Autor Zpráva
rodis
Profil
Zdravim, rad bych pozadal o radu s nasledujicim problemem.

Pro zobrazeni na monitoru mam kvuli IE nastylovanou cast stranky takto:

@media screen, print
{
#obsah
{
position: absolute;
top: 150px;
left: 150px;
bottom: 0px;
right: 0px;
height: expression(document.body.clientHeight-150);
width: expression(document.body.clientWidth - 150);
padding: 0px 10px 0px 10px;
background-color: #FFFFE8;
overflow: auto;
font-size: 75%;
}
}

pro tisk jsem nastavil tento styl

@media print
{

#obsah
{
overflow: visible;
font-family: "Times CE", Times, "Times New Roman", serif;
font-size: 10pt;
background-color: #ffffff;
position: static;
float: none;
padding: 0em 0em 0em 0em;
margin: auto;
width: 100%;
}
}

Predpokladal jsem, ze se zrusi pocitana sirka stranky a pri tisku se text zarovna na sirku tistene stranky. Ve Firefoxu to tak funguje.
Bohuzel v IE se stale sirka tisku pocita ze sirky okna prohlizece, takze pri plnem okne cast textu chybi, pri uzskem okne zase nevyplni stranku na sirku.

Netusite co s tim?
Diky
Ice
Profil
zkus width nastavit na 210mm
Radek Hrabůvka
Profil
zkus width nastavit na 210mm Možná bych ubral ještě 40 mm, a dal šířku 170 mm kvůli okrajům. Chce to vyzkoužet. Na podobné pokusy je náhled před tiskem a nějaká viruální tiskárna, co tiskne do PDF souboru, šetříš lesy.
rodis
Profil
Diky za rady. Bohuzel to nefunguje.

Zda se mi, jako by IE ignoroval width ve stylu pro tisk a vzdy ji pocital ze sirky okna prohlizece. Muze za to asi ten expression, ale netusim, jak to nastavit.
Nemate jeste nekdo napad?
habendorf
Profil
rodis: Řešíš to zbytečně složitě, nejlepší je IMHO pro tisk vůbec nezadávat šířku. On už si to browser nějak vykomunikuje s ovladači tiskárny a nastaví to dobře. Aspoň mě to vždycky fungovalo a už jsem těch tiskových stylů pár (desítek) dělal.
rodis
Profil
Bohuzel ani vypusteni sirky nefunguje.

Nevite, jak funguje metoda expression? Ja ji pouzil kvuli tomu, aby byl styl "gumovy", ale s tim tiskem me to vypeklo.
Radek Hrabůvka
Profil
Pokud je stopa s expression správná, zkus dát expression pouze pro media screen, pak se ti to nebude hádat. Souhlasím s tím co píše habendorf, tiskový styl si zbytečně komplikuješ, zbytečně deklaruješ spoutu vlastnosí současně pro media screen a print a pak to pro media print deklaruješ v implicitní vlastnosti, viz background, position, float, margin, padding, width. To postrádá logiku, přemýšlej, usnadni si práci.
Sice jsem udělal mnohonásobně méně tiskových stylopisů, než habendorf, ale s šířkou jsem měj "problém", pokud to tak lze nazvat, pouze jednou, když byl na stránce příliš široký obrázek, tak jsem mu do stylopisu pro tisk dal "width: 100%" a byl klid.
rodis
Profil
Diky za rady. Vyzkousel jsem jiz predtim vypusteni rady vlastnosti a priznavam, ze nektere jsou tam zbytecne, ale pokud napriklad nezmenim v tiskovem stylu position na static, tak mi to zase netiskne stranku delsi nez jedna obrazovka, nebot puvodne jsou divy umisteny absolutne.
Take jsem dat expression pouze pro styl media screen, ale nemelo to vubec zadny vysledek.

IE se chova takto:
- zjisti rozmery okna prohlizece
- nastavi podle neho sirku divu na monitoru
- podle toho nastavi sirku stranky pri tisku

Kdyz zmensim sirku okna prohlizece, tak se vse tiskne OK.
Vazne nechapu chovani IE, nebot firefox pracuje OK. Bohuzel jsem ve stylu pro screen nenasel jinou moznost jak definovat absolutni div, jehoz sirka se ma menit podle velikosti okna, nez pomoci expression.

Vazne jste nikdo nikdy takovy problem neresil?
habendorf
Profil
ale pokud napriklad nezmenim v tiskovem stylu position na static, tak mi to zase netiskne stranku delsi nez jedna obrazovka, nebot puvodne jsou divy umisteny absolutne

Z tohohle jsem asi tvůj problém konečně pochopil - ty totiž úplně špatně chápeš (asi) tiskový styl. To není nějaký doplněk k normálnímu, to je samostatně aplikovaný styl. Takže ty vůbec nemusíš přepisovat nějakou position, ty ji prostě v tiskovém stylu vůbec nenastavíš.

Stejně tak třeba tam máš float:none - to je taky zbytečné a stejný princip. Pochop že nemusíš přebíjet to, co máš ve vizuálním stylu. Tiskový styl se prostě aplikuje samostatně.

Udělej jednu věc - v kódu si ten tiskový styl dočasně nastav pro media="screen" ať to hezky vidíš a nemusíš pořád do náhledů, odlaď ho, a pak tam vrať ten původní a ten odladěný nastav pro media="print".
rodis
Profil
Diky za napady. Vazne jsem to takhle zkousel (odladit na obrazovce).
Chapu, ze tiskovy styl je samostatny. Problem je v tom, ze z puvodni stranky, na ktere je nekolik divu pozicovano absolutne chci, aby se tisknul pouze jeden. Kdyz necham absolutni pozicovani, tak to nefunguje.

Podivej na
http://rodis1.webzdarma.cz/hist2.html

styl
http://rodis1.webzdarma.cz/skola.css

Diky za dalsi namety
habendorf
Profil
rodis: Jo takhle to máš dělaný, aha. No doporučoval bych spíš udělat dva různé css soubory, jeden pro screen, druhý pro print. Já teď bohužel nemám čas, mohl bych se ti na to blíže mrknout až po víkendu. Zkus se podívat třeba na

http://www.1-webdesign.cz/projects/dps/ nebo
http://www.1-webdesign.cz/projects/primakava/

Podívej se na náhledy, podívej se na print.css. Třeba z toho něco vykoukáš.
Radek Hrabůvka
Profil
habendorf dočasně nastav pro media="screen" Na testování dávám namísto "media print" "media all". Líp se mi to pak nahrazuje zpátky pomocí "najít-nahradit".

rodis nekolik divu pozicovano absolutne chci, aby se tisknul pouze jeden. Nevidím v tom žádný problém. V tiskovém stylu dáš divům, které nepotřebuješ "display: none".
rodis
Profil
habendorf: Jo takhle to máš dělaný, aha. No doporučoval bych spíš udělat dva různé css soubory, jeden pro screen, druhý pro print.

Jo, to jsem taky zkousel. Stejny vysledek. Pokud je to v jednom souboru a styl media print je jako posledni, ma to stejny efekt, jako kdyz to je ve dvou souborech a jako druhy je pripojen soubor se stylem pro media print. Ale hlavne nebudu muset pridavat druhy radek do vsech souboru rozsahleho webu.

habendorf: Já teď bohužel nemám čas, mohl bych se ti na to blíže mrknout až po víkendu.

To bys byl hodny. Fakt nevim co s tim.


habendorf: Zkus se podívat třeba na

http://www.1-webdesign.cz/projects/dps/ nebo
http://www.1-webdesign.cz/projects/primakava/


Moc pekne weby. Problem je v tom, ze na rozdil od toho meho nejsou "gumove", a pri zmenseni okna se objevi vodorovny posunovnik. Mne se sirka praveho divu vypocitava z sirky okna prohlizece. Proto je tam ta konstrukce

width: expression(document.body.clientWidth - 150);

ktera dela problemy pri tisku.

Jeste jednou diky za ochotu.
*Čvachta*
Profil *
rodis

Moje teorie je taková, předkládat prohlížeči styl pouze pro screen, při tisku to nechat na prohlížeči - prohlížeč použije jeho výchozí formátování.
rodis
Profil
*Čvachta*Moje teorie je taková, předkládat prohlížeči styl pouze pro screen, při tisku to nechat na prohlížeči - prohlížeč použije jeho výchozí formátování.

Problem zacina tehdy, kdyz se ze stranky chce vytisknout pouze nektery div. A kdyz jsou divy absolutne pozicovane, tak je to, alespon zatim pro me, pekne peklo.
Pokud jsem nemel styl media print udelany vubec, tak to pri tisku orizlo stranku tak, ze chybela nejen prava cast (coz nyni resim), ale i spodek, ktery prave nebyl videt na obrazovce.
*Čvachta*
Profil *
rodis

Přidejte do všech souborů další styl.


		<link rel="stylesheet" href="style/print.css" type="text/css" media="print" />		

<link rel="stylesheet" href="style/styl.css" type="text/css" media="screen" />


Jeden styl.css je pro obrazovku, pro tisk se použije print.css -> print.css bude vycházet z defaultního stylu prohlížeče.

A že je to zdlouhavé přidávat do každého souboru? Co napsat nějaký script co to udělá za vás?
rodis
Profil
*Čvachta*: Jeden styl.css je pro obrazovku, pro tisk se použije print.css -> print.css bude vycházet z defaultního stylu prohlížeče.

Vyzkousel jsem. Mozna by to fungovalo, kdyby nebyla pouzita konstrukce
width: expression(document.body.clientWidth - 150);
Jenomze to by fungovali vsechny ostatni predchozi pokusy.
Jadro problemu je v tom, ze si sirku pro tisk bere ze sirky okna prohlizece a ne nadefinovaneho stylu v media print. Vzhledem k tomu, ze to dela pouze IE, tak se asi jedna o chybnou interpretaci M$

*Čvachta*: Přidejte do všech souborů další styl.
<link rel="stylesheet" href="style/print.css" type="text/css" media="print" />
<link rel="stylesheet" href="style/styl.css" type="text/css" media="screen" />


Myslim, ze je jedno, jestli je to ve dvou souborech nebo v jednom. To je pouze kosmeticka zalezitost. Dulezite je, aby prislusny styl byl uvozen media print nebo media screen
rodis
Profil
Jo jeste jedna poznamka, ilustrujici problem.
Pokud styl pro tisk nastavim take pro screen, abych ho videl na monitoru, vse pracuje naprosto spravne. Jak na monitoru, tak v nahledu tisku.
Vratim-li to zpet, je tu stary problem.
Jiz z toho jsem na uvod usuzoval na problem s konstrukci

width: expression(document.body.clientWidth - 150);

v media screen.
Takze problem je opravdu v IE a spis jde o to, jestli se to da obejit.
habendorf
Profil
rodis: Problem je v tom, ze na rozdil od toho meho nejsou "gumove", a pri zmenseni okna se objevi vodorovny posunovnik.

Ta primakáva je gumová v rozmezí 770 - 1024px.
rodis
Profil
habendorf Diky za inspiraci na primakave. Vsiml jsem si, ze vlastni div s textem mas obalen divem, kteremu prirazujes sirku pomoci expression.
Zkusil jsem to taky a ono to funguje. Viz

http://rodis1.webzdarma.cz/hotovo/hist2.html

http://rodis1.webzdarma.cz/hotovo/skola.css

Ted to jeste budu muset overit na ostatnich strankach a doplnit do nich ten jeden obalovaci div.

Kdyz by te napadlo neco jineho, tak napis.

Vsem diky za napady.
habendorf
Profil
Bezva. Jinak ty expressiony na primakávě jsou jen jako zarážky, aby se to nezmenšovalo pod 770 a nezvětšovalo nad 1024. Je to jen náhrada za min- a max-width, které IE neumí. Kdyby tam nebyly, nic by se nestalo, layout by normálně zůstal gumový, jen by v IE chyběly ty zarážky. V ostatních prohlížečích by ty zarážky normálně fungovaly dál.
rodis
Profil
Dobra finta :-)
Ice
Profil
Zkuste si prosim zobrazit nahled v IE http://www.art-pgn.info/ tiskne mne to useknute pravou stranu. Jak vam se to zobrazuje?
Plaváček
Profil
Ice

Jak koukám, tak sis vcelku šikovně vypůjčil zdrojové kódy z webu ART-PGN, ale nehněvám se :) Ta useknutá pravá strana souvisí s jednou chybou v IE, kterou jsem objevil nedávno. Pokud totiž použiješ expressions pro simulaci maximální a minimální šířky, IE ji aplikuje i pro tisk (což je samozřejmě blbost, ale je to tak).

Je třeba v tiskovém stylu (v tvém případě print.css) definovat vlastnost pro bloky, kterým nastavuješ rozměry pomocí expressions takto:

#max, #min {width:100% !important;}

A hle, i JESPRP se chová způsobně :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0