jquery

Создание вертикального кроссбраузерного меню с помощью jQuery

Март 15th, 2010

Хотите создать вертикальное контекстное меню на страницах вашего сайта? Это очень просто. В этой статье будет продемонстрировано как с помощью библиотеки jQuery такое меню можно сделать.

html структура jQuery меню

Наше вертикальное контекстное jQuery меню будет появляться при клике в любом месте в пределах контейнера с id rightclickarea.

<div id="rightclickarea">Right click inside bordered container</div>
	<div class="vmenu">
 		   <div class="first_li"><span>Open</span></div>
		   <div class="first_li"><span>Open in new tab</span></div>
				<div class="sep_li"></div>
		<div class="first_li"><span>Quick Preview</span>
			<div class="inner_li">
				<span>Dossier</span>
				<span>Channel 1</span>
				<span>Channel 2</span>
			</div>
		</div>
		<div class="first_li"><span>Preview</span>
		 		<div class="inner_li">
				<span>Channel 1</span>
				<span>Channel 2 </span>
			</div>
		</div>
		<div class="first_li"><span>Edit</span></div>
		<div class="first_li"><span>Event Log</span></div>
		<div class="sep_li"></div>
		<div class="first_li"><span>New</span></div>
		<div class="first_li"><span>Assignments</span>
		  		<div class="inner_li">
			 		<span>Assignement 1</span>
					<span>Assignement 2</span>
			</div>
		</div>
		<div class="first_li"><span>Assets</span>
			<div class="inner_li">
				<span>Asset 1</span>
				<span>Asset 2</span>
				<span>All Assets</span>
			</div>
		</div>
		<div class="first_li"><span>Preview</span></div>
		<div class="sep_li"></div>
		<div class="first_li"><span>Move to</span>
			<div class="inner_li">
					<span>Folder name</span>
			</div>
		</div>
			<div class="first_li"><span>Others</span>
			<div class="inner_li">
				<span>Mark as Read</span>
				<span>Mark as Unread</span>
					   		<span>Trash</span>
				<span>Archieve</span>
					<span>Commite</span>
				<span>Release</span>
			</div>
		</div>
	</div>

css стили

Теперь немного приукрасим наше jQuery меню с помощью css стилей:

.vmenu{
	border:1px solid #aaa;
	position:absolute;
	background:#fff;
	display:none;
	font-size:0.75em;
}
.vmenu .first_li span{
	width:100px;
	display:block;
	padding:5px 10px;
	cursor:pointer;
}
.vmenu .inner_li{
	display:none;
	margin-left:120px;
	position:absolute;
	border:1px solid #aaa;
	border-left:1px solid #ccc;
	margin-top:-28px;
	background:#fff;
}
.vmenu .sep_li{
	border-top: 1px ridge #aaa;
	margin:5px 0;
}
.vmenu .fill_title{
	font-size:11px;
	font-weight:bold;
	/height:15px;
	/overflow:hidden;
	word-wrap:break-word;
}

jQuery для меню

Чтоб вертикальное jQuery меню начало функционировать добавим самое важно – jQuery.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" >
	$(document).ready(function(){
			$('#rightclickarea').bind('contextmenu',function(e){
			var $cmenu = $(this).next();
			$('<div class="overlay"></div>').css({left : '0px', top : '0px',position: 'absolute', width:												   '100%', height: '100%', zIndex: '100' }).click(function() {
				$(this).remove();
				$cmenu.hide();
			}).bind('contextmenu' , function(){return false;}).appendTo(document.body);
			$(this).next().css({ left: e.pageX, top: e.pageY, zIndex: '101' }).show();
			return false;
			 });
			 $('.vmenu .first_li').live('click',function() {
				if( $(this).children().size() == 1 ) {
					alert($(this).children().text());
					$('.vmenu').hide();
					$('.overlay').hide();
				}
			 });
			 $('.vmenu .inner_li span').live('click',function() {
					alert($(this).text());
					$('.vmenu').hide();
					$('.overlay').hide();
			 });
			$(".first_li , .sec_li, .inner_li span").hover(function () {
				$(this).css({backgroundColor : '#E0EDFE' , cursor : 'pointer'});
			if ( $(this).children().size() >0 )
					$(this).find('.inner_li').show();
					$(this).css({cursor : 'default'});
			},
			function () {
				$(this).css('background-color' , '#fff' );
				$(this).find('.inner_li').hide();
			});
		});
		</script>

Оставьте свой комментарий

', 1 => '', 2 => '', 3 => '', 4 => '', 5 => '', 6 => '', 7 => '', 8 => '', 9 => '', 10 => '', 11 => '', 12 => '', 13 => '', 14 => '', 15 => '', 16 => '', 17 => '', 18 => '', 19 => '', 20 => '', 21 => '', 22 => '', 23 => '', 24 => '', 25 => '', 26 => '', 27 => '', 28 => '', 29 => '', ), ) memory start/end/dif 23913280/24388568/475296 get_num_queries start/end/dif 6/9/3 iSapeDebugLogEnd --->