Autor | Zpráva | ||
---|---|---|---|
Pebrach Profil * |
#1 · Zasláno: 28. 1. 2011, 15:23:03
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 |
#2 · Zasláno: 28. 1. 2011, 15:35:52
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 |
#3 · Zasláno: 28. 1. 2011, 16:04:56
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 |
#4 · Zasláno: 28. 1. 2011, 16:08:35
Radek Cvek:
Má vaše funkce utf8_substr() nějaké výhody oproti mb_substr()? |
||
Radek Cvek Profil |
#5 · Zasláno: 28. 1. 2011, 16:21:48 · Upravil/a: Radek Cvek
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 |
#6 · Zasláno: 28. 1. 2011, 16:29:13
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). |
||
Časová prodleva: 2 měsíce
|
|||
Chamurappi Profil |
#7 · Zasláno: 28. 3. 2011, 22:55:38
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 .
|
||
Časová prodleva: 13 let
|
0