Autor Zpráva
Šéva
Profil
Zdravím,
z DB si vypisuji data a na konci každého záznamu mám <pagebreak />.
Podle toho si upravím text že ho zavřu do divu a v css si nastavim velikosti,podbarvení atd... to vše funguje dobře,ale jak by se dalo udělat,jestli to tedy vůbec půjde, aby když je text delší než mám nastavenou maximalní velikost toho divu, tak aby se automaticky šoupl do dalšího divu?
Přikládám příklad,jak to mám dělané:
PHP
$hledana_cast='<div style="page-break-after: always">
    <span style="display: none;">&nbsp;</span></div>';
$nahrada='<div style="page-break-after: always">
    <span style="display: none;">&nbsp;</span></div></div><div id="stranka">';
  echo "<div id='stranka'>";                              
  while($vysledek=mysqli_fetch_array($aaa))
       {
       $text=str_replace($hledana_cast,$nahrada,$vysledek["text"]);
       $text=str_replace('"','\"',$text);      
        eval("\$b=\"$text\";");
        echo "$b";
        }

CSS
#stranka
{
width:17cm;
height:25cm;
background-color: lightblue;
padding: 4cm 2cm 3cm 2cm;
overflow:auto;
margin:0cm 0cm 2cm 0cm;
}
crash01
Profil
K čemu tam je ten eval?

Kromě počítání znaků mě nenapadá jak to čistě pomocí HTML/CSS a PHP udělat. Každopádně v Javascriptu by to bylo na pár řádků.
peta
Profil
eval("\$b=\"$text\";");
$b = $text; // nedela to to same?

$text = 'Ahoj;'
$a = 'b';
$b = 'text';
${$a} = ${$b};
echo $b;

Kolik se do divu vejde textu se da zjistit az pri vykreslovani stranky, cili v JS a ne PHP.
Lze to odhadnout podle fontu a radku, typu a velikost, ale neni to uplne presne. Kazdy prohlizec ma vlastni sadu fontu. Navic, by se to muselo pocitat znak po znaku, mezery mezi znaky a tak.
Javascriptem to muzes osidit tak, ze udelas div, nastavis sirku, do nej das text. On se natahne. Zjistis vysku. Vysku podeslis vyskou, jakou chces ty, spocitas pocet divu. Vytvoris pocet divu, nastavis overflow, pridas dovnitr kazdeho divu div, ktery naplnis ho textem. A ted prijde ta pekna finta, kdy kazdy vnitrni div posunes o prislusny pocet px nahoru. Budes tad mit treba 3 divy s divem uvnitr, s plnym textem, ale vnejsi div a posunuti vnitrniho divu zhora zajisti efekt, ktery chces.
Šéva
Profil
crash01:
ma v tom textu který vypisuji z DB $promenne a ty potřebuji oživit,je to jen na intrawebu,není to někde na volně přístupných stránkách,takže jsem to mohl použít a o pár řádků nad tím si nastavuji hodnoty proměnných podobným způsobem

peta:
nemohl by jsi mi prosimte sem hodin ten kus JS kodu? JS vubec neovládám, maximálně sem tam něco pozměnit v již vytvořeném kodu, když zrovna vim,co to zhruba dělá :D
jinak ten overflow: je tam jen z toho důvodu, aby mi text nemizel pod ten nasledující div, samozdřejmě bych ho tam ve finále nechtěl mít,kdyby si to ty stránky umělo dělat samo...

jinak,mohl by jsi mi prosím doplnit mezeru v PHP ohledně tohoto?
${$a} = ${$b};
nebo aspoň říct, co to je,pak už bych si to nastudoval...

Díky
crash01
Profil
Pak na to mrknu, ale tady se řešilo něco podobnýho http://stackoverflow.com/questions/7296845/fitting-text-into-a-fixed-size-div

Jinak stačí hledat něco ve stylu "javascript height paginate"

K tomu evalu:
Ukladát proměnné přímo v textu je dost prasárna - i když se to teď neřeší, podíval bych se na návrh databáze.
peta
Profil
Šéva: Jen mne napadlo, ze tam ten eval treba nutne potrebujes. Tak, ze to jde napsat i jinak, pomoci slozenych zavorek. Vetsinou se tento zapis nedoporucuje, ani eval, ale uz jsem byl nucen to parkrat pouzit pro usporu kodu nebo reseni problemu se superglobalnimi promennymi.

Co to dela? Zkousil jsi vsechny ty radky dat do php kodu? Tak ted zkus tyhle.
$a = 'ahoj';
echo $a;
echo ${'a'};

JS ti psat nebudu, musel bych ho vymyslet. V CSS to nejde rozdelit. Tema je ve foru CSS. Tim problem v CSS pro mne hasne :)
V PHP to rozdelit jde, ale bylo by to slozitejsi a musel bys dodrzet spoustu podminek pro stejny graficky vzhled. Slo by to mozna vykreslit do obrazku. Nebo by slo z obrazku ziskat rozmery pismen a mezer. PHP kod ti rovnez psat nebudu, musel bych ho vymyslet.

K tomu JS, mel jsem mozna pridat principialni obrazek
Toto je nejaky pokusny text MMMM iii
Toto je nejaky pokusny text MMMM iii // kdyz je sirka znaku stejna
Toto je nejak // toto je max delka stranky
Toto je nejak|y pokusny te|xt MMMM iii
Toto je nejak.......................................
....................y pokusny te...................
........................................xt MMMM iii
Takto se to ukaze v divech, tecky (.....) jsou tecky, ktery pretekl
JS: width, height, createNode
CSS: position, top, overflow
CSS: clip (position)
Šéva
Profil
peta:
k tomu PHP,ty řádky jsem si vyzkoušel,ale nějak jsem z toho nebyl uplně moudrej principiálně...

k tomu kodu... jelikož už jdu dneska domu a zektra budeme nějak částečně prezentovat tu aplikaci kterou vytváříme, tak to do té doby už nestihnu nastudovat a doma se s tím nechci zabývat... ale díky za tip, jak na to...

PS: v případě, že by se ti přeci jen chtělo sem postnout ten JS, byl bych ti vděčný :)
margin
Profil *
peta:
Kazdy prohlizec ma vlastni sadu fontu.
Cože? Neznám mainstreamový prohlížeč, který by měl "vlastní sadu fontů", prohlížeče berou písma z operačního systému, případně písma stahují z webu (@font-face).
peta
Profil
margin: Kdyz myslis.
http://www.slu.cz/fpf/cz/ustav-bohemistiky-a-knihovnictvi/web-kinematograf/test2
Pokud tedy pouzili oba prohlizece stejny font, proc ta stranka vypada jinak v IE9 a jinak ve FF12? A to sem mu jeste pro IE pridal font-size
font-size:12px;
&font-size:14px;
Vyska je jinak, v IE tam ma aliasing, ackoliv ho ve win mam vyple, sirka, ta je uplne jinak.
margin
Profil *
pete, mám mlhavé tušení, že by to mohlo být rozdílným (výchozím) nastavením prohlížečů. Na vlastní sady fontů bych to nesváděl ani v mokrých kodérských snech.
peta
Profil
margin: Cili, tobe se to ukazuje vsechno v poradku, uplne stejne. Zajimave.
U mne se zobrazuje v IE i po zvetseni arial mensi a pismenka vic natlacena k sobe.
Nehlede na to, ze problem ruznych fontu prohlizecu se tu resil uz pred 10 lety.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0