質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

1回答

2800閲覧

javaApiの様なwebページをiframeを使わずに作りたい

ronin

総合スコア89

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2016/05/09 16:58

編集2016/05/09 20:31

###前提・実現したいこと
HTML+CSS+javascriptで個人的な備忘録サイトを作ろうと考えています。
イメージはjavaAPIのWebページ、そのまま同じ構成+動作です。
リンク内容

【動作イメージ】
1.大項目(左上のフレーム内のリンク)を押下
2.中項目(左下のフレーム内のページ)を更新
3.中項目(左下のフレーム内のリンク)を押下
4.小項目(右部のフレーム内のページ)を更新
現状、Cssだけでiframeを使用せず体裁だけ整えています。

JavaAPIのページではインラインフレームタグを使用して実現している様ですが、今はフレームをあまり使わない、という情報を見て、鵜呑みにしてしまい<nav><section>で分け、Cssで体裁を整えています。

現状、上記「動作イメージ」と同じ動きを実現する事ができません。

そもそもHTMLの基本的な動作を理解していない事が原因だとは思いますが、インラインフレームを使わずにCSSやJavascriptだけで同じ動作をさせる事は可能でしょうか?
インラインフレームを使いたくない特別な理由がる訳ではありませんが、下記のソースコード程度を作るのに時間が掛かるレベルなので、なかなか捨てがたいのです…

低レベルな質問で恐縮ですが、どうぞ宜しくお願いします。

###該当のソースコード(HTML)

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8" /> <title>タイトル</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $(document).ready(function () { adjust(); }); $(window).resize(function () { adjust(); }); function adjust() { var h = $(window).height(); var h1 = $('header').outerHeight(true); var h2 = $('footer').outerHeight(true); var h3 = $('nav#main').outerHeight(true); $('nav#sub').css("top", h1 + h3 - 2); $('nav#sub').css("height", h - (h1 + h2 + h3)); $('section').css("height", h - h1); } </script> </head> <body> <header> <h1> ヘッダー </h1> </header> <section> <article> <h2>CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC</h2> </article> </section> <nav id=main> <ul> <li><a href="#">AAAA</a></li> <li><a href="#">AAAA</a></li> <li><a href="#">AAAA</a></li> <li><a href="#">AAAA</a></li> <li><a href="#">AAAA</a></li> </ul> </nav> <nav id=sub> <ul> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> <li><a href="#">BBBB</a></li> </ul> </nav> <!-- <footer> <h1></h1> Copyright © 2016 **** All Rights Reserved </footer> --> </body> </html>

###該当のソースコード(CSS)

html { display: block; height: 100%; width: 100%; overflow: hidden; } body { display: block; position: absolute; width: 100%; height: 100%; margin: 0px; padding: 0px; font-family: "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif; } header { display: inline-block; position: fixed !important; top: 0; left: 0; width: 100%; height: 35px; background-color: #eee; font-size: 8px; color: #666; line-height: 16px; padding: 2px 4px; right: 0px; text-shadow: 1px 1px #fff; } section { display: inline-block; position: absolute; overflow-y: scroll; border: 1px solid #ccc; top: 38px; left: 201px; width: auto; margin: 0px; padding: 0px; } nav#main { display: inline-block; position: fixed; border: 1px solid #ccc; max-height: 270px; top: 38px; left: 0px; width: 200px; max-height: 270px; margin: 0px; padding: 0px; overflow: auto; } nav#sub { display: inline-block; position: fixed; border: 1px solid #ccc; top: 315px; left: 0px; width: 200px; margin: 0px; padding: 0px; overflow: auto; } /* footer h1 { display: inline-block; visibility: hidden; position: fixed; border: 1px solid #ccc; background-color: #eee; bottom: 0px; left: 0px; width: 100%; height: 20px; color: #666; margin: 0px 0px; font-size: 12px; }*/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/05/09 17:05

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
ronin

2016/05/09 17:11

ご指摘有難うございます。コードブロックを追加しました。
guest

回答1

0

ベストアンサー

インラインフレームを使わずにCSSやJavascriptだけで同じ動作をさせる事は可能でしょうか?

できます。
1HTMLファイルでやりたいのか、javaAPIページのように複数HTMLファイルで構成するのか、データの追加方法はどうするのかなどによって組み方は様々です。

私なら、そのような多数の情報を格納する場合、HTMLを手打ちしていくのではなくCMSを利用すると思います。複数のデータ(ページ)を整合性を持った状態で管理するのは既存のシステムに任せ、データ(ページ)の作成に打ち込める環境を作るのに適しているからです。

単純に表示の切り替えであれば下記のようにも書けます。

HTML

1<nav id="main"> 2 <ul> 3 <li><a data-id="a001" href="#">AAAA</a></li> 4 <li><a data-id="a002" href="#">AAAA</a></li> 5 <li><a data-id="a003" href="#">AAAA</a></li> 6 </ul> 7</nav> 8<div id="contents"> 9 <div class="a001 current"> 10 text001 11 </div> 12 <div class="a002"> 13 text002 14 </div> 15 <div class="a003"> 16 text003 17 </div> 18</div>

CSS

1#contents > div { 2 display: none; 3} 4#contents > div.current { 5 display: block; 6}

JavaScript

1$( function () { 2 $( '#main a' ).click( function () { 3 var id = $( this ).attr( 'data-id' ); 4 $( '#contents > div' ).removeClass( 'current' ).filter( '.' + id ).addClass( 'current' ); 5 return false; 6 } ); 7} );

【動くコード】https://jsfiddle.net/sgf4u4Ln/

投稿2016/05/09 18:01

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ronin

2016/05/09 20:32 編集

ご回答、ありがとうございます、とてもわかりやすかったです。 頂いたソースコードを組み込み、編集した所、【動作イメージ】通りの動作を実現できました。 動作を解析して理解した訳ではないので、それについては今後学習しようと思います。 CMSは一度検討したのですが、個人的なサイトであり、備忘録というテーマなので、素人ながら、一から作成し、纏めて行くのも良いかなと考えた次第です。 まぁ、ハードルを最初から上げるのは、あまり良くないとは思っているんですが…(笑) 出来るだけ自分で解決する努力はするつもりですが、何かありましたら今後とも宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問