しらぎくモバイルシステム VIに於けるiモード向けXHTMLでのリスト項目マーカ。

しらぎくモバイルシステム VIに於いて、第0.9510版(平成21年11月12日)から実装したiモード向けXHTMLに対し、クラス属性やIDで指定された箇条書きリスト(<ul>要素)直下の各リスト項目(<li>要素)の冒頭に指定したマーカを与える機能についての解説です。

しらぎくモバイルシステム VIに於けるiモード向けXHTMLでのリスト項目マーカの概要。

この機能は、CSSのlist-styleプロパティが使えないiモード向けXHTML対応端末で、指定された箇条書きリスト(<ul>要素)直下のリスト項目(<li>要素)の冒頭に設定で指定されたマーカを与える機能です。

KDDI/沖縄セルラーなど、ドコモ以外の各社の携帯電話のモバイルブラウザは大半がCSSに対応しており、従ってlist-styleプロパティを用いてマーカに画像を与える事が可能です。

  • 但し、モバイルブラウザ用のCSSでは:before擬似要素セレクタが使えないため、文字をマーカにすることは出来ません。

WAP 2.0向けにCSSでリスト項目にマーカを与えようとすると、iモード向けXHTML端末でKDDI/沖縄セルラー端末などとの表現の差が出てしまうため、何とかこの差を減らすべく、iモード向けXHTML端末に対してはHTML出力操作でマーカを与える機能を導入したものです。

しらぎくモバイルシステム VIに於けるiモード向けXHTMLでのリスト項目マーカの使い方。

擬似枠線サポートの対象となる端末。

リスト項目にマーカを附与する機能の対象となる端末は以下の通りです。

WAP 2.0向けCSSを用意している場合
iモード向けXHTML対応ドコモ端末に適用されます。
  • WAP 2.0携帯電話についてはCSSで枠線が引けるのでCSSでリスト項目へのマーカを指定してください。
WAP 2.0向けCSSを用意していない場合
  • WAP 2.0携帯電話
  • iモード向けXHTML対応ドコモ端末

に適用されます。

尚、いずれの場合でもcHTML端末(旧世代機)に対しては適用いたしません

リスト項目にマーカを与える対象となる要素。

設定で指定したクラス名(class属性)またはID(id属性)を与えられた<ul>要素直下にある<li>要素の冒頭にマーカが与えられます。

  • <li>要素にクラス名やIDを与えても部分的にマーカを変えたりする事は出来ません。

リスト項目へのマーカの設定方法。

設定ファイル「KConfig.pl」内の初めの {} の間に,以下の文を入れます。

クラス名で指定する場合
$listMarkerByClass{'クラス名'}='マーカ';

このとき、クラス名は指定したい箇条書きリスト(<ul>要素)に与えるclass属性の値となる文字列です。

IDで指定する場合
$listMarkerByID{'ID'}='マーカ';

このとき、IDは指定したい箇条書きリスト(<ul>要素)に与えるid属性の値となる文字列です。

いずれの場合も、値となるマーカは、

  • http:// で始まる絶対URLで示されるGIF画像またはJPEG画像(PNG画像は使えません)
  • テキスト(設定ファイルの文字コードのエンコーディングと変換対象となるHTML文書の文字コードのエンコーディングが一致している事が必要です)

と空白で二つの値を区切ったものとします。

  • テキストとしてXHTMLを用いる事も可能ですが、その場合は必ずXMLとして整形式になっている必要があります。また、上記の通り、設定ファイルでの文字コードエンコーディングと変換対象HTML文書のそれを必ず一致させてください。
  • 画像に対しては、リサイズは形式変換は行いません。このため、大き過ぎる画像やPNG画像は絶対に指定しないでください。

尚、上記の指定は複数書いても構いません。

該当する指定が複数ある要素への扱い。

マーカ指定で該当する要素が複数ある場合、

  1. IDでの指定
  2. クラス名での指定

と言う優先順位となります。

尚、複数のマーカ指定クラス名を与えている要素に対して、どのクラス名の定義が適用されるかは不定です。

  • このため、マーカを指定したクラス名を複数class属性値にするのは避けた方が良いでしょう。

しらぎくモバイルシステム VIに於けるiモード向けXHTMLでのリスト項目マーカの処理。

先ず、マーカを与える<ul>要素は<dl>要素に変換されます。
これは、<ul>要素のままだと元のマーカが付いたままになり、それを消す事が出来ない事に依ります。
当然、対象となるリストの項目は<dt>要素となり、内容の冒頭に指定されたマーカが附与される事となります。
<dd>要素でも良いのですが(実はこちらの方が都合は良い)、個人的に<dt>要素を含まない<dl>要素と言うのが気に入らないのでこうしております。
リスト項目にブロックレヴェル要素が含まれる場合には、一旦<dt>要素を閉じ、当該要素を<dd>要素の直下に入れるものとします。
当該要素の直後から再度<dt>要素を始めます。

iモード向けXHTMLでのリスト項目マーカの処理の具体例。

HTML文書ソースが以下のようになっているとします。

<ul class="notes">
			    <li>平成21年現在、携帯電話会社のCMアイドルは以下のような状況になっております。
			        <dl>
			            <dt>エヌ・ティ・ティ・ドコモ</dt>
			            <dd>堀北真希</dd>

			            <dt>KDDI/沖縄セルラー</dt>
			            <dd>仲間由紀恵</dd>

			            <dt>ソフトバンクモバイル</dt>
			            <dd>上戸彩</dd>
			            </dl>
			        いずれも、代表的なアイドル女優が起用されているのが分かります。</li>
			    </ul>

このHTMLに於いて、notesクラスではマーカを与えるようにした場合、iモード向けXHTMLでは以下のように変換されます。

<dl>
			    <dt>(指定されたマーカ)平成21年現在、携帯電話会社のCMアイドルは以下のような状況になっております。
			        </dt></dd><dl>
			            <dt>エヌ・ティ・ティ・ドコモ</dt>
			            <dd>堀北真希</dd></dl></dd><dt>
			        いずれも、代表的なアイドル女優が起用されているのが分かります。</dt>
			    </dl>

適切に字下げし直すと、以下のようになります。

<dl>
			    <dt>(指定されたマーカ)平成21年現在、携帯電話会社のCMアイドルは以下のような状況になっております。</dt>
			        </dd>
			            <dl>
			                <dt>エヌ・ティ・ティ・ドコモ</dt>
			                <dd>堀北真希</dd></dl>
			            </dd>
			        <dt>いずれも、代表的なアイドル女優が起用されているのが分かります。</dt>
			    </dl>

iモード向けXHTMLでのリスト項目マーカの処理に於ける注意点。

実際にiモード向けXHTML対応端末向けにリスト項目マーカを操作する場合、以下の点にご留意ください。

  • 先ず、WAP 2.0でのマーカ指定リストと較べ、以下のような表示上の違いが生じます。
    マーカの真下にも折返したテキストが廻り込みます
    見掛け上、list-style-position: inside;プロパティを与えられた状態(通常と異なる状態)となります。
    ブロックレヴェル要素が含まれる場合は、左に余白が生じます
    リスト項目となるインラインテキストは左余白を生じません。
  • また、リスト項目がブロックレヴェル要素で始まっている場合、マーカの直後で改行される事になります。

実際に表示させた例。

制作者が描いた、堀北真希ちゃんの似ていない似顔絵のページ(PC版)

モバイル版みつばなねっと内の制作者が描いた、堀北真希ちゃんの似ていない似顔絵を実際に表示させてみましょう。

  • 設定では
    • WAP 2.0端末に対してはGIF画像で※印を表示させ、
    • iモード向けXHTML対応端末ではテキストの※印をマーカとして表示させる

    ようにしております。

    • 本当はWAP 2.0端末に対してもテキストで※印を付けたかったのですが、:before擬似要素セレクタが使えないため、GIF画像で代用しております。

iモード向けXHTML対応端末では、注釈の冒頭に※印が入り、その真下にテキストが廻り込んで表示され、WAP 2.0対応端末では、CSSに依るスタイル指定に依りマーカとしてGIF画像の※印が表示されます。

  • 表示例はシミュレーションに依るイメージのため、実機では若干異なる場合があります。

最後に

iモード向けXHTMLでの擬似枠線で書いた事と全く同じ考えからこの機能を導入しております。