Autor Zpráva
Pebrach
Profil *
Pěkný den.
Snažil jsem se hledat způsob, jak u divu oříznout obsah třemi tečkami na konci. Nevím, zda jsem to dostatečně vysvětlil. Mám div se šířkou 250px, ale celý text dejme tomu o 150 slovech se mi tam nevejde. Já potřebuji udělat to, aby se v divu zobrazila ta slova, která se tam vejdou a za nimi byly 3 tečky.
Chamurappi
Profil
Reaguji na Pebracha:
Internet Explorer podporuje vlastnost text-overflow, Opera ji tuším zná jako -o-text-overflow, v ostatních prohlížečích nejspíš nic moc.

V HTML a CSS jde pomocí několika dalších elementů vykouzlit taková finta, že se v případě potřeby trojtečkou s neprůhledným pozadím překryjí poslední viditelná písmena. Nevím, jestli je známá, nebo jestli si ji mám patentovat :-) … zase tak geniální není. Počkám nějakou dobu, jestli ji vymyslí i někdo další.
Radek Cvek
Profil
V HTML+CSS se dá dělat spousta věcí, ale tak pěkně, aby to nepůlilo slova, to nepůjde.
V PHP by se to dělalo nějak takto:
<?php
function utf8_substr($str,$from,$len)
  {
  return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s', '$1',$str);
  }
$maximalniDelkaTextu = 200; //znaků
if (mb_strlen($text) > $maximalniDelkaTextu)
  {
  $upravenyText = utf8_substr($text, 0, $maximalniDelkaTextu, 'UTF-8');    
  $upravenyText  = utf8_substr($upravenyText, 0, mb_strrpos($upravenyText, ' ', 'UTF-8'), 'UTF-8');
  $upravenyText .='...';
  }     
  else $upravenyText = $text; 
?>
Alphard
Profil
Radek Cvek:
Má vaše funkce utf8_substr() nějaké výhody oproti mb_substr()?
Radek Cvek
Profil
Alphard:
Funkci utf8_substr jsem našel na nějakém diskuzním fóru a od té doby ji používám. Vzpomínám si, že mi to dalo dost hledání, ale už nevím proč. Předpokládám, že mb_substr na mém hostingu v té době neexistovala. Že tam byla starší verze PHP.
jenikkozak
Profil
Uvedená řešení mají pár problémů, na něž je třeba myslet. Jednak obrázek se třemi tečkami nepůjde umístit tak, aby pokaždé nepřekrýval jen část delšího znaku, nebude-li použito neproporciální písmo. Dále by se tento obrázek reatovat na změny velikostí písma. Jednak aby tečky nebyly moc velké, jednak aby trojtečka nebyla na konci řádku, když text obsahuje jedno slovo zarovnané doleva.
Řešit tohle v PHP má problém v tom, že zde se nedá zjistit velikost písma v prohlížeči - uživatel bude s držením Ctrl rolovat kolečkem a ejhle, tři tečky zmizí (bude-li mít blok nastaveno overflow:hidden).
Chamurappi
Profil
Reaguji na sebe:
V HTML a CSS jde pomocí několika dalších elementů vykouzlit taková finta […] Počkám nějakou dobu, jestli ji vymyslí i někdo další.
Nikdo nic nevymyslel (nebo si spíš mé výzvy nikdo nevšiml), tak napovím, že se při tom využívá float a záporný margin.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0