Oznámení

Provoz fóra byl ukončen

Nová vlastnost $texy->alignClasses

před 12 lety

David Grudl
Nette Core | 6806

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.