1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
#freeze
TITLE:リスト系書式のスキーン変更
#indent
// / L318x L323x L352x L373
//-- default.ini.php / 特殊シンボル
 
////////////////////////////////////////////////////////////////
* 方針 [#m982063f]
- リストの左マージンや階層間間隔は Skin として指定すべき。
- タグ中に style 属性を直に指定されると、外部CSSが優先順位で負けるために都合が悪い。
- 削除。
 
////////////////////////////////////////////////////////////////
* 改造 [#ude0b949]
- ##lib/convert_html.php## の ##class ListContainer## にて、
    #code(diff){{{{
     class ListContainer extends Element
     {
         var $tag;
         var $tag2;
         var $level;
    -    var $style;
    -    var $margin;
    -    var $left_margin;
    }}}}
- 同クラスの ##function ListContainer## にて、
    #code(diff){{{{
     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## にて、
    #code(diff){{{{
         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## にて、
    #code(diff){{{{
         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## にて、
    #code(diff){{{{
    -/////////////////////////////////////////////////
    -// リスト構造の左マージン
    -$_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## にて、次のように纏めて指定可能。
    #code(css){{
        ul li, ol li, dl dd
        {
            line-height : 130%;
            margin-left :1.5em;
            padding-left:  0em;
        }
    }}
 
////////////////////////////////////////////////////////////////
    初基 一覧 検索 最新 バックアップ リンク元   ヘルプ   最終更新のRSS