آموزش ساخت منوی آبشاری با jQuery

چهارشنبه , 18 , آبان , 1390 | زاره آوانسیان | 22 دیدگاه

منوی آبشاری از کاربردی ترین ابزاری است که امروزه در وب سایت ها مورد استفاده قرار می گیرد. منوی آبشاری یک الگوی نمایش لینک است اما در قالبی مشخص و تعریف شده و همانطور که از نامش مشخص است به صورت آبشاری باز و فعال می گردد. این دسته از منوها در عین سادگی بسیار پرکاربرد هستند. با وجود منوهای آبشاری شما می توانید دهها لینک را در فضای کوچکی گنجانده و هر مورد از لینک ها را در صورت لزوم انتخاب و فعال نمایید. وسعت کاربرد منوهای آبشاری گسترده بوده و طراح وب سایت بنا به سلیقه و نیاز خود می تواند از آن استفاده کند.

برای ساخت منوی آبشاری راهها و روش های زیادی وجود دارد که هر کدام مزیت ها و معایب خود را دارند اما در بین همه این روش ها استفاده از کتابخانه پرقدرت و معروف جاوا اسکریپت یعنی jQuery به دلیل سازگاری با تمام مرورگر های اینترنتی و قدرت مانور بالای آن از دیگر روش های موجود کاربردی تر می باشد.

دمو

شروع کار

ابتدا یک فایل HTML ساخته می توانید برای این کار از نرم افزار هایی همچون Dreamweaver , Aptena و یا Notepad++ استفاده نمایید.

HTML

کد زیر را در فایل html کپی کنید

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>jQuery menu</title>
</head>
<body>
</body>
</html>

سپس برای افزودن jQuery به صفحه کد زیر را در قسمت head قرار دهید

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>

البته می توانید در قسمت src مکان فایل jquery مورد نظر خود را وارد نمایید.

حال باید عناصر مربوط به منو را در قسمت body قرار دهید.

<ul id="nav">
	<li><a href="#">Parent 01</a></li>
	<li><a href="#" class="selected">Parent 02</a>
		<ul>
			<li><a href="#">Item 01</a></li>
			<li><a href="#" class="selected">Item 02</a></li>
			<li><a href="#">Item 03</a></li>
		</ul>
		<div class="clear"></div>
	</li>
	<li><a href="#">Parent 03</a>
	<ul>
		<li><a href="#">Item 04</a></li>
		<li><a href="#">Item 05</a></li>
		<li><a href="#">Item 06</a></li>
		<li><a href="#">Item 07</a></li>
	</ul>
		<div class="clear"></div>
	</li>
	<li><a href="#">Parent 04</a></li>
</ul>

<div class="clear"></div>

CSS

کدهای مربط به استایل منو رو در قسمت head کپی کنید همچنین می توانید از فایل css خارجی استفاده نمایید که در اینجا برای راحتی کار آنها را در قسمت head گذاشتیم

<style  type="text/css">
body {font-family:arial; font-size:11px;}
.clear {clear:both}
/* remove the list style */
#nav {
	margin:0;
	padding:0;
	list-style:none;
}	

	/* make the LI display inline */
	/* it's position relative so that position absolute */
	/* can be used in submenu */
	#nav li {
		float:right;
		display:block;
		width:100px;
		background:#ccc;
		position:relative;
		z-index:500;
		margin:0 1px;
	}

	/* this is the parent menu */
	#nav li a {
		display:block;
		padding:8px 5px 0 5px;
		font-weight:700;
		height:23px;
		text-decoration:none;
		color:#fff;
		text-align:center;
		color:#333;
	}

	#nav li a:hover {
		color:#fff;
	}

		/* submenu, it's hidden by default */
		#nav ul {
			position:absolute;
			left:0;
			display:none;
			margin:0 0 0 -1px;
			padding:0;
			list-style:none;
		}

		#nav ul li {
			width:100px;
			float:left;
			border-top:1px solid #fff;
		}

		/* display block will make the link fill the whole area of LI */
		#nav ul a {
			display:block;
			height:15px;
			padding: 8px 5px;
			color:#666;
		}

		#nav ul a:hover {
			text-decoration:underline;
		}

/* fix ie6 small issue */
/* we should always avoid using hack like this */
/* should put it into separate file : ) */
*html #nav ul {
	margin:0 0 0 -2px;
}
</style>

Javascript

و حالا نوبت به کدهای jQuery میرسه تا به اینجای کار ما منویی را ساختیم که دارای زیر مجموعه می باشد و برای آن استایل تعریف کردیم حال می خواهیم با استفاده از jQuery زیرمجموعه ها را به صورت کشویی ظاهر کنیم. کد زیر را در قسمت head بعد از فراخوانی فایل jQuery کپی کنید سپس فایل را ذخیره کنید و در مرورگر نتیجه کار را مشاهده فرمایید

<script type="text/javascript">
$(document).ready(function () {	

	$('#nav li').hover(
		function () {
			//show its submenu
			$('ul', this).slideDown(100);

		},
		function () {
			//hide its submenu
			$('ul', this).slideUp(100);
		}
	);

});
</script>

همین طور که مشاهده می کنید زمانی که موس را بر روی منو می برید قسمت های زیر مجموعه به صورت کشویی ظاهر می شوند. در رابطه با نحوه کار کد jQuery میتوان گفت ما ابتدا عنصر والد را که در اینجا li مربوط به لیست ul است انتخاب می کنیم سپس برای اکشن hover یعنی زمانی که موس بر روی عنصر می رود دو تابع تعریف می کنیم که پشت سر هم اجرا می شوند و در تابع اولی عنصر ul که مربوط به زیر مجموعه ها می باشد با سرعت 100 میلی ثانیه رو به پایین باز می شود و در تابع دوم بر عکس تابع اول ul به سمت بالا بسته می شود همچنین شما می توانید از افکت های دیگر به جای slideDown و slideUp استفاده نمایید مثلا fadeIn و fadeOut

این بود آموزش ساخت منوی کشویی ساده و کاربردی با استفاده از jQuery در پست های بعدی به معرفی منو های قوی تر تحت jQuery خواهیم پرداخت.

22 دیدگاه برای این نوشته ثبت شده است
  • مهدی 3,بهمن,1390

    دوست عزیز سلام
    من میخوام از منوی آبشاری در وردپرس استفاده کنم
    آیا راهی هست ؟
    کد خاصی لازمه برای این کار که خودش منو های وردپرس رو اضافه کنه داخلش ؟

  • زاره آوانسیان 3,بهمن,1390

    با سلام
    بله بسیار ساده است شما باید از تابع wp_nav_menu استفاده کنید
    این تابع منوهایی را که شما در قسمت فهرست های وردپرس ساخته اید به صورت کامل نمایش میده
    در مورد این تابع از اینجا می توانید اطلاعات بیشتری کسب کنید

  • ایاد 5,اسفند,1390

    سلام خیلی ممنون دستت درد نکنه
    خسته نباشی

  • نام شما … 2,فروردین,1391

    با سلام برای استفاده در جوملا چطور باید استفاده بشه
    لطفاً توضیح بدید
    باتشکر

  • زاره آوانسیان 2,فروردین,1391

    برای جوملا می بایست فایل های js و css را در قسمت head در فایل index.php پوسته فراخوانی نمایید سپس ماژول منو را در پوسته لود کرده و id مورد نظر در قسمت menuid را در تنظیمات ماژول و در قسمت شناسه منو وارد نمایید.

  • ARG 11,مرداد,1391

    سلام.ممنون از مطلب خوبتون.فقط 2 تا مشکل هست اگه راهنمایی کنید ممنون میشم.اول اینکه صفحه لود میشه منو ها بازند.دوم اینکه هر چقدر موس و از روی منو ها رد کنیم همون قدر باز و بسته میشن.مثلا اگه ده بار از روشون رد بشیم ده بار باز و بسته میشه !

  • زاره آوانسیان 11,مرداد,1391

    با سلام
    منوها بازند رو متوجه نمی شوم منظورتون چی هست چون تو دمو چیزی نیست اگر قالب شما مشکل داره می تونید در css مربوط به ul ها display را none کنید
    در مورد مشکل دومی هم همه منوها این جوری هستن اگر می خواین کمی نرمال تر بشه از delay برای اجرا شدن افکت استفاده کنید تا وقتی موس در مکان قرار می گیرد بعد از یه مدتی مثلا 2 ثانیه باز شود
    موفق باشد

  • زینب 27,مرداد,1391

    ممنونم خیلی مفید بود.

  • M 13,مهر,1391

    سلام . جدا عالی بود . خیلی ممنون . یه گوشه از کار پروژه ام که درگیر این بود , درست شد

  • زاره آوانسیان 13,مهر,1391

    سلام
    خواهش می کنم
    خوشحالم که به کارتون اومده
    موفق باشید

  • علی رخ 21,مهر,1391

    سلام،
    وقتی که برای آیتم های منو زیر مجموعه هایی تعریف می کنم زمانی که موس روی گزینه مادر می رود تمام گزینه های زیر مجموعه ها تا انتهایی ترین آیتم باز می شوند.
    چکار کنم که فقط گزینه هایی که مربوط به سرشاخه ای که موس روی آن است باز شوند .
    مرسی

  • زاره آوانسیان 2,آبان,1391

    سلام
    برای این که فقط بر روی همان زیر مجموعه انجام شود شما باید با استفاده از عبارت this فقط ul مورد نظر رو انتخاب کنید
    به این صورت $(‘ul’, this)

  • روزبه 1,آذر,1391

    سلام و خسته نباشید ، آموزش خیلی عالی بود . آیا میشه راهنمایی کنید چطور تو بعضی سایت ها لینک منو آبشاری در همون صفحه لود میشه مثل سایت ورزش 3 – اگر اسکریپت یا آموزشی سراغ دارید لطفا راهنمایی کنید مرسی

  • زاره آوانسیان 1,آذر,1391

    سلام
    ببینید این که فقط قسمتی از سایت refresh میشه و بقیه ثابت میمونه در واقع از ajax استفاده میشه که خوب مبحث گسترده ای هستش البته در این زمینه یک آموزش پایه داریم به نام آموزش بارگزاری صفحات وب به صورت ای‌جکس به وسیله jQuery که می تونید اون رو بررسی کنید

  • روزبه 1,آذر,1391

    واقعا سایت خوب و کم نظیری دارید آموزش ها خیلی روان و خوبه ، صفحه ای رو که فرمودید دیدم تغریبا همونی بود که میخواستم . موفق باشید

  • hamid 24,آذر,1391

    سلام
    عالی بود خدا قوت
    لطفاً ادامه بدهید

  • مهدی 5,تیر,1392

    بابا احسن به این سایت پر بار تا حالا کجا بودین من تو وب ندیده بودمتون.
    بسیار تشکر

  • زاره آوانسیان 6,تیر,1392

    مرسی شما لطف دارین

  • پیمان 8,اردیبهشت,1393

    سلام خسته نباشید
    ممنون از آموزشای خوبتون
    لطف میکنید بگید برای برچسب ها تو قسمت فوتر از چی استفاده کردین که متحرکن

  • ایـــــران وردپــــــــرس 17,تیر,1393

    عالی بود خیلی ممنون بابت وقتی که قرار دادید

  • zahra 30,تیر,1393

    عالی بود

  • 123456 19,مهر,1393

    ممنون
    خیلی دمتون گرم
    مشکلم حل شد :)

دیدگاه خود را بیان کنید ...


up