mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30: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>
|