
ブラウザの表示領域から高さを指定、ブラウザを動かしても可変させたい。
ブラウザのスクロールバーのように、
ブラウザの表示領域を取得してdivのボックスのサイズを取得して、
それに合わせてボックスの高さを指定し、
overflow:autoでスクロールバーが出るようにしたいと考えております。
サイズの取得までは.clientHeightを使ってできたのですが、
表示後にブラウザを動かすと合わせて可変するようにすることができず困っております。
上記を実現する方法がおわかりの方がいらっしゃれば、
是非ご教授いただければと思います。
No.3ベストアンサー
- 回答日時:
No1です。
ご提示のコード(No1の補足)では、単に以下のようなCSSを作成しているだけです。
<style type="text/css"> .hoge { height:○○px; } </style>
○○の部分は数字で、document.allがある場合(IE)はbodyの高さ、そうでない場合でモダンブラウザならinnerHeightが入ることになります。
後半がいきなりinnerHeightになっているので、対象が何か不明です。(なんだかおかしいですね)
innerHTMLは通常は属性なのでそのもととなる要素があるはずなのですが、ご提示のコードではそれがありません。(withで指定?)あるいは、考えにくいことですが、innerHTMLをローカル変数に使っているとするならどこかで値を代入しているはずで、その部分が提示されていないので不明です。
さらに言うなら、その場合分け自体がすでに古い場合分けの方法なので、現状にあっているのか少々疑問です。
>今回jScrollPane.jsというjavascriptでスクロールバーをカスタマイズしており、
>上記方法では最初のサイズで固定されてしまい、
ご提示のコードだと「○○px」と数値で指定していますので、ご質問の通り固定サイズになっています。
No2様が示されているように、%指定などの相対指定にしておけば、リサイズされても相対的に変化してくれるので、何もしなくてもOKということになります。
ただし、 .hoge { height:100%; } とした場合、該当する要素がどのように構成されているかによって、実際のサイズが決まるので、ご提示の情報だけからではわかりません。
でも、相対指定を利用することで解決できる可能性はありそうですね。
No1で説明した方法ですと、同じルーチンを再実行するのではうまくいきません。(回答時に、document.writeを使っているなんて予想していなかったので)
正攻法でいくならリサイズイベントが発生した時に、スタイルシートを取得して、.hogeの記述を探し、あったらその内容を変更するという少々面倒な処理を追加することになります。
それよりはclass="hoge"の要素(スクリプトで生成される要素?)が都度生成されるものではなく、常に決まっているのであれば、そちらのスタイルを直接変更してしまったほうが簡単です。要素が可変(後で生成されるなど)の場合はスタイルシートを変更するしかないかも。
いずれにしろ、CSSだけで解決できるのなら、そのほうが遥かに簡単です。
No.2
- 回答日時:
横から失礼します。
#1の補足より。
> このようなコードに追記する場合どのように書けばうまく反映されますでしょうか…
そもそも、CSSだけで実現できる内容なのではないでしょうか…。
---------
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>HTML5</title>
<style type="text/css"><!--
html, body { margin: 0; padding: 0; height: 100%; }
#Test { height: 100%; background-color: #fee; }
--></style>
</head>
<body>
<div id="Test">test</div>
</body>
</html>
---------
この回答への補足
お返事ありがとうございます。
今回jScrollPane.jsというjavascriptでスクロールバーをカスタマイズしており、
上記方法では最初のサイズで固定されてしまい、
可変できないというところがありまして・・・
No.1
- 回答日時:
>表示後にブラウザを動かすと合わせて可変するようにすることができず~
というのは、ブラウザのサイズを変えた場合という意味でしょうか?
ブラウザのサイズ変更時はonresizeイベントで捉えることが可能ですので、これを利用して再計算するようにしておけばよいのでは?
http://www.openspc2.org/JavaScript/reference4/ev …
確認していませんが、確か、イベントは実際にサイズ変更前に発生したような記憶がありますので、ちょっとだけタイムラグを置いてサイズを取得しないとならないかも…(←記憶がかなり曖昧です)
違う意味でしたら、失礼。
この回答への補足
意味につきましてはおっしゃるとおりです!
しかし自分なりにやってみましたがうまく反映されずで・・・
<script type="text/javascript">
<!--
document.write('<style type="text/css">');
if(document.all){
document.write('.hoge { height:' + document.body.clientHeight + 'px;}');
}else if(document.layers || document.getElementById){
document.write('.hoge { height:' + innerHeight + 'px;}');
}
document.write('</style>');
// -->
</script>
このようなコードに追記する場合どのように書けばうまく反映されますでしょうか…
javascriptに関しては初心者です…よろしければお教えいただければ幸いです!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ブラウザの横幅に応じてとある画像(e.jpg)を画面いっぱいに表示できるようにしたいです。(写真の横 1 2022/10/06 21:17
- その他(ブラウザ) ブラウザを再起動してください 1 2023/06/22 09:05
- デスクトップパソコン 全画面表示でもタスクバーを前面に隠す、表示させるようにしたい 3 2022/03/23 12:30
- Windows 10 エクスプローラで希望の場所が表示できない 2 2023/06/29 15:19
- au(KDDI) 「カメラへのアクセスを許可してください」のせいで年齢確認書類を撮影できない、アップロードできない 2 2022/11/01 00:04
- Windows 10 Windows10 の設定?について (長文ですがよろしくお願いします)m(_ _)m 3 2022/05/14 12:22
- その他(パソコン・周辺機器) EXCELで「WEBオプションの対象ブラウザ」を変更する方法 2 2023/04/12 15:44
- Android(アンドロイド) 標準ブラウザがAndroidシステムWebviewのブラウザになってるAndroid端末を教えてくだ 2 2022/12/02 12:35
- ホームページ作成・プログラミング chromeでhttpdを使うと 2 2022/03/23 10:54
- InternetExplorer(IE) Microsoft edgeのIEモードを解除したいのですが。 3 2023/04/09 13:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Q&A掲示板の入力フォームに文字...
-
swiper
-
「ご処理進めて頂きますようお...
-
エクセルVBAで、MsgBox やInput...
-
EXCEL VBA 複数のImageコントロ...
-
UMLでの例外処理
-
【Excel】特定の文字を含むセル...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
UPS警告音を止めたい
-
セックスレスの既婚女性は自慰...
-
【Excel VBA】マクロボタンを表...
-
サブフォームの行ごとにコンボ...
-
CloseとDisposeの違い
-
EXCELでボタンによりスク...
-
Googleフォーム・複数人の申し...
-
Excelシート上のマクロを登録し...
-
質問が締切になったら、 自動的...
-
複数の画面を同時に表示したい
-
EXCELのマクロが 実行時エラー5...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
折りたたみを全て開いて別ペー...
-
確認ダイアログを次からは表示...
-
javascriptで複数の表示・非表...
-
特定の条件のHTML要素を一括で...
-
改行をしたいが、<br>と...
-
CSSでreadonlyの機能はあり...
-
macかwinか判別しスタイルシー...
-
SITEINFOの書き方について
-
ブラウザの表示領域から高さを...
-
vml フォントの大きさ変更
-
フォームで「パスワード(確認...
-
【JavaScript】検索がヒットし...
-
タイプライタ風の文字を真ん中...
-
jqueryを使ったスムーススクロ...
-
jQueryのCSSで値に変数を使う方法
-
webサイトに動画をはりつけ、ク...
-
年月日時分を指定してCSSを切り...
-
時間帯によってclass名を変更し...
-
2回目以降のページロード時には...
-
ブログパーツをレスポンシブ化...
おすすめ情報