mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 11:20:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			160 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
| 
 | |
| <script src="jquery.js"></script>
 | |
| <script>
 | |
| 
 | |
| function handle_click(e){
 | |
| 	$('.current.image').removeClass('current')
 | |
| 	$(this).addClass('current')
 | |
| }
 | |
| 
 | |
| function make_image(){
 | |
| 	return $('<div class="image"/>')
 | |
| 			.click(handle_click)
 | |
| }
 | |
| 
 | |
| function load_images_before(){
 | |
| 	$('.ribbon').prepend( 
 | |
| 		make_image(), 
 | |
| 		make_image(), 
 | |
| 		make_image(), 
 | |
| 		make_image(), 
 | |
| 		make_image() )
 | |
| }
 | |
| function load_images_after(){
 | |
| 	$('.ribbon').append( 
 | |
| 		make_image(), 
 | |
| 		make_image(), 
 | |
| 		make_image(), 
 | |
| 		make_image(), 
 | |
| 		make_image() )
 | |
| }
 | |
| 
 | |
| function trim_images_at_end(){
 | |
| 	$('.image:nth-last-child(6) ~ .image').remove()
 | |
| }
 | |
| function trim_images_at_start(){
 | |
| 	$('.image:nth-child(1),'+
 | |
| 		'.image:nth-child(2), '+
 | |
| 		'.image:nth-child(3), '+
 | |
| 		'.image:nth-child(4), '+
 | |
| 		'.image:nth-child(5)'
 | |
| 		).remove()
 | |
| }
 | |
| 
 | |
| function shift_ribbon_left(){
 | |
| 	$('.field').addClass('unanimated')
 | |
| 
 | |
| 	load_images_after()
 | |
| 	trim_images_at_start()
 | |
| 
 | |
| 	// correct for growth...
 | |
| 	var w = 80
 | |
| 	var l = parseFloat($('.field').css('left'))
 | |
| 	// XXX on 20.0 chrome, getting the left coordinates will yeild a 
 | |
| 	//	screen value correctd for zoom, which is different from the
 | |
| 	//	value written...
 | |
| 	//	e.g. writing 400px with page zoom to 80% and then getting the 
 | |
| 	//	value will return 300px!!
 | |
| 	$('.field').css({left: l + w*5})
 | |
| 
 | |
| 	// XXX this is really hackish! ...find a better way to solve this...
 | |
| 	// XXX this is bad because it might depend on the speed of the device...
 | |
| 	setTimeout(function(){$('.field').removeClass('unanimated')}, 10)
 | |
| }
 | |
| function shift_ribbon_right(){
 | |
| 	$('.field').addClass('unanimated')
 | |
| 
 | |
| 	load_images_before()
 | |
| 	trim_images_at_end()
 | |
| 
 | |
| 	// correct for growth...
 | |
| 	var w = 80
 | |
| 	var l = parseFloat($('.field').css('left'))
 | |
| 	// XXX on 20.0 chrome, getting the left coordinates will yeild a 
 | |
| 	//	screen value correctd for zoom, which is different from the
 | |
| 	//	value written...
 | |
| 	//	e.g. writing 400px with page zoom to 80% and then getting the 
 | |
| 	//	value will return 300px!!
 | |
| 	$('.field').css({left: l - w*5})
 | |
| 
 | |
| 	// XXX this is really hackish! ...find a better way to solve this...
 | |
| 	// XXX this is bad because it might depend on the speed of the device...
 | |
| 	setTimeout(function(){$('.field').removeClass('unanimated')}, 10)
 | |
| }
 | |
| 
 | |
| 
 | |
| function center_current_image(){
 | |
| }
 | |
| 
 | |
| 
 | |
| $(document).ready(function(){
 | |
| 	$('.ribbon').append( make_image().click() )
 | |
| 	load_images_before()
 | |
| 	load_images_after()
 | |
| })
 | |
| 
 | |
| </script>
 | |
| 
 | |
| 
 | |
| <style>
 | |
| 
 | |
| body {
 | |
| 	overflow: hidden;
 | |
| }
 | |
| 
 | |
| .field {
 | |
| 	position: relative;
 | |
| 	top: 0px;
 | |
| 	left: 0px;
 | |
| 	width: auto;
 | |
| 	overflow: visible;
 | |
| 
 | |
| 	-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;
 | |
| }
 | |
| 
 | |
| .unanimated {
 | |
| 	-webkit-transition: none;
 | |
| 	-moz-transition: none;
 | |
| 	-o-transition: all 0 ease;
 | |
| 	-ms-transition: none;	
 | |
| 	transition: none;
 | |
| }
 | |
| 
 | |
| .ribbon {
 | |
| 	padding: 10px;
 | |
| 	height: 100px;
 | |
| 
 | |
| 	width: auto;
 | |
| 	overflow: visible;
 | |
| 	white-space: nowrap;
 | |
| 	font-size: 0px;
 | |
| }
 | |
| 
 | |
| .image {
 | |
| 	display: inline-block;
 | |
| 	height: 80px;
 | |
| 	width: 80px;
 | |
| 	background: silver;
 | |
| }
 | |
| 
 | |
| .current.image {
 | |
| 	background: red;
 | |
| }
 | |
| 
 | |
| </style>
 | |
| 
 | |
| 
 | |
| <button onclick="shift_ribbon_left()"><</button>
 | |
| <button onclick="shift_ribbon_right()">></button>
 | |
| 
 | |
| <div class="viewer">
 | |
| 	<div class="field">
 | |
| 		<div class="ribbon">
 | |
| 		</div>
 | |
| 	</div>
 | |
| </div>
 |