آموزش HTML - فریم‌های

فریم‌های HTML برای تقسیم پنجره مرورگر شما به چند بخش استفاده می‌شوند که در آن هر بخش می‌تواند یک سند HTML جداگانه را به طور مستقل بارگذاری کند. به مجموعه‌ای از فریم‌ها در پنجره مرورگر، فریم‌ست (frameset) گفته می‌شود. پنجره به روشی مشابه سازمان‌دهی جدول‌ها به فریم‌ها تقسیم می‌شود: به صورت سطرها و ستون‌ها.

استفاده از تگ <frame> دیگر توصیه نمی‌شود، زیرا در HTML5 پشتیبانی نمی‌شود. به جای استفاده از این تگ، می‌توانیم از <iframe> یا <div> همراه با CSS برای دستیابی به جلوه‌های مشابه استفاده کنیم.

سنتکس

<frameset rows="50%,50%">
   <frame name="top" src="link/to/frame1" />
   <frame name="bottom" src="link/to/frame2" />
</frameset>

که در آن، ویژگی rows در frameset تقسیم پنجره به بخش‌های افقی را تعریف می‌کند. در این حالت، پنجره به دو سطر تقسیم می‌شود که هر کدام ۵۰٪ از ارتفاع موجود را اشغال می‌کنند.

نمونه‌هایی از فریم‌های HTML

در ادامه چند نمونه کد آورده شده است که نحوه کار با فریم‌ها در HTML را نشان می‌دهند.

ایجاد فریم‌ها در HTML

برای ساخت فریم‌ها در یک صفحه، به جای تگ <body> از تگ <frameset> استفاده می‌کنیم. تگ <frameset> نحوه تقسیم پنجره به فریم‌ها را تعیین می‌کند. ویژگی rows در تگ <frameset> فریم‌های افقی و ویژگی cols فریم‌های عمودی را مشخص می‌کند. هر فریم با تگ <frame> مشخص می‌شود و تعیین می‌کند که کدام سند HTML باید درون آن فریم باز شود.

در ادامه مثالی برای ایجاد سه فریم افقی آورده شده است. اگر مرورگر شما از فریم‌ها پشتیبانی نکند، عنصر body نمایش داده می‌شود.

<!DOCTYPE html>
<html>
<head>
   <title>HTML Frames</title>
</head>
<frameset rows="10%,80%,10%">
   <frame name="top" src="/html/top_frame.htm" />
   <frame name="main" src="/html/main_frame.htm" />
   <frame name="bottom" src="/html/bottom_frame.htm" />
   <noframes>
      <body>
         Your browser does not support frames.
      </body>
   </noframes>
</frameset>
</html>

ایجاد فریم‌های عمودی

در اینجا ویژگی rows را با cols جایگزین کرده و عرض آن‌ها را تغییر داده‌ایم. این کار باعث می‌شود هر سه فریم به صورت عمودی ایجاد شوند.

<!DOCTYPE html>
<html>
<head>
   <title>HTML Frames</title>
</head>
<frameset cols="25%,50%,25%">
   <frame name="left" src="/html/top_frame.htm" />
   <frame name="center" src="/html/main_frame.htm" />
   <frame name="right" src="/html/bottom_frame.htm" />
   <noframes>
      <body>
         Your browser does not support frames.
      </body>
   </noframes>
</frameset>
</html>

ویژگی‌های name و target در فریم

یکی از رایج‌ترین کاربردهای فریم‌ها، قرار دادن نوارهای پیمایش (Navigation) در یک فریم و سپس بارگذاری صفحات اصلی در یک فریم جداگانه است.

بیایید مثال زیر را بررسی کنیم که در آن فایل test.htm شامل کد زیر است:

<!DOCTYPE html>
<html>
<head>
   <title>HTML Target Frames</title>
</head>
<frameset cols="200, *">
   <frame src="/html/menu.htm" name="menu_page" />
   <frame src="/html/main.htm" name="main_page" />
   <noframes>
<body>
   Your browser does not support frames.
</body>
   </noframes>
</frameset>
</html>

در اینجا دو ستون برای پر شدن با دو فریم ایجاد کرده‌ایم. فریم اول ۲۰۰ پیکسل عرض دارد و منوی پیمایش پیاده‌سازی‌شده توسط فایل menu.htm را در خود جای می‌دهد. ستون دوم فضای باقی‌مانده را پر می‌کند و شامل بخش اصلی صفحه خواهد بود که توسط فایل main.htm پیاده‌سازی شده است. برای هر سه لینک موجود در منو، فریم هدف (target) را برابر main_page قرار داده‌ایم؛ بنابراین هر زمان که روی هر یک از لینک‌های منو کلیک کنید، لینک مربوطه در main_page باز خواهد شد.

محتوای فایل menu.htm به صورت زیر است:

<!DOCTYPE html>
<html>
<body bgcolor="#4a7d49">
   <a href="https://www.google.com" target="main_page">
      Google
   </a>
   <br /><br />
   <a href="https://www.microsoft.com" target="main_page">
      Microsoft
   </a>
   <br /><br />
   <a href="https://news.bbc.co.uk" target="main_page">
      BBC News
   </a>
</body>
</html>

محتوای فایل main.htm به صورت زیر است:

<!DOCTYPE html>
<html>
<body bgcolor="#b5dcb3">
   <h3>
      This is main page and content from any link 
      will be displayed here.
   </h3>
   <p>
      So now click any link and see the result.
   </p>
</body>
</html>

ویژگی‌های تگ frameset

ویژگی‌های فهرست‌شده در زیر توسط تگ frameset پشتیبانی می‌شوند.

ویژگی‌ها توضیحات
cols تعداد ستون‌های موجود در frameset و اندازه هر ستون را مشخص می‌کند. شما می‌توانید عرض هر ستون را به یکی از چهار روش زیر تعیین کنید:
  • مقادیر مطلق به پیکسل. به عنوان مثال، برای ایجاد سه فریم عمودی، از cols="100, 500,100" استفاده کنید.
  • درصدی از پنجره مرورگر. به عنوان مثال، برای ایجاد سه فریم عمودی، از cols="10%, 80%,10%" استفاده کنید.
  • استفاده از علامت عمومی (Wildcard یا *). به عنوان مثال، برای ایجاد سه فریم عمودی، از cols="10%, *,10%" استفاده کنید. در این حالت، علامت * باقی‌مانده فضای پنجره را در بر می‌گیرد.
  • به صورت عرض‌های نسبی از پنجره مرورگر. به عنوان مثال، برای ایجاد سه فریم عمودی، از cols="3*,2*,1*" استفاده کنید. این روش جایگزینی برای درصدها است و می‌توانید از عرض‌های نسبی پنجره مرورگر استفاده کنید. در اینجا پنجره به شش قسمت تقسیم می‌شود: ستون اول نصف پنجره، ستون دوم یک‌سوم و ستون سوم یک‌ششم آن را اشغال می‌کند.
rows این ویژگی دقیقاً مانند ویژگی cols عمل می‌کند و همان مقادیر را می‌پذیرد، اما برای تعیین سطرهای موجود در frameset استفاده می‌شود. به عنوان مثال، برای ایجاد دو فریم افقی، از rows="10%, 90%" استفاده کنید. شما می‌توانید ارتفاع هر سطر را به همان روشی که در بالا برای ستون‌ها توضیح داده شد مشخص کنید.
border این ویژگی عرض حاشیه هر فریم را به پیکسل مشخص می‌کند. به عنوان مثال border="5". مقدار صفر به معنای عدم وجود حاشیه است.
frameborder این ویژگی مشخص می‌کند که آیا حاشیه سه‌بعدی بین فریم‌ها نمایش داده شود یا خیر. این ویژگی مقدار 1 (بله) یا 0 (خیر) را می‌پذیرد. به عنوان مثال frameborder="0" عدم وجود حاشیه را مشخص می‌کند.
framespacing این ویژگی میزان فاصله بین فریم‌ها را در یک frameset مشخص می‌کند. این ویژگی می‌تواند هر مقدار صحیحی را بگیرد. به عنوان مثال framespacing="10" به این معنی است که باید ۱۰ پیکسل فاصله بین هر فریم وجود داشته باشد.

ویژگی‌های تگ <frame> در HTML

ویژگی‌های فهرست‌شده در زیر توسط تگ frame پشتیبانی می‌شوند.

ویژگی توضیحات
src این ویژگی برای دادن نام فایلی که باید در فریم بارگذاری شود استفاده می‌شود. مقدار آن می‌تواند هر آدرس URL باشد. به عنوان مثال، src="/html/top_frame.htm" یک فایل HTML موجود در دایرکتوری html را بارگذاری می‌کند.
name این ویژگی به شما امکان می‌دهد یک نام به فریم اختصاص دهید. از این نام برای مشخص کردن اینکه سند باید در کدام فریم بارگذاری شود استفاده می‌شود. این امر به‌ویژه زمانی اهمیت دارد که می‌خواهید لینک‌هایی در یک فریم ایجاد کنید که صفحات را در فریم دیگری بارگذاری کنند؛ در این حالت، فریم دوم به یک نام نیاز دارد تا خود را به عنوان هدف (target) لینک معرفی کند.
frameborder این ویژگی مشخص می‌کند که آیا حاشیه‌های آن فریم نمایش داده شوند یا خیر؛ این مقدار بر مقداری که در ویژگی frameborder در تگ <frameset> (در صورت وجود) تعیین شده است، ارجحیت دارد و می‌تواند مقادیر 1 (بله) یا 0 (خیر) را بگیرد.
marginwidth این ویژگی به شما امکان می‌دهد عرض فاصله بین سمت چپ و راست حاشیه‌های فریم و محتوای فریم را مشخص کنید. این مقدار به پیکسل داده می‌شود. به عنوان مثال marginwidth="10".
marginheight این ویژگی به شما امکان می‌دهد ارتفاع فاصله بین بالا و پایین حاشیه‌های فریم و محتوای آن را مشخص کنید. این مقدار به پیکسل داده می‌شود. به عنوان مثال marginheight="10".
noresize به طور فرض، می‌توانید با کلیک کردن و کشیدن حاشیه‌های یک فریم، اندازه آن را تغییر دهید. ویژگی noresize مانع از آن می‌شود که کاربر بتواند اندازه فریم را تغییر دهد. به عنوان مثال noresize="noresize".
scrolling این ویژگی ظاهر نوارهای پیمایش (Scrollbar) که روی فریم ظاهر می‌شوند را کنترل می‌کند. این ویژگی مقادیر "yes" ،"no" یا "auto" را می‌پذیرد. به عنوان مثال scrolling="no" به این معنی است که فریم نباید نوار پیمایش داشته باشد.
longdesc این ویژگی به شما امکان می‌دهد لینکی به صفحه دیگری ارائه دهید که شامل توضیحات طولانی درباره محتوای فریم است. به عنوان مثال longdesc="framedescription.htm".

معایب فریم‌ها

استفاده از فریم‌ها چند عیب دارد، به همین دلیل هرگز استفاده از فریم‌ها در صفحات وب توصیه نمی‌شود.

  • برخی از دستگاه‌های کوچک‌تر اغلب به این دلیل که صفحه نمایش آن‌ها به اندازه کافی بزرگ نیست تا تقسیم‌بندی شود، نمی‌توانند با فریم‌ها کار کنند.
  • گاه به دلیل وضوح‌های متفاوت صفحه نمایش، صفحه شما در رایانه‌های مختلف به گونه‌ای متفاوت نمایش داده می‌شود.
  • دکمه بازگشت (Back) مرورگر ممکن است طبق انتظار کاربر کار نکند.
  • هنوز چند مرورگر وجود دارند که از فناوری فریم پشتیبانی نمی‌کنند.

ویدیو - فریم‌های HTML

YouTube
HTML Frames

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.