- ベストアンサー
スクロールバーの幅を取得する方法と解決策
- CSSの overflow-y: scroll; で表示される垂直スクロールバーについて説明します。
- スクロールバーの幅が変わる問題について詳しく説明し、解決策を求めています。
- JavaScriptを使用してスクロールバーの幅を取得し、初期表示時に補正する方法について考えています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<offsetWidth> = <clientWidth> + <border-(left|right)-width> + <スクロールバー幅> <clientWidth> = <width> + <padding-(top|bottom)> - <スクロールバー幅> ※CSS の実装方向にもよりますが、現行主要ブラウザはこの関係が成立します。
その他の回答 (1)
- satomi3951
- ベストアンサー率71% (98/137)
スクロールバーだけ表示したいって事は、スライダーが欲しいって事じゃないでしょうか? jQueryUIのスライダーとかどうでしょう? http://jqueryui.com/ あるいは、fleXcroll等で、スクロールバーのデザインを自分で変えてしまえば、 常に同じサイズになりませんか? http://www.hesido.com/web.php?page=customscrollbar
- 参考URL:
- http://jqueryui.com/
お礼
回答ありがとうございます。 質問内容が分かりにくく申し訳ありません。 Excelの「ウィンドウ枠を固定」と同様のことをHTML/JavaScriptベースで実現するために、 複数のTABLEを配置し、独立表示させたスクロールバーで同期させるという力技を、 更にパラメータによって表の数や連動対象も変更できるよう動的に生成しながらやっているため、 「スクロール部品をごっそり別のものに変える」という選択が、今となっては困難なのです。 せっかく教えて頂いたのに、申し訳ありません。 補足:単純に横幅を18pxより大きくするのではダメな理由 スクロールバーは表の右側に接するように表示させています。 これより大きな横幅にすると、表から離れてしまいます。 CSSのleftで表示位置を補正すれば良いのですが、 その補正値の算出には「現在のスクロールバーの太さ」の値が必要になります。 詳細情報が後だしになってしまい、申し訳ありませんでした。
お礼
素晴らしい情報です。 これで解決できそうです。 ありがとうございました。