Home > Latest topics

Latest topics > splitterの前後の要素の大きさを変える時の注意

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

splitterの前後の要素の大きさを変える時の注意 - Feb 02, 2007

もう一つ小ネタ。Split Browserで詰まった箇所。

splitter要素は、ドラッグすると、前後に置かれた要素の大きさを伸縮してくれる。この時、前後の要素の属性一覧とかを見ると、伸縮後の幅(width)もしくは高さ(height)が属性として指定されていることが分かる。

前のエントリに書いたように、「常にツールバーだけは表示される要素」みたいなものをスプリッタの隣に置いておく場合、その要素をツールバーだけの状態に自動で折りたたむ処理は、自分で一から書かないといけない。といってもそんなに難しいことはなくて、要するにツールバーの大きさと同じ値を親要素の大きさに指定してやればいい。


<vbox>
  <hbox id="above" flex="1"/>
  <splitter/>
  <vbox id="below" flex="1">
    <toolbar id="bar"/>
    <hbox id="content" flex="1">
  </vbox>
</vbox>

<script>
  function collapse() {
    var box = document.getElementById('below');
    var bar = document.getElementById('bar');
    box.height = bar.boxObject.height;
  }
</script>

ただ、これには一つ問題がある。折りたたむ方はこれでいいんだけど、元の状態に戻す、つまり畳まれたボックスを広げ直す時には、同じやり方をやっても望んだとおりの大きさにまでボックスが広がってくれないことがある。

これは何故かというと、スプリッタの前後の片方にある要素の大きさを指定し直しても、反対側にあるもう一つの要素の大きさ指定がそのままになっているからだ。畳まれたボックスを狙ったとおりの大きさに広げるには、反対側にある要素のサイズ指定も同時にいじってやらないといけない。


function collapse() {
  var box = document.getElementById('below');
  var bar = document.getElementById('bar');
  box.lastheight = box.boxObject.height;
  box.height = bar.boxObject.height;
}

function expand() {
  var box     = document.getElementById('below');
  var sidebox = document.getElementById('above');
  var last    = box.lastheight;
  var current = box.boxObject.height;
  sidebox.height = sidebox.boxObject.height - (last - current);
  box.height     = last;
}
分類:Mozilla > XUL, , , , 時刻:12:04 | Comments/Trackbacks (0) | Edit

Comments/Trackbacks

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2007-02-02_splitter-size.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード