mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
added global transition toggle, some code cleanup and refactoring...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
a105db3161
commit
46df972ac1
@ -1,5 +1,5 @@
|
|||||||
Priority work
|
Priority work
|
||||||
[_] 79% Preview II
|
[_] 84% Preview II
|
||||||
[X] 100% sorted images in ribbons
|
[X] 100% sorted images in ribbons
|
||||||
[X] 100% stage I: position the promoted/demoted image correctly
|
[X] 100% stage I: position the promoted/demoted image correctly
|
||||||
| and correct positioning on promote/demote
|
| and correct positioning on promote/demote
|
||||||
@ -100,13 +100,15 @@ Priority work
|
|||||||
[X] 100% actions
|
[X] 100% actions
|
||||||
[X] bug: shifting up to new ribbon pushes the current row down...
|
[X] bug: shifting up to new ribbon pushes the current row down...
|
||||||
| before starting on a fix, need to cleanup the code from old hacks and workarounds...
|
| before starting on a fix, need to cleanup the code from old hacks and workarounds...
|
||||||
[_] 16% native client
|
[_] 41% native client
|
||||||
[_] 33% Windows (CEF / CEFPython)
|
[_] 33% Windows (CEF / CEFPython)
|
||||||
[X] basic test
|
[X] basic test
|
||||||
[_] basic wrapper
|
[_] basic wrapper
|
||||||
| hook-in os-specific API
|
| hook-in os-specific API
|
||||||
[_] package a portable exe
|
[_] package a portable exe
|
||||||
[_] 0% Android (PhoneGap)
|
[_] 50% Android (PhoneGap)
|
||||||
|
[X] basic test
|
||||||
|
[X] disable transitions...
|
||||||
[_] restrict layout to horizontal
|
[_] restrict layout to horizontal
|
||||||
| leave doing a different vertical layout for later versions...
|
| leave doing a different vertical layout for later versions...
|
||||||
[_] basic wrapper
|
[_] basic wrapper
|
||||||
|
|||||||
@ -50,6 +50,7 @@ function setup(){
|
|||||||
|
|
||||||
// XXX
|
// XXX
|
||||||
setBackgroundMode('dark')
|
setBackgroundMode('dark')
|
||||||
|
enableTransitions()
|
||||||
|
|
||||||
// setup event handlers...
|
// setup event handlers...
|
||||||
setupEvents()
|
setupEvents()
|
||||||
|
|||||||
@ -5,8 +5,9 @@
|
|||||||
// XXX need to make this handle modifiers gracefully...
|
// XXX need to make this handle modifiers gracefully...
|
||||||
var keys = {
|
var keys = {
|
||||||
toggleHelp: [72], // ???
|
toggleHelp: [72], // ???
|
||||||
toggleSingleImageMode: [70, 13], // ???, Enter
|
toggleSingleImageMode: [70, 13], // f, Enter
|
||||||
toggleSingleImageModeTransitions: [84], // t
|
toggleSingleImageModeTransitions: [84], // t
|
||||||
|
toggleTransitions: [65], // a
|
||||||
toggleBackgroundModes: [66], // b
|
toggleBackgroundModes: [66], // b
|
||||||
toggleControls: [9], // tab
|
toggleControls: [9], // tab
|
||||||
close: [27, 88, 67], // ???
|
close: [27, 88, 67], // ???
|
||||||
@ -66,6 +67,160 @@ var MOVE_DELTA = 50
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************** Helpers **/
|
||||||
|
|
||||||
|
|
||||||
|
// this will create a function that will add/remove a css_class to elem
|
||||||
|
// calling the callbacks before and/or after.
|
||||||
|
// NOTE: of only one callback is given then it will be called after the
|
||||||
|
// class change...
|
||||||
|
// a way around this is to pass an empty function as callback_b
|
||||||
|
function createCSSClassToggler(elem, css_class, callback_a, callback_b){
|
||||||
|
// prepare the pre/post callbacks...
|
||||||
|
if(callback_b == null){
|
||||||
|
var callback_pre = null
|
||||||
|
var callback_post = callback_a
|
||||||
|
} else {
|
||||||
|
var callback_pre = callback_a
|
||||||
|
var callback_post = callback_b
|
||||||
|
}
|
||||||
|
return function(action){
|
||||||
|
if(action == null){
|
||||||
|
action = 'on'
|
||||||
|
// get current state...
|
||||||
|
if( $(elem).hasClass(css_class) ){
|
||||||
|
action = 'off'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(callback_pre != null){
|
||||||
|
callback_pre(action)
|
||||||
|
}
|
||||||
|
// play with the class...
|
||||||
|
if(state == 'on'){
|
||||||
|
$(elem).addClass(css_class)
|
||||||
|
} else {
|
||||||
|
$(elem).removeClass(css_class)
|
||||||
|
}
|
||||||
|
if(callback_post != null){
|
||||||
|
callback_post(action)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// disable transitions on obj, call func then enable transitions back...
|
||||||
|
function doWithoutTransitions(obj, func){
|
||||||
|
obj
|
||||||
|
.addClass('unanimated')
|
||||||
|
.one("webkitTransitionEnd oTransitionEnd msTransitionEnd transitionend", function(){
|
||||||
|
func()
|
||||||
|
$('.viewer')
|
||||||
|
.one("webkitTransitionEnd oTransitionEnd msTransitionEnd transitionend", function(){
|
||||||
|
obj.removeClass('unanimated')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// find an image object after which to position image ID...
|
||||||
|
// used for two main tasks:
|
||||||
|
// - positioning promoted/demoted images
|
||||||
|
// - centering ribbons
|
||||||
|
// returns:
|
||||||
|
// - null - empty ribbon or no element greater id should be first
|
||||||
|
// - element
|
||||||
|
// XXX do we need to make ids numbers for this to work?
|
||||||
|
function getImageBefore_lin(id, ribbon){
|
||||||
|
// walk the ribbon till we find two images one with an ID less and
|
||||||
|
// another greater that id...
|
||||||
|
id = parseInt(id)
|
||||||
|
var images = ribbon.children('.image')
|
||||||
|
var prev = null
|
||||||
|
for(var i=0; i < images.length; i++){
|
||||||
|
if(parseInt($(images[i]).attr('id')) > id){
|
||||||
|
return prev
|
||||||
|
}
|
||||||
|
prev = $(images[i])
|
||||||
|
}
|
||||||
|
return prev
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// generic binery search for element just before the id...
|
||||||
|
// NOTE: if id is in lst, this will return the element just before it.
|
||||||
|
// NOTE: lst must be sorted.
|
||||||
|
function binarySearch(id, lst, get){
|
||||||
|
if(get == null){
|
||||||
|
get = function(o){return o}
|
||||||
|
}
|
||||||
|
|
||||||
|
// empty list...
|
||||||
|
if(lst.length == 0){
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
// current section length
|
||||||
|
var l = Math.round((lst.length-1)/2)
|
||||||
|
// current position...
|
||||||
|
var i = l
|
||||||
|
|
||||||
|
while(true){
|
||||||
|
var i_id = get(lst[i])
|
||||||
|
// beginning of the array...
|
||||||
|
if(i == 0){
|
||||||
|
if(id > i_id){
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
// we got a hit...
|
||||||
|
if(i_id == id){
|
||||||
|
return i-1
|
||||||
|
}
|
||||||
|
// we are at the end...
|
||||||
|
if(i == lst.length-1 && id > i_id){
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
var ii_id = get(lst[i+1])
|
||||||
|
// test if id is between i and i+1...
|
||||||
|
if( i_id < id && id < ii_id ){
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
// prepare for next iteration...
|
||||||
|
// NOTE: we saturate the values so we will never get out of bounds.
|
||||||
|
l = Math.round(l/2)
|
||||||
|
if(id < i_id){
|
||||||
|
// lower half...
|
||||||
|
i = Math.max(0, i-l)
|
||||||
|
} else {
|
||||||
|
// upper half...
|
||||||
|
i = Math.min(i+l, lst.length-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// wrapper around binarySearch.
|
||||||
|
// this is here to make binarySearch simpler to test and debug...
|
||||||
|
function getImageBefore_bin(id, ribbon){
|
||||||
|
var images = ribbon.children('.image')
|
||||||
|
var i = binarySearch(
|
||||||
|
parseInt(id),
|
||||||
|
images,
|
||||||
|
function(o){return parseInt($(o).attr('id'))})
|
||||||
|
if(i == null){
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return $(images[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the default search...
|
||||||
|
var getImageBefore = getImageBefore_bin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************** Setup Functions **/
|
/************************************************** Setup Functions **/
|
||||||
// XXX is this a correct place for these?
|
// XXX is this a correct place for these?
|
||||||
|
|
||||||
@ -107,6 +262,7 @@ function setupControlElements(){
|
|||||||
// buttons...
|
// buttons...
|
||||||
$('.screen-button.next-image').click(nextImage)
|
$('.screen-button.next-image').click(nextImage)
|
||||||
$('.screen-button.prev-image').click(prevImage)
|
$('.screen-button.prev-image').click(prevImage)
|
||||||
|
// XXX rename classes to "shift-image-up" and "shift-image-down"...
|
||||||
$('.screen-button.demote').click(shiftImageUp)
|
$('.screen-button.demote').click(shiftImageUp)
|
||||||
$('.screen-button.promote').click(shiftImageDown)
|
$('.screen-button.promote').click(shiftImageDown)
|
||||||
|
|
||||||
@ -253,6 +409,7 @@ function handleKeys(event){
|
|||||||
|
|
||||||
: (fn(code, keys.toggleSingleImageMode) >= 0) ? toggleSingleImageMode()
|
: (fn(code, keys.toggleSingleImageMode) >= 0) ? toggleSingleImageMode()
|
||||||
: (fn(code, keys.toggleSingleImageModeTransitions) >= 0) ? toggleSingleImageModeTransitions()
|
: (fn(code, keys.toggleSingleImageModeTransitions) >= 0) ? toggleSingleImageModeTransitions()
|
||||||
|
: (fn(code, keys.toggleTransitions) >= 0) ? toggleTransitions()
|
||||||
|
|
||||||
: (fn(code, keys.toggleBackgroundModes) >= 0) ? toggleBackgroundModes()
|
: (fn(code, keys.toggleBackgroundModes) >= 0) ? toggleBackgroundModes()
|
||||||
: (fn(code, keys.toggleControls) >= 0) ? toggleControls()
|
: (fn(code, keys.toggleControls) >= 0) ? toggleControls()
|
||||||
@ -273,23 +430,6 @@ function handleKeys(event){
|
|||||||
|
|
||||||
/************************************************************ Modes **/
|
/************************************************************ Modes **/
|
||||||
|
|
||||||
// mode switchers...
|
|
||||||
function unsetViewerMode(mode){
|
|
||||||
$('.' + mode)
|
|
||||||
.removeClass(mode)
|
|
||||||
clickAfterTransitionsDone()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function setViewerMode(mode){
|
|
||||||
$('.viewer').not('.' + mode)
|
|
||||||
.addClass(mode)
|
|
||||||
clickAfterTransitionsDone()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ribbon/single view modes...
|
// ribbon/single view modes...
|
||||||
// global: stores the scale before we went into single image mode...
|
// global: stores the scale before we went into single image mode...
|
||||||
// XXX HACK
|
// XXX HACK
|
||||||
@ -303,48 +443,38 @@ var ORIGINAL_FIELD_SCALE = 1
|
|||||||
var NORMAL_MODE_BG = null
|
var NORMAL_MODE_BG = null
|
||||||
var SINGLE_IMAGE_MODE_BG = BACKGROUND_MODES[BACKGROUND_MODES.length-1]
|
var SINGLE_IMAGE_MODE_BG = BACKGROUND_MODES[BACKGROUND_MODES.length-1]
|
||||||
|
|
||||||
|
var toggleSingleImageMode = createCSSClassToggler('.viewer', 'single-image-mode',
|
||||||
function toggleSingleImageMode(){
|
// pre...
|
||||||
// go to normal mode...
|
function(action){
|
||||||
if($('.single-image-mode').length > 0){
|
if(action == 'on'){
|
||||||
SINGLE_IMAGE_MODE_BG = getBackgroundMode()
|
NORMAL_MODE_BG = getBackgroundMode()
|
||||||
unsetViewerMode('single-image-mode')
|
ORIGINAL_FIELD_SCALE = getElementScale($('.field'))
|
||||||
setContainerScale(ORIGINAL_FIELD_SCALE)
|
} else {
|
||||||
setBackgroundMode(NORMAL_MODE_BG)
|
SINGLE_IMAGE_MODE_BG = getBackgroundMode()
|
||||||
// go to single image mode...
|
}
|
||||||
} else {
|
},
|
||||||
NORMAL_MODE_BG = getBackgroundMode()
|
// post...
|
||||||
setViewerMode('single-image-mode')
|
function(action){
|
||||||
ORIGINAL_FIELD_SCALE = getElementScale($('.field'))
|
if(action == 'on'){
|
||||||
fitImage()
|
fitImage()
|
||||||
setBackgroundMode(SINGLE_IMAGE_MODE_BG)
|
setBackgroundMode(SINGLE_IMAGE_MODE_BG)
|
||||||
}
|
} else {
|
||||||
}
|
setContainerScale(ORIGINAL_FIELD_SCALE)
|
||||||
|
setBackgroundMode(NORMAL_MODE_BG)
|
||||||
|
}
|
||||||
|
clickAfterTransitionsDone()
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
// wide view mode toggle...
|
// wide view mode toggle...
|
||||||
function toggleWideView(){
|
var toggleWideView = createCSSClassToggler('.viewer', 'wide-view-mode', function(action){
|
||||||
if($('.wide-view-mode').length > 0){
|
if(action == 'on'){
|
||||||
setContainerScale(ORIGINAL_FIELD_SCALE)
|
|
||||||
$('.viewer').removeClass('wide-view-mode')
|
|
||||||
} else {
|
|
||||||
ORIGINAL_FIELD_SCALE = getElementScale($('.field'))
|
ORIGINAL_FIELD_SCALE = getElementScale($('.field'))
|
||||||
setContainerScale(0.1)
|
setContainerScale(0.1)
|
||||||
$('.viewer').addClass('wide-view-mode')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function toggleSingleImageModeTransitions(){
|
|
||||||
if( $('.no-single-image-transitions').length > 0 ){
|
|
||||||
$('.no-single-image-transitions').removeClass('no-single-image-transitions')
|
|
||||||
} else {
|
} else {
|
||||||
$('.viewer').addClass('no-single-image-transitions')
|
setContainerScale(ORIGINAL_FIELD_SCALE)
|
||||||
}
|
}
|
||||||
}
|
}, function(){})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -404,26 +534,17 @@ function toggleBackgroundModes(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
function showControls(){
|
var toggleSingleImageModeTransitions = createCSSClassToggler('.viewer', 'no-single-image-transitions')
|
||||||
$('.hidden-controls').removeClass('hidden-controls')
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
var toggleControls = createCSSClassToggler('.viewer', 'hidden-controls')
|
||||||
function hideControls(){
|
var showControls = function(){toggleControls('on')}
|
||||||
$('.viewer').addClass('hidden-controls')
|
var hideControls = function(){toggleControls('off')}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
var toggleTransitions = createCSSClassToggler('.viewer', 'transitions-enabled')
|
||||||
function toggleControls(){
|
var enableTransitions = function(){toggleTransitions('on')}
|
||||||
if( $('.hidden-controls').length > 0 ){
|
var disableTransitions = function(){toggleTransitions('off')}
|
||||||
showControls()
|
|
||||||
} else {
|
|
||||||
hideControls()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -497,116 +618,6 @@ function focusBelowRibbon(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************** Helpers **/
|
|
||||||
|
|
||||||
function doWithoutTransitions(obj, func){
|
|
||||||
obj
|
|
||||||
.addClass('unanimated')
|
|
||||||
.one("webkitTransitionEnd oTransitionEnd msTransitionEnd transitionend", function(){
|
|
||||||
func()
|
|
||||||
$('.viewer')
|
|
||||||
.one("webkitTransitionEnd oTransitionEnd msTransitionEnd transitionend", function(){
|
|
||||||
obj.removeClass('unanimated')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// find an image object after which to position image ID...
|
|
||||||
// used for two main tasks:
|
|
||||||
// - positioning promoted/demoted images
|
|
||||||
// - centering ribbons
|
|
||||||
// returns:
|
|
||||||
// - null - empty ribbon or no element greater id should be first
|
|
||||||
// - element
|
|
||||||
// XXX do we need to make ids numbers for this to work?
|
|
||||||
function getImageBefore_lin(id, ribbon){
|
|
||||||
// walk the ribbon till we find two images one with an ID less and
|
|
||||||
// another greater that id...
|
|
||||||
id = parseInt(id)
|
|
||||||
var images = ribbon.children('.image')
|
|
||||||
var prev = null
|
|
||||||
for(var i=0; i < images.length; i++){
|
|
||||||
if(parseInt($(images[i]).attr('id')) > id){
|
|
||||||
return prev
|
|
||||||
}
|
|
||||||
prev = $(images[i])
|
|
||||||
}
|
|
||||||
return prev
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// generic binery search for element just before the id...
|
|
||||||
// NOTE: if id is in lst, this will return the element just before it.
|
|
||||||
// NOTE: lst must be sorted.
|
|
||||||
function binarySearch(id, lst, get){
|
|
||||||
if(get == null){
|
|
||||||
get = function(o){return o}
|
|
||||||
}
|
|
||||||
|
|
||||||
// empty list...
|
|
||||||
if(lst.length == 0){
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
// current section length
|
|
||||||
var l = Math.round((lst.length-1)/2)
|
|
||||||
// current position...
|
|
||||||
var i = l
|
|
||||||
|
|
||||||
while(true){
|
|
||||||
var i_id = get(lst[i])
|
|
||||||
// beginning of the array...
|
|
||||||
if(i == 0){
|
|
||||||
if(id > i_id){
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
// we got a hit...
|
|
||||||
if(i_id == id){
|
|
||||||
return i-1
|
|
||||||
}
|
|
||||||
// we are at the end...
|
|
||||||
if(i == lst.length-1 && id > i_id){
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
var ii_id = get(lst[i+1])
|
|
||||||
// test if id is between i and i+1...
|
|
||||||
if( i_id < id && id < ii_id ){
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
// prepare for next iteration...
|
|
||||||
// NOTE: we saturate the values so we will never get out of bounds.
|
|
||||||
l = Math.round(l/2)
|
|
||||||
if(id < i_id){
|
|
||||||
// lower half...
|
|
||||||
i = Math.max(0, i-l)
|
|
||||||
} else {
|
|
||||||
// upper half...
|
|
||||||
i = Math.min(i+l, lst.length-1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// wrapper around binarySearch.
|
|
||||||
// this is here to make binarySearch simpler to test and debug...
|
|
||||||
function getImageBefore_bin(id, ribbon){
|
|
||||||
var images = ribbon.children('.image')
|
|
||||||
var i = binarySearch(
|
|
||||||
parseInt(id),
|
|
||||||
images,
|
|
||||||
function(o){return parseInt($(o).attr('id'))})
|
|
||||||
if(i == null){
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
return $(images[i])
|
|
||||||
}
|
|
||||||
|
|
||||||
// set the default search...
|
|
||||||
var getImageBefore = getImageBefore_bin
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************** Actions **/
|
/********************************************************** Actions **/
|
||||||
// basic actions...
|
// basic actions...
|
||||||
// NOTE: below 'direction' argument is meant in the html sence,
|
// NOTE: below 'direction' argument is meant in the html sence,
|
||||||
@ -670,7 +681,6 @@ function mergeRibbons(direction){
|
|||||||
.insertAfter(prev_elem)
|
.insertAfter(prev_elem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// animate...
|
// animate...
|
||||||
$('.current.ribbon')[direction]('.ribbon')
|
$('.current.ribbon')[direction]('.ribbon')
|
||||||
.slideUp(function(){
|
.slideUp(function(){
|
||||||
|
|||||||
@ -13,12 +13,12 @@
|
|||||||
z-index: 9000;
|
z-index: 9000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.loading * {
|
.loading * {
|
||||||
color: gray;
|
color: gray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.image {
|
.image {
|
||||||
float: left;
|
float: left;
|
||||||
|
|
||||||
|
|||||||
@ -47,6 +47,7 @@ function setup(){
|
|||||||
|
|
||||||
// XXX
|
// XXX
|
||||||
setBackgroundMode('dark')
|
setBackgroundMode('dark')
|
||||||
|
enableTransitions()
|
||||||
|
|
||||||
// setup event handlers...
|
// setup event handlers...
|
||||||
setupEvents()
|
setupEvents()
|
||||||
|
|||||||
@ -1,11 +1,3 @@
|
|||||||
.animated {
|
|
||||||
-webkit-transition: all 0.2s ease;
|
|
||||||
-moz-transition: all 0.2s ease;
|
|
||||||
-o-transition: all 0.2s ease;
|
|
||||||
-ms-transition: all 0.2s ease;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unanimated {
|
.unanimated {
|
||||||
-webkit-transition: none;
|
-webkit-transition: none;
|
||||||
-moz-transition: none;
|
-moz-transition: none;
|
||||||
@ -14,74 +6,19 @@
|
|||||||
transition: none;
|
transition: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image {
|
.animated,
|
||||||
-webkit-transition: all 0.2s ease;
|
/* mostly to animate the background... */
|
||||||
-moz-transition: all 0.2s ease;
|
.transitions-enabled.viewer,
|
||||||
-o-transition: all 0.2s ease;
|
/* now the normal stuff */
|
||||||
-ms-transition: all 0.2s ease;
|
.transitions-enabled .image,
|
||||||
transition: all 0.2s ease;
|
.transitions-enabled .demo-buttons,
|
||||||
}
|
.transitions-enabled .controller,
|
||||||
|
.transitions-enabled .controller-mini,
|
||||||
.demo-buttons {
|
.transitions-enabled .container,
|
||||||
-webkit-transition: all 0.2s ease;
|
.transitions-enabled .field,
|
||||||
-moz-transition: all 0.2s ease;
|
.transitions-enabled .ribbon,
|
||||||
-o-transition: all 0.2s ease;
|
.transitions-enabled .new-ribbon,
|
||||||
-ms-transition: all 0.2s ease;
|
.transitions-enabled .current.ribbon {
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewer {
|
|
||||||
/* mostly to animate the background... */
|
|
||||||
-webkit-transition: all 0.2s ease;
|
|
||||||
-moz-transition: all 0.2s ease;
|
|
||||||
-o-transition: all 0.2s ease;
|
|
||||||
-ms-transition: all 0.2s ease;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.controller, .controller-mini {
|
|
||||||
-webkit-transition: all 0.2s ease;
|
|
||||||
-moz-transition: all 0.2s ease;
|
|
||||||
-o-transition: all 0.2s ease;
|
|
||||||
-ms-transition: all 0.2s ease;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
-webkit-transition: all 0.2s ease;
|
|
||||||
-moz-transition: all 0.2s ease;
|
|
||||||
-o-transition: all 0.2s ease;
|
|
||||||
-ms-transition: all 0.2s ease;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.field {
|
|
||||||
-webkit-transition: all 0.2s ease;
|
|
||||||
-moz-transition: all 0.2s ease;
|
|
||||||
-o-transition: all 0.2s ease;
|
|
||||||
-ms-transition: all 0.2s ease;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ribbon {
|
|
||||||
-webkit-transition: all 0.2s ease;
|
|
||||||
-moz-transition: all 0.2s ease;
|
|
||||||
-o-transition: all 0.2s ease;
|
|
||||||
-ms-transition: all 0.2s ease;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.new-ribbon {
|
|
||||||
-webkit-transition: all 0.2s ease;
|
|
||||||
-moz-transition: all 0.2s ease;
|
|
||||||
-o-transition: all 0.2s ease;
|
|
||||||
-ms-transition: all 0.2s ease;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.current.ribbon {
|
|
||||||
-webkit-transition: all 0.2s ease;
|
-webkit-transition: all 0.2s ease;
|
||||||
-moz-transition: all 0.2s ease;
|
-moz-transition: all 0.2s ease;
|
||||||
-o-transition: all 0.2s ease;
|
-o-transition: all 0.2s ease;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user