Firefoxで表示する際、word-break:break-all;が利用できずレイアウトが崩れる事がよくある。当サイトも当初は左メニューから英単語がはみ出してしまっていた。
上記設定はIEでは有効で、ブロック要素の範囲からはみ出す部分を折り返すようになる。Forefoxでは、折り返さず、はみ出してしまう。
- Q.かっこ悪いはみ出しを抑制するにはどうすればいいか?
- A.<wbr>タグを使いましょう。
<wbr>タグとは任意の位置で改行してもいいですよという機能である。
じゃぁ、どこに入れる?
ここです↓。
- Wiki/HTMLParser.pm (FSWiki-3.5.10)
--- lib\Wiki\HTMLParser.pm.org Tue Dec 06 01:02:35 2005
+++ lib\Wiki\HTMLParser.pm Wed Apr 05 12:53:34 2006
@@ -415,12 +415,14 @@
if($url eq $name && $url=~/\.(gif|jpg|jpeg|bmp|png)$/i){
return "<img src=\"".$url."\">";
} else {
+ $name = &Util::escapeHTML($name);
+ $name =~ s/\//\/<wbr>/g;
if($self->{wiki}->config('open_new_window')==1 &&
($self->{wiki}->config('inside_same_window')==0 ||
($self->{wiki}->config('inside_same_window')==1 && index($url,'://') > 0))){
- return "<a href=\"$url\" target=\"_blank\">".Util::escapeHTML($name)."</a>";
+ return "<a href=\"$url\" target=\"_blank\">".$name."</a>";
} else {
- return "<a href=\"$url\">".Util::escapeHTML($name)."</a>";
+ return "<a href=\"$url\">".$name."</a>";
}
}
}
@@ -436,11 +438,13 @@
if(!defined($name) || $name eq ""){
$name = $page;
}
+ $name = &Util::escapeHTML($name);
+ $name =~ s/\//\/<wbr>/g;
if($self->{wiki}->page_exists($page)){
return "<a href=\"".$self->{wiki}->config('script_name')."?page=".&Util::url_encode($page)."\" class=\"wikipage\">".
- &Util::escapeHTML($name)."</a>";
+ $name."</a>";
} else {
- return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
+ return "<span class=\"nopage\">".$name."</span>".
"<a href=\"".$self->{wiki}->config('script_name')."?page=".&Util::url_encode($page)."\">?</a>";
}
}
|
これで、"/" のところで改行されるようになります。というところで、左側のメニューなどではちゃんと改行されているでしょ?
サイト構成の利用状況等で"_"や","や"-"などでも改行されるようにすれば良いかもしれませんね。