mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-30 02:40:08 +00:00
re-did image/ribbon structure to prevent filters affecting anything but the image (still not done for marks)...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
450631f1a9
commit
d6168e60a5
@ -32,6 +32,29 @@
|
|||||||
border: solid red 5px;
|
border: solid red 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ribbon {
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
height: auto;
|
||||||
|
min-width: 0px;
|
||||||
|
overflow: visible;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-size: 0;
|
||||||
|
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.ribbon:empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.ribbon:first-child {
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
.ribbon:last-child {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
@ -78,11 +101,15 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="image" style="background-image: url(image.jpg)"></div>
|
The current structure...
|
||||||
<div class="current image" style="background-image: url(image.jpg)"></div>
|
<div>
|
||||||
|
<div class="image" style="background-image: url(image.jpg)"></div>
|
||||||
|
<div class="current image" style="background-image: url(image.jpg)"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
Image bg transparent while the ribbon's bg is black...<br>
|
||||||
<div class="ribbon">
|
<div class="ribbon">
|
||||||
<div class="image2" style="background-image: url(image.jpg)"></div>
|
<div class="image2" style="background-image: url(image.jpg)"></div>
|
||||||
<div class="current image2" style="background-image: url(image.jpg)"></div>
|
<div class="current image2" style="background-image: url(image.jpg)"></div>
|
||||||
|
|||||||
@ -193,6 +193,7 @@ $(function(){
|
|||||||
updateImages()
|
updateImages()
|
||||||
|
|
||||||
SCROLLER.start()
|
SCROLLER.start()
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
17
ui/info.js
17
ui/info.js
@ -105,9 +105,10 @@ function updateGlobalImageInfo(image){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function updateInlineImageInfo(image){
|
function updateInlineImageInfo(image, target){
|
||||||
image = image == null ? getImage() : $(image)
|
image = image == null ? getImage() : $(image)
|
||||||
image = image.length == 0 ? getImage() : image
|
image = image.length == 0 ? getImage() : image
|
||||||
|
target = target == null ? image : target
|
||||||
|
|
||||||
var elem = $('.inline-image-info')
|
var elem = $('.inline-image-info')
|
||||||
if(elem.length == 0){
|
if(elem.length == 0){
|
||||||
@ -139,15 +140,21 @@ function updateInlineImageInfo(image){
|
|||||||
'<span class="hidden"><b>' + date.toString() + '</b></span>'+
|
'<span class="hidden"><b>' + date.toString() + '</b></span>'+
|
||||||
'</span>'+
|
'</span>'+
|
||||||
'',
|
'',
|
||||||
image)
|
target)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function inlineImageInfoHoverHandler(evt){
|
function inlineImageInfoHoverHandler(evt){
|
||||||
var img = $(evt.target).closest('.image')
|
if($(evt.target).hasClass('current-marker')){
|
||||||
|
var img = getImage()
|
||||||
|
var target = $('.current-marker')
|
||||||
|
} else {
|
||||||
|
var img = $(evt.target).closest('.image')
|
||||||
|
var target = img
|
||||||
|
}
|
||||||
if(img.length > 0){
|
if(img.length > 0){
|
||||||
if(img.find('.inline-image-info:visible').length == 0){
|
if(target.find('.inline-image-info:visible').length == 0){
|
||||||
updateInlineImageInfo(img)
|
updateInlineImageInfo(img, target)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -242,13 +242,21 @@ button:hover {
|
|||||||
.ribbon {
|
.ribbon {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
|
/* XXX BUG: setting this will mess up new ribbon creation....
|
||||||
|
display: inline-block;*/
|
||||||
|
|
||||||
height: auto;
|
height: auto;
|
||||||
min-width: 0px;
|
min-width: 0px;
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
margin-top: 20px;
|
float: left;
|
||||||
margin-bottom: 20px;
|
clear: both;
|
||||||
|
/* XXX not still sure about this... */
|
||||||
|
|
||||||
|
background: black;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
.ribbon:empty {
|
.ribbon:empty {
|
||||||
display: none;
|
display: none;
|
||||||
@ -261,6 +269,7 @@ button:hover {
|
|||||||
}
|
}
|
||||||
/*********************************************************** Image ***/
|
/*********************************************************** Image ***/
|
||||||
.marker,
|
.marker,
|
||||||
|
.current-marker,
|
||||||
.image {
|
.image {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -273,18 +282,20 @@ button:hover {
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
color: white;
|
color: white;
|
||||||
text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
|
text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
|
||||||
background: no-repeat 50% #000000;
|
background: no-repeat 50% transparent;
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
/* XXX do we need this? */
|
border: solid 5px transparent;
|
||||||
|
|
||||||
border: solid black 5px;
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
.current.image {
|
.current.image {
|
||||||
background: no-repeat 50% #000000;
|
border: solid 5px red;
|
||||||
background-size: contain;
|
}
|
||||||
/* XXX remove this... */
|
*/
|
||||||
|
.current-marker {
|
||||||
border: solid red 5px;
|
position: absolute;
|
||||||
|
border: solid 5px red;
|
||||||
|
background: none;
|
||||||
|
z-index: 100;
|
||||||
}
|
}
|
||||||
.marker {
|
.marker {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
@ -583,29 +594,33 @@ button:hover {
|
|||||||
opacity: 0.3;
|
opacity: 0.3;
|
||||||
}
|
}
|
||||||
/****************************************************** Image info ***/
|
/****************************************************** Image info ***/
|
||||||
.image .inline-image-info {
|
.inline-image-info {
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0px;
|
bottom: 0px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: black;
|
background: black;
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.image .inline-image-info:hover {
|
.inline-image-info:hover {
|
||||||
-moz-user-select: auto;
|
-moz-user-select: auto;
|
||||||
-webkit-user-select: auto;
|
-webkit-user-select: auto;
|
||||||
-o-user-select: auto;
|
-o-user-select: auto;
|
||||||
-ms-user-select: auto;
|
-ms-user-select: auto;
|
||||||
user-select: auto;
|
user-select: auto;
|
||||||
}
|
}
|
||||||
.image .inline-image-info::selection {
|
.inline-image-info::selection {
|
||||||
color: white;
|
color: white;
|
||||||
background: red;
|
background: red;
|
||||||
}
|
}
|
||||||
.image-info-visible.viewer .global-image-info,
|
.image-info-visible.viewer .global-image-info,
|
||||||
|
.image-info-visible.viewer .current-marker:hover .inline-image-info,
|
||||||
.image-info-visible.viewer .image:hover .inline-image-info {
|
.image-info-visible.viewer .image:hover .inline-image-info {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
.single-image-mode.viewer .current-marker:hover .inline-image-info,
|
||||||
.single-image-mode.viewer .image:hover .inline-image-info {
|
.single-image-mode.viewer .image:hover .inline-image-info {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@ -1053,6 +1068,12 @@ button:hover {
|
|||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
/********************************************** Mode: single image ***/
|
/********************************************** Mode: single image ***/
|
||||||
|
.single-image-mode.viewer .ribbon {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.single-image-mode.viewer .current-marker {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.single-image-mode.viewer .image {
|
.single-image-mode.viewer .image {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
/* NOTE: need to keep a distance from screen borders... */
|
/* NOTE: need to keep a distance from screen borders... */
|
||||||
|
|||||||
@ -343,14 +343,22 @@ button:hover {
|
|||||||
.ribbon {
|
.ribbon {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
|
/* XXX BUG: setting this will mess up new ribbon creation....
|
||||||
|
display: inline-block;*/
|
||||||
height: auto;
|
height: auto;
|
||||||
min-width: 0px;
|
min-width: 0px;
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
|
|
||||||
margin-top: 20px;
|
float: left;
|
||||||
margin-bottom: 20px;
|
clear: both;
|
||||||
|
|
||||||
|
/* XXX not still sure about this... */
|
||||||
|
background: black;
|
||||||
|
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
.ribbon:empty {
|
.ribbon:empty {
|
||||||
display: none;
|
display: none;
|
||||||
@ -366,6 +374,7 @@ button:hover {
|
|||||||
|
|
||||||
/*********************************************************** Image ***/
|
/*********************************************************** Image ***/
|
||||||
.marker,
|
.marker,
|
||||||
|
.current-marker,
|
||||||
.image {
|
.image {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -381,17 +390,21 @@ button:hover {
|
|||||||
|
|
||||||
text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
|
text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
|
||||||
|
|
||||||
background: no-repeat 50% black;
|
background: no-repeat 50% transparent;
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
/* XXX do we need this? */
|
border: solid 5px transparent;
|
||||||
border: solid black 5px;
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
.current.image {
|
.current.image {
|
||||||
background: no-repeat 50% black;
|
border: solid 5px red;
|
||||||
background-size: contain;
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/* XXX remove this... */
|
.current-marker {
|
||||||
border: solid red 5px;
|
position: absolute;
|
||||||
|
border: solid 5px red;
|
||||||
|
background: none;
|
||||||
|
z-index: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
.marker {
|
.marker {
|
||||||
@ -653,7 +666,7 @@ button:hover {
|
|||||||
|
|
||||||
|
|
||||||
/****************************************************** Image info ***/
|
/****************************************************** Image info ***/
|
||||||
.image .inline-image-info {
|
.inline-image-info {
|
||||||
display: none;
|
display: none;
|
||||||
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -661,18 +674,23 @@ button:hover {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
background: black;
|
background: black;
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
|
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.image .inline-image-info:hover {
|
.inline-image-info:hover {
|
||||||
.user-select(auto);
|
.user-select(auto);
|
||||||
}
|
}
|
||||||
.image .inline-image-info::selection {
|
.inline-image-info::selection {
|
||||||
color: white;
|
color: white;
|
||||||
background: red;
|
background: red;
|
||||||
}
|
}
|
||||||
.image-info-visible.viewer .global-image-info,
|
.image-info-visible.viewer .global-image-info,
|
||||||
|
.image-info-visible.viewer .current-marker:hover .inline-image-info,
|
||||||
.image-info-visible.viewer .image:hover .inline-image-info {
|
.image-info-visible.viewer .image:hover .inline-image-info {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
.single-image-mode.viewer .current-marker:hover .inline-image-info,
|
||||||
.single-image-mode.viewer .image:hover .inline-image-info {
|
.single-image-mode.viewer .image:hover .inline-image-info {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@ -1079,6 +1097,12 @@ button:hover {
|
|||||||
|
|
||||||
/********************************************** Mode: single image ***/
|
/********************************************** Mode: single image ***/
|
||||||
|
|
||||||
|
.single-image-mode.viewer .ribbon {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.single-image-mode.viewer .current-marker {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.single-image-mode.viewer .image {
|
.single-image-mode.viewer .image {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
/* NOTE: need to keep a distance from screen borders... */
|
/* NOTE: need to keep a distance from screen borders... */
|
||||||
|
|||||||
@ -74,6 +74,15 @@ function setupDataBindings(viewer){
|
|||||||
loadDirectoryDialog()
|
loadDirectoryDialog()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.on([
|
||||||
|
'focusingImage',
|
||||||
|
'fittingImages'
|
||||||
|
].join(' '),
|
||||||
|
function(){
|
||||||
|
updateCurrentMarker()
|
||||||
|
})
|
||||||
|
|
||||||
// XXX need to maintain the correct number of images per ribbon
|
// XXX need to maintain the correct number of images per ribbon
|
||||||
// per zoom setting -- things get really odd when a ribbon
|
// per zoom setting -- things get really odd when a ribbon
|
||||||
// is smaller than it should be...
|
// is smaller than it should be...
|
||||||
|
|||||||
28
ui/ui.js
28
ui/ui.js
@ -85,6 +85,34 @@ function showCursor(elem){
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
function showCurrentMarker(){
|
||||||
|
return $('<div/>')
|
||||||
|
.addClass('current-marker')
|
||||||
|
.css({
|
||||||
|
opacity: '0',
|
||||||
|
top: '0px',
|
||||||
|
left: '0px',
|
||||||
|
})
|
||||||
|
.appendTo($('.ribbon-set'))
|
||||||
|
.animate({
|
||||||
|
'opacity': 1
|
||||||
|
}, 500)
|
||||||
|
.mouseover(function(){
|
||||||
|
$('.current.image')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateCurrentMarker(){
|
||||||
|
var scale = getElementScale($('.ribbon-set'))
|
||||||
|
var marker = $('.current-marker')
|
||||||
|
marker = marker.length == 0 ? showCurrentMarker() : marker
|
||||||
|
var d = getRelativeVisualPosition(marker, $('.current.image'))
|
||||||
|
return marker.css({
|
||||||
|
top: parseFloat(marker.css('top')) + d.top/scale,
|
||||||
|
left: parseFloat(marker.css('left')) + d.left/scale,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function flashIndicator(direction){
|
function flashIndicator(direction){
|
||||||
var cls = {
|
var cls = {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user