IEのmin-heightは仲間はずれ, min-width, max-widthを実装するヒント
IE6 で element.styleを列挙してみると、element.style.minHeight だけがリストアップされることに気がつきました。
しかし、max-height, min-width, max-width などは見当たりません。
試しに、element.style.minHeight に値をセットしてみても期待した動きはしませんでした。
調査
<style> #dummy { min-width: 16em; max-width: 32em; min-height: 160px; max-height: 320px; } </style>
PropertyName | element.currentStyle | element.style |
min-height | undefined | undefined |
max-height | 320px | undefined |
min-width | 16em | undefined |
max-width | 32em | undefined |
minHeight | 160px | "" |
maxHeight | undefined | undefined |
minWidth | undefined | undefined |
maxWidth | undefined | undefined |
currentStyle の隠しプロパティ(DontEnum属性付きのプロパティ)を列挙してみると素のCSS名のままで設定値が残されています。
これをうまく組み合わせれば、CSSをパースせずにmin-width, max-heightに対応できそうです。
って、ここまで書いてググったら、minmax.jsってのがすでにあるんだね。
# ちょっと恥ずかしいけどまぁいいや。ここ2年ぐらいWeb界隈から離れててその手の情報がまったく入ってなかったし。
参考までに、minmax.jsの中身も拝見したのですが、大筋の発想は上記の考え方でOKっぽいです。
実装が終わったら、続きをここで報告します。
反省会
- IEの実装は中途半端だよね。
- あれかな? バグが収束しないもんだから、鶴の一声で追加予定の機能が凍結されちゃって、中途半端な状態で放置されてる匂いがするね。
- 良識ある中の人なら「せめて中途半端な機能を不可視にして出荷したい」と考えるけど、それすら許されない開発状況だったのかね。
- あれかな? バグが収束しないもんだから、鶴の一声で追加予定の機能が凍結されちゃって、中途半端な状態で放置されてる匂いがするね。
- currentStyle の隠しプロパティに気づくまでは、「CSSパーサーも書かなきゃダメ?…」とうっへりしてたので、残してあるならあると言ってほしかったです。
- min-heightに限らず、他のプロパティも取れる? border-radius とか box-shadow とか
- currentStyleで取れる!! ちょっとうれしい発見かも。