ホームページ(ウェブサイト)を構築する際、共通のパーツ(ヘッダー、フッター、サイドバーなど)や別のWebページを現在のページ内にシームレスに読み込みたい局面があります。かつてNetscape Navigator(NN)4の独自機能として登場した「include-source」は、指定したURLのHTML文書をレイヤーとして現在のページに直接読み込み、表示するためのCSSプロパティでした。より専門的には、この古い独自仕様の歴史的背景と、現在のWeb制作における標準的な代替実装手法を整理しておく必要があります。
include-sourceの概要とブラウザ戦争の遺産
include-sourceプロパティは、以下のように外部のHTMLファイルを値として指定する仕様でした。
CSS
/* 過去のNetscape Navigator専用のレガシー記述 */
layer {
include-source: url('sidebar.html');
}
この記述を行うことで、サーバーサイドのプログラムを使わずに外部の文書をパーツ化して読み込むようなレイアウトが試みられました。
しかしながら、このプロパティはW3Cの国際標準仕様として採用されることはなく、Netscape Navigator自体の衰退とともに完全に廃止されました。現代の主要ブラウザ(Chrome、Safari、Edgeなど)では全くサポートされていないため、現在のホームページ制作で使用しても何も表示されません。
現代のホームページ(ウェブサイト)におけるパーツ・外部文書の共通化手法
現在の標準的なWebデザインにおいて、他のHTML文書をページ内に埋め込んだり、共通パーツとしてインクルード(共通化)したりするためには、用途に合わせて以下の現代的なアプローチを選択してプロセッシングを行います。
1. HTML標準の <iframe> 要素(インラインフレーム)
外部の独立したウェブページをそのまま現在のページの一部として埋め込みたい場合は、CSSではなくHTMLの <iframe> タグを使用するのが標準的なルールです。セキュリティ(サンドボックス)を担保しつつ、外部サービス(GoogleマップやYouTube動画など)をホームページ内に表示させる際にも不可欠な技術です。
2. JavaScriptによる動的読み込み(Fetch API)
クライアント(ブラウザ)側で非同期に他のHTMLファイルを読み込んで特定のエリアに描画したい場合は、JavaScriptの fetch() を用いたプログラミングが一般的です。
JavaScript
// JavaScriptによる外部HTMLの読み込み例
fetch('header.html')
.then(response => response.text())
.then(data => {
document.getElementById('header-container').innerHTML = data;
});
3. コンポーネント化(PHPやCMS、静的サイトジェネレーターの活用)
事業用ホームページを効率的かつSEOに強い構造で制作する現場では、ブラウザで読み込んだ後に合成する(JavaScriptを使う)のではなく、サーバー側であらかじめ1つのHTMLに結合して出力する手法が主流です。
もっとも普及しているオープンソースCMSであるWordPressであれば、get_header() や get_template_part() といった組み込み関数を1行記述するだけで、ヘッダーやパーツの共通化が安全に行えます。PHPをベースにした「include」や「require」を使用するアプローチも同様です。
古い独自のCSS仕様を完全に排除し、Web標準のHTMLタグやWordPress等のバックエンド・システムを正しく設計していくことが、ホームページの表示速度を最適化させ、検索エンジンからの適切なインデックス(SEO評価)を守るための強固な土台となります。