
似たような質問が多々ありましたが、どれも解決に至る内容ではなかったので質問させて頂きました。
【環境】
親ページをindex.html、iframeで表示するページをpage.htmlとします。
page.htmlは縦長で、heightを調整してスクロールバーが出ない状態になっています。
【望む動作】
page.htmlにあるリンクをクリックすると、page.html内の特定の場所にジャンプ
但し、index.htmlとpage.htmlの位置関係(表示状態)はそのままで、フレームを使わないときの普通のページ内ジャンプと同じような動作をする
【現時点の問題点】
targetを変えても、iframe内に親ページごと表示される(合わせ鏡の世界のようになる)か、フレームが解除されてpage.htmlだけが表示されるのどちらかになってしまう(http://からのフルパスでも同じ)
提供されたスペースの為、index.htmlのheadはいじれない
現状はこのようになっていますが、レイアウトを崩さずページ内でジャンプさせることは可能でしょうか。
色々試してみたいので、「index.htmlのheadはいじれない」の縛りがある場合とない場合でご回答頂けましたら幸いです(Javascriptでも構いません)。
宜しくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
ORUKA1951です。
なぜ、ページがスクロールしてくれないのかを、どうしたら説明できるかを考えていました。
まず、通常のページでページ内アンカーがある場合を考えて見ましょう。視覚系ブラウザでは、表示領域の高さをウィンドウの高さとしています。そのため、
・ウィンドウ内にすべて表示されている場合はページはスクロールしません。してはなりません。
・ページの高さがウィンドウ幅より高く、それが表示されていない場合は、リンクでスクロールされます。そのときページの最下段はウィンドウ内に収まるようにスクロールされます。
これが、狭いウィンドウで長いページを表示させる仕組みです。
frame/iframe/objectを使って外部ファイルを表示させたときは、ウィンドウの高さではなく、指定された高さを表示領域として動作します。これは、その指定されたサイズを表示可能領域としないと、レンダリングそのものができないからです。
すなわち、「page.htmlは縦長で、heightを調整してスクロールバーが出ない状態に」しているために、当然あるべき姿なのです。埋め込まれたページは、それを埋め込んだページが表示されている区画を知ることができないのですからね。
したがって、子供であるHTMLが、その親であるHTMLを引き上げることは不可能ですし、そうあってはならないのです。
対処としては、先に述べましたようにSSIを使って、そのHTML(<HEAD><BODY>わ含まない)ソースを本体HTML内にサーバー側で組み込むか、javascriptを使って---基本的にSSIと仕組みは同じでHTML全体を埋め込むことはできない----を使って埋め込むしか方法はありません。
先の例で言うと
<div class="article">
<!--#include file="page.html" -->
</div>
として、page.htmlは
<div class="header">
<h1>タイトル</h1>
<p>このページでは・・・・</p>
</div>
<div class="section">
<div class="section" id="A1">
<h2>一章見出し</h2>
<p>・・・</p>
</div>
<div class="section" id="A2">
<h2>二章見出し</h2>
<p>・・・</p>
</div>
<div class="section" id="A3">
<h2>三章見出し</h2>
<p>・・・</p>
</div>
<div class="section" id="A4">
<h2>四章見出し</h2>
<p>・・・</p>
<p>・・・</p>
<p>・・・</p>
</div>
<div class="contentTable">
<ol>
<li><a href="#A1">A1</a></li>
<li><a href="#A2">A2</a></li>
<li><a href="#A3">A3</a></li>
<li><a href="#A4">A4</a></li>
</ol>
</div>
</div>
<div class="footer">
<h2>文書情報</h2>
</div>
ということです。こうすると、includeの部分がすっかり置き換わります。
[補足]
articleというclass名は、完結したひとつの記事と言う意味を示します。
→DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )
→article 要素はブログのエントリや新聞記事など、文書内で自己完結可能な箇所を示します。 ( http://standards.mitsue.co.jp/resources/w3c/TR/h … )
あなたの利用しているサーバーの種類や設定がわかりませんが、可能ならファイル名を
index.shtml
として、テストすると良いかもしれません。
No.4
- 回答日時:
訂正
[HTML4.01transitinal/HTML4.01frameset]非推奨
<div class="section">
<h2>見出し</h2>
<p>
<iframe src="./page.html" style="display:block;width:600px;height:400px;overflow:hidden;border:none;">
</p>
</div>
No.3
- 回答日時:
>targetを指定しないのは_selfと同じですよね?
そうです。
リンクの場合、あくまで参照できる親要素の高さ内に表示できないから、リンクでページがスクロールされるのですから、ページのすべてがすでに表示されている場合は、親になるページはスクロールしません。なぜなら、高さはこれだけだよと設定してしまっているからです。
表示領域の指定がない場合はウィンドウの高さになります。
★この場合は、本来はSSIなどで該当HTMLの本文部分だけを読み込むべきですが、それができないならpage.htmlの内容をコピーペーストするしかないでしょう。
★下記ソースはタブを全角スペース に置換してあります。
[HTML4.01strict]推奨
<div class="section">
<h2>見出し</h2>
<p><object data="./page.html" type="text/html" style="display:block;width:600px;height:400px;overflow:hidden;">
</object></p>
</div>
[HTML4.01transitinal/HTML4.01frameset]非推奨
<div class="section">
<h2>見出し</h2>
<p><iframe src="./page.html" style="display:block;width:600px;height:400px;overflow:hidden;border:none;">
</object></p>
</div>
[index.html]HTML4.01strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<meta name="author" content="ORUKA1951">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
<link rel="START" href="../index.html">
<style type="text/css">
<!--
body{background-color:silver;}
div.header{height:100px;}
div.section{position:relative;}
div.section div.section{margin-left:20%;background-color:white;height:300px;}
div.section div.contentTable{width:19%;position:fixed;top:110px;background-color:yellow;}
div.section div.section+div.section{background-color:aqua;}
div.section div.section+div.section+div.section{background-color:fuchsia;}
div.section div.section+div.section+div.section+div.section{background-color:lime;}
-->
</style>
</head>
<body>
<div class="header">
<h1>タイトル</h1>
<p>このページでは・・・・</p>
</div>
<div class="section">
<div class="section" id="A1">
<h2>一章見出し</h2>
<p>・・・</p>
</div>
<div class="section" id="A2">
<h2>二章見出し</h2>
<p>・・・</p>
</div>
<div class="section" id="A3">
<h2>三章見出し</h2>
<p>・・・</p>
</div>
<div class="section" id="A4">
<h2>四章見出し</h2>
<p>・・・</p>
<p>・・・</p>
<p>・・・</p>
</div>
<div class="contentTable">
<ol>
<li><a href="#A1">A1</a></li>
<li><a href="#A2">A2</a></li>
<li><a href="#A3">A3</a></li>
<li><a href="#A4">A4</a></li>
</ol>
</div>
</div>
<div class="footer">
<h2>文書情報</h2>
</div>
</body>
</html>
No.1
- 回答日時:
もう試されているかも知れませんが、
ラベルへのジャンプではダメだということですかね?
<a href="#ジャンプ先">ジャンプ</a>
<a name="ジャンプ先">ジャンプ先</a>
この回答への補足
ご回答ありがとうございます。
真っ先に試しましたが、target属性をどれにしても駄目でした。
page.htmlが単独で開いてしまったり、iframeの中にindex.htmlが開かれてしまったり。
色々調べたところ、Javascriptを使わないと駄目みたいですが、しっくりくるソースが見つかりませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- PHP PHP ページング データベース 1 2022/06/16 10:30
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- Word(ワード) Word のマクロについての質問です。 ボタンを押すと登録したブックマーク先にジャンプする機能(リン 3 2023/08/16 12:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
アコーディオンパネルの作り方...
-
スペースを使わず文字位置を揃...
-
おすすめの無料のホームページ...
-
css marginについて
-
ちょっとSEO意識した3カラムW...
-
CSSのみを修正してデザインを更...
-
<PRE></PRE>内の<h1></h1>をそ...
-
CSS(初歩的)な質問です…float...
-
clearFixについて。
-
なぜ2重に囲うやり方をするのか
-
CSSで画像を下に配置
-
複数のボタンを等間隔に、かつ...
-
IEだとリンクされるが他ブラウ...
-
テキストの揃え方について
-
display:none;について教えて下...
-
2カラムのレイアウト
-
cssでセンターに配置が出来ない
-
ブラウザの表示幅で100%指定が...
-
サイト構築の練習サイト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
html の divとtable の役割
-
複数のボタンを等間隔に、かつ...
-
ヘッダーとフッターだけ背景を...
-
div要素が重なってします
-
<div id="container">の使いか...
-
1時間30分を簡単に表したいで...
-
グリッドレイアウトで"auto-fit...
-
min-heightとheightの違いについて
-
divとpの使いわけ
-
セクションをdivで囲むと見出し...
-
スペースを使わず文字位置を揃...
-
divの中に外部のHTMLを埋め込む
-
要素間、要素内に隙間が空く
-
body>div{}の意味を知りたい
-
ヘッダーを左右に二分割する方...
-
html5でheaderの中にnav
-
hタグを使わずに小見出し
-
CSSで、contentsがfooterに重な...
おすすめ情報