شنبه ۲۲ شهریور ۱۴۰۴

Saturday, September 13, 2025 GMT +3:30

ایجاد پنل جمع شونده با جاوا اسکریپت و فریم ورک Spry

javascript

از جمله امکانات مورد نیاز در طراحی رابط کاربری سایت ها و وبلاگ ها پنل های جمع شونده (Collapsible Panel) هستند که می توان از آنها برای نمایش امکاناتی نظیر منوی سایت یا دسته بندی محتوای طولانی و مواردی از این دست استفاده کرد، روش ایجاد این پنل ها نیز بسته به نیاز و هدف برنامه نویس صفحه وب می تواند متفاوت باشد از جمله استفاده از کتابخانه جاوا اسکریپتی جی کوئری (jQuery)، کتابخانه موتولز (Mootools)، استفاده از کدها و توابع خودنوشت و...  به هر صورت در این مطلب قصد داریم آموزش ایجاد پنل جمع شونده را به کمک جاوا اسکریپت (JavaScript) و فریم ورک Spry (که در برخی نسخه های برنامه ادوبی دریم ویور (Adobe Dreamweaver) نیز استفاده شده) ارائه کنیم، کد ارائه شده در این مطلب در عین سبکی (کم حجمی) از قابلیت سازگاری خوبی با مرورگرهای استاندارد برخوردار است و در کنار کدهای جاوا اسکریپت قابلیت ایجاد تغییرات سفارشی از طریق ویرایش فایل CSS نیز وجود دارد که می توانید بر اساس سلیقه خودتان آن را تنظیم کنید.

استفاده از فریم ورک Spry برای ایجاد پنل جمع شونده


Spry عنوان فریم ورک جاوا اسکریپتی است که توسط شرکت ادوبی (Adobe) به صورت متن باز (Open-source) توسعه یافته، از این فریم ورک می توان در ایجاد امکانات مورد نیاز در طراحی رابط کاربری صفحات وب استفاده کرد که یکی از این امکانات می تواند پنل های جمع شونده یا به اصطلاح Collapsible Panel باشد، در نمونه کد زیر نحوه ایجاد دو پنل جمع شونده به کمک این فریم ورک را ملاحظه می کنید:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ایجاد پنل جمع شونده با فریم ورک Spry</title>
<!-- Webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
</style>
<script src="SpryAssets/SpryCollapsiblePanel.js" type="text/javascript"></script>
<link href="SpryAssets/SpryCollapsiblePanel.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="CollapsiblePanel1" class="CollapsiblePanel">
  <div class="CollapsiblePanelTab">منو</div>
  <div class="CollapsiblePanelContent">نمایش محتوای شما!</div>
</div>
<div id="CollapsiblePanel2" class="CollapsiblePanel">
  <div class="CollapsiblePanelTab">منو</div>
  <div class="CollapsiblePanelContent">نمایش محتوای شما!</div>
</div>
<script type="text/javascript">
var CollapsiblePanel1 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel1");
var CollapsiblePanel2 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel2");
</script>
</body>
</html>
پیش نمایش
توضیح:
- به محل قرار گیری فایل ها و تگ های جاوا اسکریپت دقت کنید، فایل SpryCollapsiblePanel.js و SpryCollapsiblePanel.css را در قسمت head صفحه ایمپورت کرده و تکه کد مربوط به اسکریپت (تعریف متغیر CollapsiblePanel و فراخوانی متد) را پس از تگ div اصلی پنل قرار دهید.
- با ویرایش فایل SpryCollapsiblePanel.css می توانید تنظیمات ظاهری و استایل دلخواه خود را اعمال کنید.
- برای ایجاد پنل های مختلف در یک صفحه باید ابتدا به هر بلاک اصلی div، یک آی دی اختصاص دهید سپس در قسمت اسکریپت در زیر متغیر CollapsiblePanel1 آن آی دی را در متغیری جدید (به فرض CollapsiblePanel2) اضافه کنید (در نمونه کد دو پنل ایجاد شده که با پیروی از ترتیب شماره گذاری ها می توان به هر تعداد پنل در صفحه ایجاد کرد).

دانلود فایل های پنل جمع شونده با Spry


برای بدست آوردن نمونه سورس کد و فایل JS و CSS پنل، می توانید بر روی لینک پیش نمایش (در بالا) کلیک کرده سپس از سورس کد صفحه استفاده نمائید، همچنین کل فایل ها به صورت یکجا از لینک زیر قابل دریافت است:
دانلود فایل های پنل جمع شونده با Spry
دسته بندی: آموزش کاربردی » JavaScript
related مطالب بیشتر:
ساخت پنل چند سربرگی (Tabbed Panel) با جاوا اسکریپت و CSS
نمایش پیام در حال بارگذاری با جاوا اسکریپت (JavaScript)
ساخت منوی آکاردئونی با جاوا اسکریپت و CSS
ساخت افکت رنگی با جاوا اسکریپت (JavaScript)
استفاده ترکیبی از جاوا اسکریپت (JavaScript) و PHP
دیدگاه
more ۲۷ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
مسعود
۰۱:۳۶ ۱۳۹۲/۰۵/۲۵
با سلام مجدد . آقا تبریک میگم به این سایت بسیار خوبتون . واقعا خیلی عالیه هر چی بگم کم گفتم . فقط اگه مبحث جی کوئری رو هم ارئه بدین که دیگه بی نظیر میشه .
بازم ممنونم از سایت بسیار عالیتون
در کوتاه مدت امکانپذیر نیست، اما شاید در آینده بخشی را به این فریم ورک اختصاص دهیم.
مسعود
۱۱:۳۶ ۱۳۹۲/۰۵/۲۴
با سلام .
استاد ببخشید . این کدی که گذاشتین رو من می خوام مثلا رو دکمه ی ادامه مطلب پیاده کنم که وقتی ادامه مطلب رو میزنیم بقیه باز بشه . مشکلی که وجود داره اینه که من می خوام فقط رو لینک ادامه مطلب که کلیک می کنی این اتفاق میفته و این کد برای یه div هست . ایشالله که منظورم رو متوجه شدین ! میشه یه توضیح بدین که چی کار کنم ؟
کل محتوایی که باید به صورت باکس باشد را درون یک بلاک CollapsiblePanel قرار دهید، قسمت لینک را درون CollapsiblePanelTab و قسمت ادامه مطلب را در بخش CollapsiblePanelContent، بدین ترتیب با کلیک بر روی لینک، محتوا نمایش داده می شود، برای تغییر جلوه ظاهری نیز از استایل CSS استفاده کنید.
sama
۰۰:۲۳ ۱۳۹۲/۰۵/۱۷
اجازه بدید سوالم رو به صورت دیگر بیان کنم
من در صفحه اصلی وب یه منوی کشویی نوشتم می خوام در زیر منوی کشویی در سمت راست صفحه اصلی وب چند ارگومان یا عنوان قرار بدم که وقتی روی یکی از این عنوان ها میرم زیر منوهاش رو با اتصال خط چین به والدش نشان بده و برای بار دوم که روی عنوان والد میرم زیر مجموعه اش جمع بشه. و اینکه کد منو درختی رو در کجا ذخیره کنم؟
و یه سوال دیگر چطور می تونم در صفحه اصلی وبم دکمه راست کلیک رو میزنم صفحه ام right click menu باشه؟
شدیدا به راهنمای شما استاد بزرگوار احتیاج دارم لطف کنید کمکم کنید
سپاسگذارم
در مورد منوی درختی:
در حال حاضر کدی آماده برای این نوع منو در اختیار نداریم (شاید در آینده آموزشی درباره آن در سایت منتشر شود)، اما اگر در وب همان عنوان "tree menu" را جستجو کنید، نمونه های زیادی پیدا خواهید کرد، منظورتان از ذخیره کد منو احتمالا روش درج آن است، باید فایل های CSS یا JS منو را در یک دایرکتوری یا در یک سایت آپلود کرده و در صفحه خود آنها را وارد کنید، حتی می توانید به صورت مستقیم تمام کدها را در یک صفحه داشته باشید.
در مورد سوال دوم:
برای این کار باید منوی پیش فرض مرورگر را غیر فعال و محتویات مورد نظر خودتان را چاپ کنید:
<script type="text/javascript">
if(document.addEventListener){
document.addEventListener('contextmenu', function(e){
document.write('کد منوی شما در حالت راست کلیک');
e.preventDefault();
}, false);
}
else{
document.attachEvent('oncontextmenu', function(){
document.write('کد منوی شما در حالت راست کلیک');
window.event.returnValue = false;
});
}
</script>
البته غیر فعال کردن تنظیمات اولیه مرورگر به هیچ وجه توصیه نمی شود و در وب معمول نیست (در وب بر خلاف نرم افزارهای تحت ویندوز و...، با محدودیت های خاصی روبرو هستیم و تنها در چارچوب استانداردهای فراگیر بین مرورگرهای مختلف باید امکانات یک صفحه وب تعریف شود، هر امکانی را نمی توان به راحتی و به درستی ایجاد کرد).
sama
۱۴:۳۴ ۱۳۹۲/۰۵/۱۶
سلام خسته نباشید
لطفا کمکم کنید که چطور میتونم با استفاده از کدهای جاوا و css یک tree menu در صفحه وب در زیر منو ابشاری ام ایجاد کنم.
لطفا کدهاش رو و اینکه در کدوم قسمت برنامه dreamweaver باید بنویسم راهنمایم کنید.
با سپاس فراوان............
هر چند دقیقا نمی دانیم چه نوع منوی درختی مد نظر شما است، اما در این خصوص کدی آماده در اختیار نداریم، چند نوع مختلف منو در سایت آموزش داده شده، کافی است عبارت "منو" را در قسمت جستجو وارد کنید.
fatima
۱۱:۰۸ ۱۳۹۲/۰۵/۰۳
سلام. من چطور میتونم فایل CSS رو تغییر بدم. آخه همچین فایلی برای دانلود نیست
آدرس فایل CSS:
http://webgoo.ir/example/javascript/SpryAssets/SpryCollapsiblePanel.css
ابوالفضل
۱۶:۲۴ ۱۳۹۲/۰۴/۱۸
سلام من میخوام دو منو باشد اولی بسته باشد و دومی باز باشد.
می خوام زمانی که بر روی منوی اولی کلیک شد منو باز شود و بعد از دو ثانیه منو دوم بسته شود خواهش می کنم کمکم کنید خیلی بهش نیاز دارم
بی نهایت از شما بابت سایت خوبتون سپاسگذارم
منوی مد نظرتان را یا باید در وب جستجو کنید و یک نمونه آماده پیدا کنید یا اینکه آن را بنویسید، متاسفانه به دلیل کمبود فرصت امکان نوشتن آن وجود ندارد.
الهام
۱۵:۲۴ ۱۳۹۲/۰۴/۱۴
سلام
خسته نباشید
من یه سوال داشتم . چطوری میشه با کد جاوا همین طوری با کلیک بر روی منوی مورد نظر صفحه ای کوچک تر از صفحه اصلی توی همون صفحه اصلی باز بشه که وقتی باز شد صفحه اصلی تار شود (غیر فعال) که با گذاشتن دکمه ای خروج توی صفحه دوم، از صفحه دوم بیایم بیرون و صفحه اصلی دوباره فعال بشه
این کار نیاز به کدنویسی پیشرفته و آموزشی جداگانه دارد، شاید نمونه های آن در وب در قالب جی کئوری وجود داشته باشد که باید جستجو کنید.
۱۹:۳۰ ۱۳۹۲/۰۴/۰۶
یک دنیا ممنون
کامل و جامع گفتید
متشکرم
۱۹:۵۴ ۱۳۹۲/۰۴/۰۵
با سلام و تشکر بابت این مطلب مفید.
دوست عزیز ممکنه بفرمایید چطور میشه تعیین کرد در ابتدای کار، کدوم پنل باز و کدوم پنل بسته کرد؟
طوری که چند تا پنل موجود بسته و تنها یکی باز باشه و سپس کاربر پنل دلخواه خود رو باز یا بسته کنه.
ممنون
سفارشی سازی این کد بر اساس API Spry به راحتی امکان پذیر است، برای حالت مد نظر شما کافی است تنظیمات قسمت زیر را ویرایش:
<script type="text/javascript">
var CollapsiblePanel1 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel1");
var CollapsiblePanel2 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel12");
</script>
و هر پنلی که می خواهید در ابتدا بسته باشد را به روش نمونه زیر تغییر دهید:
<script type="text/javascript">
var CollapsiblePanel1 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel1",{contentIsOpen:false, openClass:"CollapsiblePanelClose"});
var CollapsiblePanel2 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel2");
</script>
در اینجا ما پنل اول را به صورت پیش فرض بسته ایم.
تنظیمات قابل اعمال:
- closedClass با مقدار نام یک کلاس (مقدار پیش فرض: null)
- contentIsOpen با مقدار true یا flase (مقدار پیش فرض: true)
- duration با مقدار هزام ثانیه (مقدار پیش فرض: 500)
- enableAnimation با مقدار true یا false (مقدار پیش فرض: true)
- focusedClass با مقدار نام یک کلاس (مقدار پیش فرض: null)
- hoverClass با مقدار نام یک کلاس (مقدار پیش فرض: null)
- openClass با مقدار نام یک کلاس (مقدار پیش فرض: null)
- enableKeyboardNavigation با مقدار true یا false (مقدار پیش فرض: true)
- openPanelKeyCode با مقدار عدد کلیدهای صفحه کلید (مقدار پیش فرض: number)
به طور مثال عدد 40 مربوط به دکمه جهت نمای پائین است.
- closePanelKeyCode با مقدار عدد کلیدهای صفحه کلید (مقدار پیش فرض: number)
به طور مثال عدد 38 مربوط به دکمه جهت نمای بالا است.
علی
۰۸:۵۰ ۱۳۹۲/۰۱/۱۰
با سلام و تشکر از سایت بسیار خوبتون
من کد نویسی وارد نیستم ولی کارهایی که گفتید انجام دادم کد جاوا اسکریپت را نمی دونم کجا و چطوری ایمپورت کنم.
پشت سر هم با کد بعدی که مربوط به فایلهای اصلی بود داخل قسمت منبع ریختم ولی نشد
برای استفاده از اینگونه کدها باید دانش و تجربه اولیه مبانی وب را داشته باشید، به هر صورت کافی است مطابق نمونه ابتدا آنها را آپلود کرده و با جایگزینی آدرس ها، در هر جا از قالب یا مطالب وبلاگ یا سایتتان که امکان پشتیبانی و نمایش کدهای HTML را دارد، آن را قرار دهید.
amirchermahini
۱۶:۴۶ ۱۳۹۱/۱۲/۲۶
با سلام و عرض ادب
در قسمت پیش نمایش من شاهد باز شدن منو ها بودم اما با نوشتن خودم نمیشه
حتی کدهای شما رو کپی و پیست هم کردم و جواب نمیده چرا ؟
با تشکر از مطالب عالی و اموزنده شما
باید سورس های JS و CSS را نیز در کنار صفحه HTML قرار دهید، برای این کار هم از طریق برنامه دریم ویور و هم از طریق نمونه آنلاین می توانید کدها را ذخیره کنید.
فایل JS:
http://webgoo.ir/example/javascript/SpryAssets/SpryCollapsiblePanel.js
فایل CSS:
http://webgoo.ir/example/javascript/SpryAssets/SpryCollapsiblePanel.css
س
۱۸:۵۲ ۱۳۹۱/۱۲/۲۱
خیلی جالب بود.
دست شما درد نکنه
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
8 × 8
20 × 20
=