#1 5. 9. 2007 19:08

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 4050
Web

Nová vlastnost $texy->alignClasses

Doplnil jsem do Texy rev. 177 novou vlastnost $texy->alignClasses. Jde o názvy tříd, které se budou používat pro vertikální nebo horizontální zarovnání:

/** @var array  CSS classes for align modifiers */
public $alignClasses = array(
    'left' => NULL,
    'right' => NULL,
    'center' => NULL,
    'justify' => NULL,
    'top' => NULL,
    'middle' => NULL,
    'bottom' => NULL,
);

Ve výchozí konfiguraci obsahuje pole prázdné prvky, což znamená, že Texy k zarovnání použije přímý styl:

Nejaky text .<>

---> <p style="text-align: center">Nejaky text</p>

Využijeme $texy->alignClasses:

$texy->alignClasses['center'] = 'center';

---> <p class="center">Nejaky text</p>

V případě obrázků se tato vlastnost duplikuje s $texy->imageModule->leftClass & rightClass. Texy bude přednostně používat původní proměnné, ale pokud nebudou nastaveny, použijí se hodnoty z pole $texy->alignClasses.

Trošku jinak se chová FigureModule. Pokud nenastavíte $texy->figureModule->leftClass nebo $rightClass, aplikuje se na plovoucí <div> třída, jejíž název se vytvoří takto:

class = $texy->figureModule->class . '-' . $texy->alignClasses['left']; // resp. 'right'

Proč ten spojovník? Používat třídy místo přímých stylů má řadu výhod. Ale také obnáší jeden problém: IE 6 špatně chápe vícenásobné třídy. Konkrétně třeba CSS definici .figure.left { float: left } chápe jako .left { float: left }, tedy ignoruje .figure. A to se právě týká plovoucích obrázků s popiskou. Nastavení…

$texy->figureModule->class = 'figure'; // výchozí nastavení
$texy->alignClasses['left'] = 'left';

…by převedlo vstup [* obrazek.jpg >] *** Obrazek s popiskou na <div class="figure left">. Což by mohlo způsobit problémy se stylováním. Takže zde je výjimka: třídy se spojí do jednoho identifikátoru figure-left.

Offline

 

Zápatí

Reklama: Školení PHP | Magento