mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 19:30:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			195 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
| 
 | |
| <!--
 | |
| TODO:
 | |
| - basic structure
 | |
| 	ribbons
 | |
| 	images
 | |
| 	indicators
 | |
| - basic control elements
 | |
| 	touch zones / buttons
 | |
| 		next
 | |
| 		prev
 | |
| 		shift up
 | |
| 		shift down
 | |
| 		promote
 | |
| 		demote
 | |
| 		zoom in
 | |
| 		zoom out
 | |
| 		toggle single image
 | |
| 
 | |
| ISSUES:
 | |
| 	- jumping...
 | |
| -->
 | |
| 
 | |
| <script src="jquery.js"></script>
 | |
| <script>
 | |
| 
 | |
| $(document).ready(function() {
 | |
| 	$(".image").click(function(e) {
 | |
| 
 | |
| 		// switch classes...
 | |
| 		$(this).parents().siblings().children(".image").removeClass("current-image");
 | |
| 		$(this).siblings(".image").removeClass("current-image");
 | |
| 
 | |
| 		$(this).siblings().children(".image").removeClass("current-image");
 | |
| 		$(this).parents().siblings(".ribbon").removeClass("current-ribbon");
 | |
| 
 | |
| 		$(this).addClass("current-image");
 | |
| 		$(this).parents(".ribbon").addClass("current-ribbon");
 | |
| 
 | |
| 		var container = $(this).parents('.container')
 | |
| 		var field = $(this).parents(".field")
 | |
| 		var cur_image = $(this)
 | |
| 
 | |
| 		var container_offset = container.offset()
 | |
| 		var image_offset = cur_image.offset()
 | |
| 		var field_offset = field.offset()
 | |
| 
 | |
| 		// center the current image...
 | |
| 		field.css({
 | |
| 				left: field_offset.left - image_offset.left + (container.innerWidth() - cur_image.innerWidth())/2, 
 | |
| 				top: field_offset.top - image_offset.top + (container.innerHeight() - cur_image.innerHeight())/2, 
 | |
| 			})
 | |
| 
 | |
| 		/* XXX this is really jumpy...
 | |
| 		field.animate({
 | |
| 				left: field_offset.left - image_offset.left + (container.innerWidth() - cur_image.innerWidth())/2, 
 | |
| 				top: field_offset.top - image_offset.top + (container.innerHeight() - cur_image.innerHeight())/2, 
 | |
| 			})
 | |
| 		*/
 | |
| 
 | |
| 
 | |
| 		e.preventDefault();
 | |
| 	});
 | |
| 
 | |
| 	// set the default position...
 | |
| 	$('.current-image').click()
 | |
| });
 | |
| 
 | |
| function prevImage(){
 | |
| 	$('.current-image').prev('.image').click()
 | |
| }
 | |
| function nextImage(){
 | |
| 	$('.current-image').next('.image').click()
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| </script>
 | |
| 
 | |
| <style>
 | |
| 	.mock-image {
 | |
| 		position: relative;
 | |
| 		display: inline-block;
 | |
| 		width: 100px;
 | |
| 		height: 60px;
 | |
| 
 | |
| 		background: blue;
 | |
| 
 | |
| 		-webkit-transition: all 0.5s ease;
 | |
| 		-moz-transition: all 0.5s ease;
 | |
| 		-o-transition: all 0.5s ease;
 | |
| 		-ms-transition: all 0.5s ease;	
 | |
| 		transition: all 0.5s ease;
 | |
| 	}
 | |
| 
 | |
| 	.container {
 | |
| 		overflow: hidden;
 | |
| 		width: 400px;
 | |
| 		height: 200px;
 | |
| 	}
 | |
| 
 | |
| 	.field {
 | |
| 		position: relative;
 | |
| 		overflow: visible;
 | |
| 		top: 0px;
 | |
| 		left: -100px;
 | |
| 	}
 | |
| 
 | |
| 	.ribbon {
 | |
| 		height: 65px;
 | |
| 		width: 2000px;
 | |
| 		overflow: visible;
 | |
| 		padding-top: 2px;
 | |
| 		padding-bottom: 2px;
 | |
| 		/* XXX this kills positioning... */
 | |
| 		/*
 | |
| 		text-align: center;
 | |
| 		*/
 | |
| 		opacity: 0.2;
 | |
| 
 | |
| 		-webkit-transition: all 0.5s ease;
 | |
| 		-moz-transition: all 0.5s ease;
 | |
| 		-o-transition: all 0.5s ease;
 | |
| 		-ms-transition: all 0.5s ease;	
 | |
| 		transition: all 0.5s ease;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	.current-image {
 | |
| 		background: red;
 | |
| 	}
 | |
| 
 | |
| 	.current-ribbon {
 | |
| 		padding-top: 10px;
 | |
| 		padding-bottom: 10px;
 | |
| 
 | |
| 		opacity: 1.0;
 | |
| 
 | |
| 		-webkit-transition: all 0.5s ease;
 | |
| 		-moz-transition: all 0.5s ease;
 | |
| 		-o-transition: all 0.5s ease;
 | |
| 		-ms-transition: all 0.5s ease;	
 | |
| 		transition: all 0.5s ease;
 | |
| 	}
 | |
| 
 | |
| 	.current-ribbon .image {
 | |
| 	}
 | |
| </style>
 | |
| 
 | |
| 
 | |
| <div class="container">
 | |
| 	<div class="field">
 | |
| 		<div class="ribbon">
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 		</div>
 | |
| 		<div class="ribbon">
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 		</div>
 | |
| 		<div class="ribbon current-ribbon">
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image current-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 		</div>
 | |
| 		<div class="ribbon">
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 		</div>
 | |
| 		<div class="ribbon">
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 			<div class="image mock-image"></div>
 | |
| 		</div>
 | |
| 	</div>
 | |
| </div>
 | |
| 
 | |
| <button onclick="prevImage()">prev</button>
 | |
| <button onclick="nextImage()">next</button>
 | |
| 
 | |
| <!-- vim:set ts=4 sw=4 nowrap : -->
 |