方針

  • リストの左マージンや階層間間隔は Skin として指定すべき。
  • タグ中に style 属性を直に指定されると、外部CSSが優先順位で負けるために都合が悪い。

改造

  • lib/convert_html.phpclass ListContainer にて、
      1
      2
      3
      4
      5
      6
      7
      8
    
     class ListContainer extends Element
     {
         var $tag;
         var $tag2;
         var $level;
    -    var $style;
    -    var $margin;
    -    var $left_margin;
    
  • 同クラスの function ListContainer にて、
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
    
     function ListContainer($tag, $tag2, $head, $text)
     {
         parent::Element();
     
    -    $var_margin      = '_' . $tag . '_margin';
    -    $var_left_margin = '_' . $tag . '_left_margin';
    -    global $$var_margin, $$var_left_margin;
    -
    -    $this->margin      = $$var_margin;
    -    $this->left_margin = $$var_left_margin;
    
  • 同クラスの function setParent にて、
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
    
         function setParent(& $parent)
         {
             global $_list_pad_str;
             
             parent::setParent($parent);
             
             $step = $this->level;
             if (isset($parent->parent) && is_a($parent->parent, 'ListContainer'))
                 $step -= $parent->parent->level;
             
             $margin = $this->margin * $step;
             if ($step == $this->level)
                 $margin += $this->left_margin;
    -        
    -        $this->style = sprintf($_list_pad_str, $this->level, $margin, $margin);
         }
    
  • 同クラスの function toString にて、
      1
      2
      3
      4
      5
    
         function toString()
         {
    -        return $this->wrap(parent::toString(), $this->tag, $this->style);
    +        return $this->wrap(parent::toString(), $this->tag, ' class="list'.$this->level.'"');
         }
    
    • 階層毎に異なるスタイルを指定する場合は、従来のまま .list1.list2.list3 を利用。
    • 全階層に共通のスタイルを指定する場合は、タグ名を利用すれば良い。そのスタイルを上書きするスタイルは削除済み。
  • default.ini.php にて、
      1
      2
      3
      4
      5
      6
      7
      8
      9
    
    -/////////////////////////////////////////////////
    -// リスト構造の左マージン
    -$_ul_left_margin = 0;   // リストと画面左端との間隔(px)
    -$_ul_margin = 16;       // リストの階層間の間隔(px)
    -$_ol_left_margin = 0;   // リストと画面左端との間隔(px)
    -$_ol_margin = 16;       // リストの階層間の間隔(px)
    -$_dl_left_margin = 0;   // リストと画面左端との間隔(px)
    -$_dl_margin = 16;        // リストの階層間の間隔(px)
    -$_list_pad_str = ' class="list%d" style="padding-left:%dpx;margin-left:%dpx"';
    
  • 一例として、skin/default.css にて、次のように纏めて指定可能。
      1
      2
      3
      4
      5
      6
    
        ul li, ol li, dl dd
        {
            line-height :130%;
            margin-left : 1em;
            padding-left: 0em;
        }
    初基 一覧 検索 最新 バックアップ リンク元   ヘルプ   最終更新のRSS