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

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

ただいまの
回答率

90.47%

  • HTML5

    4180questions

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

  • CSS3

    2139questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,156

ronin

score 10

前提・実現したいこと

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;
}*/
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2016/05/10 02:05

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

    キャンセル

  • ronin

    2016/05/10 02:11

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

    キャンセル

回答 1

checkベストアンサー

0

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

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

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

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

<nav id="main">
    <ul>
        <li><a data-id="a001" href="#">AAAA</a></li>
        <li><a data-id="a002" href="#">AAAA</a></li>
        <li><a data-id="a003" href="#">AAAA</a></li>
    </ul>
</nav>
<div id="contents">
    <div class="a001 current">
        text001
    </div>
    <div class="a002">
        text002
    </div>
    <div class="a003">
        text003
    </div>
</div>
#contents > div {
    display: none;
}
#contents > div.current {
    display: block;
}
$( function () {
    $( '#main a' ).click( function () {
        var id = $( this ).attr( 'data-id' );
        $( '#contents > div' ).removeClass( 'current' ).filter( '.' + id ).addClass( 'current' );
        return false;
    } );
} );


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/10 05:27 編集

    ご回答、ありがとうございます、とてもわかりやすかったです。
    頂いたソースコードを組み込み、編集した所、【動作イメージ】通りの動作を実現できました。
    動作を解析して理解した訳ではないので、それについては今後学習しようと思います。

    CMSは一度検討したのですが、個人的なサイトであり、備忘録というテーマなので、素人ながら、一から作成し、纏めて行くのも良いかなと考えた次第です。
    まぁ、ハードルを最初から上げるのは、あまり良くないとは思っているんですが…(笑)

    出来るだけ自分で解決する努力はするつもりですが、何かありましたら今後とも宜しくお願い致します。

    キャンセル

関連した質問

  • 受付中

    cssのfloatの箇所が分かりません。

    初めて投稿させて頂きます。 cssで、一段組みのサイト全体の中央揃えと画像、 テキストの左揃えの箇所が分かりません。 サイト全体を中央揃えにし、全体の幅960px、

  • 受付中

    cssのブロック左寄せに関して

    質問です 現在Webページを開発していまして 2つの 文章の塊を<div>で囲って それにクラスIDをそれぞれ振り分けて 最初の文章の塊を .aaa{

  • 解決済

    CSSの上下左右中央寄せについて。

    質問です。 今webページを制作しているのですが ブロック要素を左右中央寄せにした状態で、インライン要素を上下左右中央寄せにするコーディングが全く分からず 困りはてており

  • 解決済

    基本的に詰めつつ中央寄せにしたい

     実現したいイメージ  現状のデザイン <div class="tag-area"> <div class="tag">居酒屋</div>

  • 解決済

    iphoneでモーダルウインドウがスクロールできない

    モーダルウィンドウが固定されて困っています。androidブラウザでは問題ないのですが、iphoneのsafariで動作を確認すると、スクロールできずに固定されてしまいます。

  • 解決済

    パララックスの実装で困っています。

    パララックスのことでお聞きしたいことがあります。 下記のURL先のような、スクロール時に、次の要素が見えたらその要素をブラウザの上までもってくるをしたいのですが、まくいかなくて困

  • 解決済

    Internet Explore11でmainダグ内のコンテンツが表示されない。

    長くなりますが宜しくお願い致します。 前提・実現したいこと Internet Explore 11 でmainダグ内のコンテンツをタブで切り替え表示したい。 発生

  • 解決済

    htmlとcssの使い方について

    HTMLとCSSを使用して表を作成しようとしています。 表の一行目のセルに書かれている文字を白に、セル色をオレンジに変更したいです。 一つのセルごとに文字色/セル色を指定す

同じタグがついた質問を見る

  • HTML5

    4180questions

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

  • CSS3

    2139questions

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