外部のHTMLをdivに埋め込む方法とは?

このQ&Aのポイント
  • divに外部のHTMLを埋め込む方法について説明します。
  • divに外部のHTMLを読み込む方法を紹介します。
  • divに外部HTMLを挿入する際のベストプラクティスと注意点をまとめました。
回答を見る
  • ベストアンサー

divの中に外部のHTMLを埋め込む

divの中に外部のHTMLを埋め込む(読み込む)ことはできますか?推奨されていますか? その際には何というタグで読み込むのでしょうか? IE8/9を対象にしています。 jqueryで作った独自のコンテンツ(html)を読み込みたいです。 なぜメインのHTMLに直接j独自コンテンツのソースを張ろうと思わなかったのは こちら側で作ったコンテンツを第三者に配布した場合、 jqueryで作ったページが利用しているCSSのidセレクタ名などがメイン(読込み先html)が利用しているCSSのidとかぶってしまう可能性があると思ったからです。 メインページが読み込むCSSはメインページが利用するCSSただ1つとしておきたいのです。 何かいい方法はありますか?

  • CSS
  • 回答数5
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

他のHTMLを読み込む方法は、一般的にはiframeですが、HTML4.01では、DOCTYPEが、framesetしか使えません。しかし、frameset自体が非推奨です。 『HTML文書を作る場合には、この仕様における、他のDTDセットではなく strict DTD に適合する文書を作るよう推奨する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )』  objectを使用することが出来ます。objectは、何でも入れられます。ただし、frameほど複雑なことは出来ません。  それ以前に、『こちら側で作ったコンテンツを第三者に配布した場合、 jqueryで作ったページが利用しているCSSのidセレクタ名などがメイン(読込み先html)が利用しているCSSのidとかぶってしまう可能性があると思ったからです。』の意味がわかりません。  少なくともidは、リンク先でも、javascriptのtargetでもないのに使うことは避けましょう。class名はいくら重複してもスタイルシートで区別できるはずです。--ちゃんとしたHTMLならですが・・ <div class="section">  <h2>見出し</h2>  <p>記事のまとめ</p>  <div class="section">   <h2>項見出し</h2>   <p>簡単な記事</p>   <div class="section">    <h2>サブ項目</h2>   </div>   <div class="section">    <h2>サブ項目</h2>   </div>  </div> </div> <div class="section">  <h2>見出し</h2>  <p>記事のまとめ</p>  <div class="section">   <h2>項見出し</h2>   <p>簡単な記事</p>   <div class="section">    <h2>サブ項目</h2>   </div>   <div class="section">    <h2>サブ項目</h2>   </div>  </div> </div> というHTMLがあったとして、スタイルシートを次のように書くことで、すべての<h2>の色が変わりますよね。 (注)上記HTMLのソース中のタブは全角スペースに置換してあるので、タブないし半角スペースに戻してください。 div.section h2{color:red;} div.section div.section h2{color:blue;} div.section div.section div.section h2{color:aqua;} div.section div.section div.section + div.section h2{color:black;} div.section div.section div.section + div.section + div.section h2{color:maroon;} div.section + div.section h2{color:fuchsia;} div.section + div.section div.section h2{color:gray;} div.section + div.section div.section div.section h2{color:green;} div.section + div.section div.section div.section + div.section h2{color:lime;} div.section + div.section div.section div.section + div.section + div.section h2{color:yellow;} IDは決してデザインのために記述すべきではありません。(スタイルシートの説明のために使うことはありますが、通常のHTMLではリンクのターゲットやjavascriptのターゲットのように、文書中の一意の要素を特定するためだけに使用します。  class名は、ページ内に何度登場しても良いですが、その目的はIDと同様に 『文書に構造を付加するための一般機構を提供する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.4 )』ためのものです。たとえば、それが本文記事でしたらsectionとか・・。  もし、そのようにきちんと書かれていたら、そのidやclass名を使って====!!!文書構造を利用して!!!!====スタイルシートでプレゼンテーションを指定していきます。  しかも多く利用されるスタイルシートは【カスケーディング】スタイルシートですから、カスケーディングの仕組みを利用すると、簡単にデザインしたい要素が決まるはずです。 HTMLが、 .section 編   .section 章     .section 項 と言う形でしたら 二つ目以降の編の div.section + div.section 項               div.section の二つ目以降の項の             +div.section のみだし                        h2 の色は、yellow と、実に簡単に設定できますね。後からスタイルシートを見るだけでHTMLなんて見なくても意味がわかるし、修正・メンテナンスも簡単です。 ★たとえば、簡単に<div>で囲むだけでも、その内部のデザインを他の区別して指定できますよ。  idをむやみに使わなければダブル事はありません。  class名は、どんなにダブろうがスタイルシートのセレクタさえきちんと書けば問題ありません。    そもそも、idもclassもそのため--スタイルシートのものではありません。あくまで、文書構造を補完するために付けられたidやclass名を利用するだけです。  この段階を乗り越えないと、本当の意味でのHTMLとスタイルシートの利用は出来ません。

testmaster_x
質問者

補足

ありがとうございます。 >『こちら側で作ったコンテンツを第三者に配布した場合、 jqueryで作ったページが利用しているCSSのidセレクタ名などがメイン(読込み先html)が利用しているCSSのidとかぶってしまう可能性があると思ったから』 というのは (javascript.css)←こちらが配布するCSS .test { color:red; } (style.css)←相手がメインで使っているCSS .test { color:blue; } メインのhtml <link rel="stylesheet" type="text/css" href="./css/style.css" /> <link rel="stylesheet" type="text/css" href="./css/javascript.css" /> 省略 <p class="test">メインテキスト</p> <p class="test">Jqueryテキスト</p> 省略 こうなるとメインテキストは本来「青色」で相手は指定しているのにもかかわらず こちらが配布するCSSでたまたま同じclass名が指定されてあったら クラス名がかぶってしまい、後から読み込まれたほうのjavascript.cssのtestセレクタ(class)で メインテキストは「赤色」になってしまいますよね? という問題があるのではないかと思います。

その他の回答 (4)

  • tracer
  • ベストアンサー率41% (255/621)
回答No.5

No.4さんの回答が完璧ですね! 内容は他の方と同じですが、ちょっと補足的に書いてみます。 配布を検討されているのでしたら、一番の解決策は、被らないようなidやclassをつけることですね。100%被らないものはありませんが、ほぼ被らないようにするのは、そんなに難しくないと思いますよ。他の回答にもありましたね。おそらく、この方法が一般的です。 最も簡単な回避策としては、iframeが挙げられますが、これは設置側からすると嫌われる場合もありますね。 No.4さんの回答に、scopeの使用がありましたが、現在scopeが正常に動作するブラウザってありましたっけ?

回答No.4

class名とスタイルシートの競合は、いくつかの方法で何とかできます。 ・<iframe>か<object>を使用すれば、セレクタが競合することはありません。 (それぞれ独立したファイルとして扱われるので) ・style属性で1つずつ指定していけば、その要素にだけ適用されます。 ・HTML5なら、scoped属性が使えます。 <section> <style scoped> p.foo{color: red;} </style> <p class="foo">赤い文字</p> </section> <p class="foo">標準文字</p> IDがかぶっている場合はどうしようもありません。 <iframe>などを使うか、プレフィクスを付けるなどしてかぶらないことを保証してください。

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.3

クラス名などが被るのを防ぎたいのであれば、単純にその名前を工夫するだけで良いのではないのでしょうか? 例えばsomething.jsという名前で配信するのであれば関連する全てのクラス名を .something-classname といった感じで指定するようにするだけで、十分な気がします。 絶対に被るのが嫌というのであれば .com-example-something-classname のような感じでドメインをつければ確実かもしれません(見たことありませんが)。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

><p class="test">メインテキスト</p> ><p class="test">Jqueryテキスト</p> <div> <p class="test">メインテキスト</p> <p class="test">Jqueryテキスト</p> </div> なら、本来のスタイルシートのほうは p.test:first-child{color:blue;}/* 詳細度 0,0,2,1 */ p.test{color:red;}/* 詳細度 0,0,1,1 */ とかにしておけば、相手がたとえ指定しても、詳細度が高いので上書きされませんね。 要は、HTMLが文書構造がきちんと示されていれば--くかもりはそのためのもの---、セレクタでプレゼンテーションを指定する対象が特定できるということです。 もちろん、 <div class="default">  <p class="test">メインテキスト</p> </div> <div class="ins">  <p class="test">Jqueryテキスト</p> </div> とするか、本来のHTML的に <div>  <p class="test">メインテキスト</p>  <ins>    <p class="test">jqueryテキスト</p>  </ins> </div> として div>p.test{color:blue;} として置けば良いし・・・  様々な指定方法が用意されています。カスケーディングの機能があるからCSSを使うのですから、まずカスケーディングを身につけないと何のためのスタイルシートかわからないですよ。 ★5. セレクタ ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/selector.html ) ★6. 値の割り当て、カスケード処理、継承 ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/cascade.html )  他のHTMLを読むなんて変なことをしなくても、方法は必ずあります。

関連するQ&A

  • HTMLのdivについて

    HTMLで質問です。 DIVについて質問です 下の図で <body> <div="c"> <div id="a"> --------------- </div> <div id="b> ああああああああ いいいいいいい </div> </div> </body> という場合 <div=”c”> は全体のbody範囲でありますが divそのものを idで指定しなくても divだけでも全体を範囲しいた事にはならないのでしょうか? ホームページ全体が範囲であり セレクタ範囲を後にCSSで装飾する場合 やはりIDで指定するのでしょうか?

  • CSSでDIVで挟んでいるのに背景色が出ない?

    CSSと(X)HTMLでページを作っています。角丸なページにしたいため、 /* ---------- 角丸画像の上辺 ---------- */ #main_contents_header { width: 800px; height:20px; background:url(./top.png) no-repeat top; margin: 10px auto 0px; padding: 0; text-align: center; } /* ---------- 上辺と下辺の間のメイン部分 ---------- */ #main_contents { background:url(./bg.png); width: 800px; margin: 0 auto; padding: 0; text-align: center; } /* ---------- 角丸画像の下辺 ---------- */ #main_contents_bottom { width: 800px; height:20px; background:url(./bottom.png) no-repeat top; margin: 0 auto; padding: 0; text-align: center; } というCSSを作り、 HTMLは <div id="main_contents_top"></div> <div id="main_contents"> ここにいろいろなコンテンツを置いていく </div> <div id="main_contents_bottom"></div> という書き方にしているのですが、<div id="main_contents">の背景画像が正しく出ず、地の色が見えてしまうのです。試しに<div id="main_contents">へpadding-bottom:300pxというような指定を加えると、正しく背景画像が出ました。 <div id="main_contents"> ここにいろいろなコンテンツを置いていく </div> という書き方ではダメなのでしょうか・・・? 確認はFirefoxとSafariでやっています。

    • ベストアンサー
    • HTML
  • CSSの使い方の流儀?

    先日業者にホームページの作成を依頼したところ、 子孫セレクタを駆使したCSSを使ったページが できあがってきたのですが・・・ たとえばこんな感じ <div id="header">   <div class="block1">     <span>・・・・・・</span>     ・・・・・・・   </div>   <span>・・・・・・</span>   ・・・・・・・ </div> <div id="contents">   <div class="block2">     <span>・・・・・・</span>     ・・・・・・・   </div>   <span>・・・・・・</span>   ・・・・・・・ </div> これに対して CSSでこんなスタイルが設定されています(セレクタ部のみ抜粋) #header .block1 #header .block1 span #header span #contents .block2 #contents .block2 span #contents span 私だったらわざわざ複雑な子孫セレクタを使わずに、 個々にクラスかIDを設定すると思うのですが・・・ また、ただ画像が貼ってあるだけと思ったら、 CSSでspanの背景画像として貼ってあったり、 ただの仕切り線と思ったら、 やはりdivのボーダーラインを使っていたり・・・ こういう作りって一般的なのでしょうか? あるいは、何か利点があるのでしょうか? ブログのカスタマイズなどだと、元のHTMLを自分で直せない場合が多いので、 こういうコトをすることが良くある、というのはわかるのですが・・・ あまりにHTMLのタグの構造とCSSが密接に絡んでいて、 ほんの一文追加しようとしただけで苦労していまして・・・ なんでこういう書き方なのかな・・・と、 不思議に思っています。。

  • 「css」 と 「div」の使い方について

    例えば、「CSS」でページ全体の要素をクラス「contents」で設定した場合、 HTML では次のどちらの記述が正しいのでしょうか? 1.<body class="contents">・・・ </body> 2.<body> <div="contents">・・・ </div> </body>

  • divタグについて

    初心者です。 xhtml+cssでdiv idというタグを何箇所にも利用してますが、div classはどういうときに使うんですかね?

    • ベストアンサー
    • HTML
  • HTML,CSSのみでDIVブロック

    IEで図のようなDIVブロックを表示させたいと考えています DIVでなく他のHTML要素でもいいです jQueryなどライブラリを使わないで HTMLとCSSのみで図のような表示のサンプルプログラムが見れる サイトを教えてください また、グーグルなどで、これらを検索する際 適当なワードを教えてください よろしく、お願いします

  • DIVの中の<a>について

    CSS初心者です。 とんちんかんな質問かもしれませんが宜しくお願いします。 同じスタイルのDIVボックスを1ページに複数配置するので外部スタイルシートに .abc { } という風にしてDIVボックスにクラスを適用させたのですが、そのDIVボックスの中のある<a>とかを限定してCSSで設定する場合、外部スタイルシートには .abc a { } というような感じで指定してもいいのでしょうか? DIVをIDで設定した場合は #abc a { } という風にすれば良いと本には書いてあったのですが、DIVにクラスを適用させた場合がわかりませんでした。 アホな質問かもしれませんが、宜しくお願いします。

    • ベストアンサー
    • CSS
  • divの入れ子を多用してページをつくることはださいのでしょうか?

    CSSで2カラム左メニューレイアウトのサイトを作成しております。 レイアウトはできたのですが、 ページ内にいくつかdivでボーダーのないボックスをつくり 写真をいれたり文章をいれたりします。 1ページのCSSレイアウトしたコンテンツ部分のdivの中に 5つほどdivが入れ子ではいる予定です。 インターネットでdivの多用について調べると ださいだの、わかってないだと書いてあります。 でもdivを多用しなければ、 例えば写真の横にテキストを配置したり、 よこにイメージを配置したいときに テーブルやHTMLタグをつかわないといけないので、 余計ソースが汚くなるんではないでしょうか? 私は、CSSを本格的に勉強し始めてほとんど初心者ですので、 詳しいことがわかりませんので、もしご存知の方おられましたらご意見お待ちしております。

    • ベストアンサー
    • HTML
  • 【CSS】HTML直書き→外部ファイルにしたい

    HTMLにCSSを適応する方法としていくつかあると思いますが、 こんな風に↓ <div style="height:90px; width:300px; text-align:center; float:left;"> HTMLソース内に『直書き』してあるものを外部CSSに書き直すには どうしたらいいですか? 当方、他の外部CSSをちょこっといじって変更したり HTMLの簡単な更新経験程度の知識しかありません。 タグ名{プロパティ:値}みたいなルールは分かるのですが、 すべてを最初から書くのが初めてで、何から手を付けていいのか 分かりません。 こうしてみたら?とか、私ならこうする、という アドバイスを頂けると助かります。 お詳しい方、回答よろしくお願いします!

  • CSSでのdivタグに付いての質問です。

    現在HTMLを学習し始めたばかりで困惑しております。 HTML内の<body>タグ内に<div>タグを作りidを"main"としました。 具体的には<div id="main">Main</div>と記述しました。 そこからCSSで#main {color: red;} と記述しましたが、文字色の変更が全く反映されない状態です。 他の<p>タグや<h1>タグ、また<body>タグは全て奇麗に反映されるのに<div>だけが全然ダメな状態です。 一体何が原因なのか教えて下さい。 初心者すぎる質問だと思いますが、どうぞよろしくお願い致します。

    • ベストアンサー
    • HTML

専門家に質問してみよう