jquery css3点击左右按钮图片滑动切换和点击图片叠加弹出层显示



169 674 225



特效描述:jquery css3 点击左右按钮 图片滑动切换 点击图片叠加弹出层,CSS3酷炫图片

代码结构

1. 引入CSS

<link rel="stylesheet" href="css/style.css" type="text/css" media="screen"/>

2. 引入JS

<script type="text/javascript" src="js/jquery.min.js"></script>

3. HTML代码

<div id="ps_slider" class="ps_slider">
	<a class="prev disabled"></a>
	<a class="next disabled"></a>
	<div id="ps_albums">
		<div class="ps_album">
			<img src="albums/album1/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>The Night</h2>
				<span>Top Cat! The most effectual Top Cat! Who's intellectual close friends get to call him T.C., providing it's with dignity.Top Cat! The indisputable leader!</span>
			</div>
		</div>
		<div class="ps_album">
			<img src="albums/album2/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>Lovely Dreams</h2>
				<span>Abundantly fowl of you'll fly moved i evening there whales creeping very kind green. Of have after lights saying.</span>
			</div>
		</div>
		<div class="ps_album">
			<img src="albums/album3/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>Insane Art</h2>
				<span>Also female divide fruitful wherein upon, fruitful great fourth likeness given subdue cattle deep abundantly set place night stars fill.</span>
			</div>
		</div>
		<div class="ps_album">
			<img src="albums/album4/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>Prime Time</h2>
				<span>And did the Countenance DivineShine forth upon our clouded hills? And was Jerusalem builded here among these dark Satanic Mills?</span>
			</div>
		</div>
		<div class="ps_album">
			<img src="albums/album5/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>House, Baby!</h2>
				<span>You can have all the faith you want in spirits, and the afterlife, and heaven and hell, but when it comes to this world, don't be an idiot.</span>
			</div>
		</div>
		<div class="ps_album">
			<img src="albums/album6/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>Run away</h2>
				<span>Without contraries is no progression. Attraction and repulsion, reason and energy, love and hate, are necessary to human existence.</span>
			</div>
		</div>
		<div class="ps_album">
			<img src="albums/album7/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>Longing</h2>
				<span>So hath under years itself seasons life divided signs light were god fruitful evening a. Fruitful.</span>
			</div>
		</div>
		<div class="ps_album">
			<img src="albums/album8/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>Heartbreaks</h2>
				<span>A light moving. Moved was abundantly created, over sixth above grass after grass.</span>
			</div>
		</div>
		<div class="ps_album">
			<img src="albums/album9/thumb/thumb.jpg" alt=""/>
			<div class="ps_desc">
				<h2>Fearful Water</h2>
				<span>If the doors of perception were cleansed everything would appear to man as it is, infinite.</span>
			</div>
		</div>
	</div>	
</div>
<div id="ps_overlay" class="ps_overlay" style="display:none;"></div>
<a id="ps_close" class="ps_close" style="display:none;"></a>
<div id="ps_container" class="ps_container" style="display:none;">
	<a id="ps_next_photo" class="ps_next_photo" style="display:none;"></a>
</div>
<!-- The JavaScript -->
<script type="text/javascript">
$(function() {
	/**
	* navR,navL are flags for controlling the albums navigation
	* first gives us the position of the album on the left
	* positions are the left positions for each of the 5 albums displayed at a time
	*/
	var navR,navL	= false;
	var first		= 1;
	var positions 	= {
		'0'		: 0,
		'1' 	: 170,
		'2' 	: 340,
		'3' 	: 510,
		'4' 	: 680
	}
	var $ps_albums 		= $('#ps_albums');
	/**
	* number of albums available
	*/
	var elems			= $ps_albums.children().length;
	var $ps_slider		= $('#ps_slider');
	/**
	* let's position all the albums on the right side of the window
	*/
	var hiddenRight 	= $(window).width() - $ps_albums.offset().left;
	$ps_albums.children('div').css('left',hiddenRight + 'px');
	/**
	* move the first 5 albums to the viewport
	*/
	$ps_albums.children('div:lt(5)').each(
		function(i){
			var $elem = $(this);
			$elem.animate({'left': positions[i] + 'px','opacity':1},800,function(){
				if(elems > 5)
					enableNavRight();
			});
		}
	);
	/**
	* next album
	*/
	$ps_slider.find('.next').bind('click',function(){
		if(!$ps_albums.children('div:nth-child('+parseInt(first+5)+')').length || !navR) return;
		disableNavRight();
		disableNavLeft();
		moveRight();
	});
	/**
	* we move the first album (the one on the left) to the left side of the window
	* the next 4 albums slide one position, and finally the next one in the list
	* slides in, to fill the space of the first one
	*/
	function moveRight () {
		var hiddenLeft 	= $ps_albums.offset().left + 163;
		var cnt = 0;
		$ps_albums.children('div:nth-child('+first+')').animate({'left': - hiddenLeft + 'px','opacity':0},500,function(){
				var $this = $(this);
				$ps_albums.children('div').slice(first,parseInt(first+4)).each(
					function(i){
						var $elem = $(this);
						$elem.animate({'left': positions[i] + 'px'},800,function(){
							++cnt;
							if(cnt == 4){
								$ps_albums.children('div:nth-child('+parseInt(first+5)+')').animate({'left': positions[cnt] + 'px','opacity':1},500,function(){
									//$this.hide();
									++first;
									if(parseInt(first + 4) < elems)
										enableNavRight();
									enableNavLeft();
								});
							}		
						});
					}
				);		
		});
	}
	/**
	* previous album
	*/
	$ps_slider.find('.prev').bind('click',function(){
		if(first==1  || !navL) return;
		disableNavRight();
		disableNavLeft();
		moveLeft();
	});
	/**
	* we move the last album (the one on the right) to the right side of the window
	* the previous 4 albums slide one position, and finally the previous one in the list
	* slides in, to fill the space of the last one
	*/
	function moveLeft () {
		var hiddenRight 	= $(window).width() - $ps_albums.offset().left;
		var cnt = 0;
		var last= first+4;
		$ps_albums.children('div:nth-child('+last+')').animate({'left': hiddenRight + 'px','opacity':0},500,function(){
				var $this = $(this);
				$ps_albums.children('div').slice(parseInt(last-5),parseInt(last-1)).each(
					function(i){
						var $elem = $(this);
						$elem.animate({'left': positions[i+1] + 'px'},800,function(){
							++cnt;
							if(cnt == 4){
								$ps_albums.children('div:nth-child('+parseInt(last-5)+')').animate({'left': positions[0] + 'px','opacity':1},500,function(){
									//$this.hide();
									--first;
									enableNavRight();
									if(first > 1)
										enableNavLeft();
								});
							}										
						});
					}
				);
		});
	}
	/**
	* disable or enable albums navigation
	*/
	function disableNavRight () {
		navR = false;
		$ps_slider.find('.next').addClass('disabled');
	}
	function disableNavLeft () {
		navL = false;
		$ps_slider.find('.prev').addClass('disabled');
	}
	function enableNavRight () {
		navR = true;
		$ps_slider.find('.next').removeClass('disabled');
	}
	function enableNavLeft () {
		navL = true;
		$ps_slider.find('.prev').removeClass('disabled');
	}		
	var $ps_container 	= $('#ps_container');
	var $ps_overlay 	= $('#ps_overlay');
	var $ps_close		= $('#ps_close');
	/**
	* when we click on an album,
	* we load with AJAX the list of pictures for that album.
	* we randomly rotate them except the last one, which is
	* the one the User sees first. We also resize and center each image.
	*/
	$ps_albums.children('div').bind('click',function(){
		var $elem = $(this);
		var album_name 	= 'album' + parseInt($elem.index() + 1);
		var $loading 	= $('<div />',{className:'loading'});
		$elem.append($loading);
		$ps_container.find('img').remove();
		$.get('photostack.php', {album_name:album_name} , function(data) {
			var items_count	= data.length;
			for(var i = 0; i < items_count; ++i){
				var item_source = data[i];
				var cnt 		= 0;
				$('<img />').load(function(){
					var $image = $(this);
					++cnt;
					resizeCenterImage($image);
					$ps_container.append($image);
					var r		= Math.floor(Math.random()*41)-20;
					if(cnt < items_count){
						$image.css({
							'-moz-transform'	:'rotate('+r+'deg)',
							'-webkit-transform'	:'rotate('+r+'deg)',
							'transform'			:'rotate('+r+'deg)'
						});
					}
					if(cnt == items_count){
						$loading.remove();
						$ps_container.show();
						$ps_close.show();
						$ps_overlay.show();
					}
				}).attr('src',item_source);
			}
		},'json');
	});
	/**
	* when hovering each one of the images, 
	* we show the button to navigate through them
	*/
	$ps_container.live('mouseenter',function(){
		$('#ps_next_photo').show();
	}).live('mouseleave',function(){
		$('#ps_next_photo').hide();
	});
	/**
	* navigate through the images: 
	* the last one (the visible one) becomes the first one.
	* we also rotate 0 degrees the new visible picture 
	*/
	$('#ps_next_photo').bind('click',function(){
		var $current 	= $ps_container.find('img:last');
		var r			= Math.floor(Math.random()*41)-20;
		var currentPositions = {
			marginLeft	: $current.css('margin-left'),
			marginTop	: $current.css('margin-top')
		}
		var $new_current = $current.prev();
		$current.animate({
			'marginLeft':'250px',
			'marginTop':'-385px'
		},250,function(){
			$(this).insertBefore($ps_container.find('img:first'))
				   .css({
						'-moz-transform'	:'rotate('+r+'deg)',
						'-webkit-transform'	:'rotate('+r+'deg)',
						'transform'			:'rotate('+r+'deg)'
					})
				   .animate({
						'marginLeft':currentPositions.marginLeft,
						'marginTop'	:currentPositions.marginTop
						},250,function(){
							$new_current.css({
								'-moz-transform'	:'rotate(0deg)',
								'-webkit-transform'	:'rotate(0deg)',
								'transform'			:'rotate(0deg)'
							});
				   });
		});
	});
	/**
	* close the images view, and go back to albums
	*/
	$('#ps_close').bind('click',function(){
		$ps_container.hide();
		$ps_close.hide();
		$ps_overlay.fadeOut(400);
	});
	/**
	* resize and center the images
	*/
	function resizeCenterImage($image){
		var theImage 	= new Image();
		theImage.src 	= $image.attr("src");
		var imgwidth 	= theImage.width;
		var imgheight 	= theImage.height;
		var containerwidth  = 460;
		var containerheight = 330;
		if(imgwidth	> containerwidth){
			var newwidth = containerwidth;
			var ratio = imgwidth / containerwidth;
			var newheight = imgheight / ratio;
			if(newheight > containerheight){
				var newnewheight = containerheight;
				var newratio = newheight/containerheight;
				var newnewwidth =newwidth/newratio;
				theImage.width = newnewwidth;
				theImage.height= newnewheight;
			}
			else{
				theImage.width = newwidth;
				theImage.height= newheight;
			}
		}
		else if(imgheight > containerheight){
			var newheight = containerheight;
			var ratio = imgheight / containerheight;
			var newwidth = imgwidth / ratio;
			if(newwidth > containerwidth){
				var newnewwidth = containerwidth;
				var newratio = newwidth/containerwidth;
				var newnewheight =newheight/newratio;
				theImage.height = newnewheight;
				theImage.width= newnewwidth;
			}
			else{
				theImage.width = newwidth;
				theImage.height= newheight;
			}
		}
		$image.css({
			'width'			:theImage.width,
			'height'		:theImage.height,
			'margin-top'	:-(theImage.height/2)-10+'px',
			'margin-left'	:-(theImage.width/2)-10+'px'	
		});
	}
});
</script>



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册


热门标签: 文字叠加 滑动导航菜单 导航切换 右键菜单 图片叠加 图片头像上传 滑动选项卡切换 文字提示框 文件上传 图片滑动 图片切换 提示框/弹出层 文本框 文字滑动 文字切换 layer 下拉框 滑动手风琴 背景切换 lightbox 复选 滑动星星打分 手风琴 单选 Tooltip工具提示框 选项卡自动切换 登录框 浮动提示框 视频切换 注册框 html5弹窗动画 列表切换 搜索框 验证码 渐隐切换 二级联动 全屏切换 三级联动 切换按钮 城市选择 缩放切换 value赋值 筛选 按钮控制 购物车 颜色选择 表单提交 全选/反选 添加删除 添加标签 密码强度验证 表单验证 html5按钮动画 按钮样式 密码修改设置 滑动滑过 滚动切换 滑动选项卡切换 弹出层拖动 叠加浮动层 选项卡切换 滑动手风琴 窗口提示框 重叠层叠叠加 切换按钮 form表单

×
×

注册

官方QQ群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到