Oznámení
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
.