2009年4月12日日曜日

IE8で特定の条件で white-space: nowrapが暴走するバグ

レアなケースだが、下記の条件を満たすと、white-space:nowrapが指定した要素の外にも効力を発揮してしまうようだ。

条件

  • nowrapにする要素は、table要素の中にある
  • table要素の親要素がfloatになっている
  • nowrapにする要素が複数並んでいる
  • nowrapにする要素内の先頭には、inputやimg等の要素がある(a要素の場合は問題なかった)


上記の条件を満たすと、nowrapにする要素と次のnowrapにする要素の間も改行されなくなる。


バグが発生するHTMLの例
<style type="text/css">
span{
white-space: nowrap;
}
</style>

<div style="float:left; width:12em; background-color:#fff">
<table>
<tr>
<td>
<span>IE8改行バグの例</span>
<span><input type="text" /></span>
<span><img src="sample.gif" /></span>
</td>
</tr>
</table>
</div>

IE8で表示すると↓spanと次のspanの間のところで改行されず、横にはみ出してしまう。



IE7では正常↓



Firefoxでも正常↓

Are you ready for PHP 5.3 ?

PHP5.3についてのIBMによる解説記事シリーズ
冒頭の一文を並べると面白い。


最初の頃は、

第 1 回 2008年 11月 11日
PHP V5.3 は 2008年の終わりまでにリリースされる予定であり、...
第 2 回 2008年 12月 09日
この「PHP V5.3 では何が新しいのか」シリーズの記事では、2008年の末までにリリースされる予定の PHP V5.3 の、...

それが2008年末を過ぎると、
第 3 回 2009年 01月 20日
PHP V5.3 がまもなくリリースされようとしています。...
第 4 回 2009年 01月 27日
PHP V5.3 がまもなくリリースされようとしています。...
第 5 回 2009年 02月 24日
この「PHP V5.3 では何が新しいのか」シリーズでは、まもなくリリースされようとしている PHP V5.3 の、

順調に遅れたという感じか。


ここから本題。

PHP 5.3の注目機能はやはり名前空間とクロージャ。
クロージャは最低限の使用にしないとチームでの開発には支障が出そうだけど。

そして、
非推奨となった項目
PHP V5.3 から、古い関数が正式に非推奨となり、今後の PHP のバージョンでは使用できなくなります。これらの関数を使用すると E_DEPRECATED エラーが出力されます。PHP V5.3 では以下の関数が非推奨となっています。
(中略)
ereg 正規表現関数: この関数の代わりに PCRE 正規表現関数を使うことが推奨されています。PCRE 正規表現関数の方がはるかに高速であり、しかも他の言語やアプリケーションで使われている正規表現と一貫性があるからです。ereg 関数はサポートされなくなるため、PHP を 1 つの正規表現エンジンで標準化することができます。
えええ!!!これは影響がある。
preg系ってUTF-8以外のマルチバイトを完全に扱えるようになったのかな???

ブログ アーカイブ

tags