トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BBS-サポート掲示板/512

ページの作成や編集にはユーザ登録が必要です。

 hr(Wiki書式 ---- )によるブロックレベルの消失 - 名無しさん (2006年03月26日 01時45分13秒)

既出の問題でしたら申しわけありません。 探して見た限りでは見当たらなかったのですが、リスト(ul li)の問題などと同様に既出の可能性が高いのでひとまずこちらに投稿しようと思います。

自分の管理してるサイトとこちらでもテストをしてみましたが、同様の現象が起こるようなので報告です。

テキスト行で<hr>(Wiki書式で----)を囲むと、<hr>挿入前の<P>が終了されてしまい<hr>直後からテキスト行の終端までデザインなどが崩れるようです。

あまりスマートではありませんが HTMLParser.pm の sub l_line で <hr>直後に<p>を入れる事でデザイン崩れは防げるようです。

テスト

----
テスト
----
テスト <-ずれる

----

テスト

テスト


テスト


テスト <-ずれる


テスト

2006/03/27追記

その筋の専門家では無いので私なりにいくつかサイトを見てみたところ

DIV
ブロックレベル : ブロックレベルも入れ子する事が可能
P
ブロックレベル : インラインレベルのみを入れ子する事が可能 終了タグ省略可
HR
ブロックレベル : 空要素
と、厳密な解釈ではPで区切っているFreeStyleWikiの記法だと、文章中に加えるHR(ブロックレベル)はどうしても<P>終了になってしまうらしいです(Pは終了タグを省略可能なので記述無しでもブロックレベルが来たら終了してしまうのでしょう)。 なのでHRの直後から本来存在しているはずの<P>が無く終端に付け加えられる</P>が対応する開始タグのない状況で残ってしまいます。

  • この現象は私も確認しました。HR要素を段落と段落との間で区切る水平線と捉えるなら、崩れるのを防止する方法として、p要素の付加も良い案ですね。Wiki記法の部分で空白行を挟むという方法で対応していました。 - A_M (2006年03月26日 06時04分09秒)
  • 投稿した主な理由を追記してみました。 追記のような解釈が正しいのであればバグなのではないか?と言う事からバグトラックに投稿するつもりでしたが、HTMLに精通していないので解釈が間違っている可能性も考慮しこちらに投稿しました。 - 名無しさん (2006年03月27日 19時55分12秒)
  • 今気付いたのですが、DLなどもブロックレベルのようですのでDLに続けて文章を書いてもPの終了タグが無用になるようです。 この問題は全てのブロックレベル要素に言えそうです。 - 名無しさん (2006年03月27日 20時02分57秒)
  • Firefox1.5.0.1のDOM Inspectorで確認してみましたが、HRやDLがP開始〜終了タグの間の入れ子としては認識されておらず、DIV直下のテキストとしてレンダリングされているようです。 - 名無しさん (2006年03月27日 20時16分53秒)
  • 私もすこし悩んでおり、解決の糸口になりました。Operaだと<hr>前後にさらに空白がひとつずつ必要のようです。 - すなぷ (2006年04月13日 12時48分25秒)
  • HRが「段落と段落との区切り」として扱うので、HR要素の直前で</P>の方がスマートかも知れませんね。実際、HTMLParser.pmのパラグラフ系のパーサは終了させているようです。 - A_M (2006年04月13日 17時43分02秒)
sub l_line {
	my $self = shift;
+	if($self->{para}==1){
+		$self->{html} .= "</p>\n";
+		$self->{para} = 0;
+	}
	$self->end_list;
	$self->end_verbatim;
	$self->end_table;
	$self->end_quote;
	$self->{html} .= "<hr>\n";
}
お名前: コメント:

最終更新時間:2006年04月13日 17時44分25秒