LightboxGallery und Pfeile und Esc
Hallo liebe Gemeinde,
auf meiner Homepage möchte ich eine photo-gallery mittels light Box einbinden.
Dazu habe ich folgendes JS - schnipsel gefunden:
Quelle: https://codepen.io/sidtheangel/pen/ONRKZa
Das hat so weit auch ganz gut funktioniert.
Weiters würde ich gerne noch 2 Funktionen hinzufügen.
1: der User soll sich mit dem Cursor - tasten (links & rechts) durch die Bilder „klicken“ können.
2: mit der ESC - tasten soll die light Box geschlossen werden. (so, als würde man auf das X klicken..)
da ich allerdings keine Ahnung von JS habe und mal schwer vermute, irgendetwas im *.js file dafür verändern/hinzufügen zu müssen, wollte ich mich an euch wenden.
danke schonmal für eure antworten!
liebste grütze & ein fröhliches neues jahr wünschend,
medhusa
Der hier verwendete Code
<ul>
<li><a href="/image/10_big.jpg" data-imagelightbox="c"><img src="/image/10.jpg" alt="Countryside somewhere in Lithuania" /></a></li>
<li><a href="/image/11_big.jpg" data-imagelightbox="c"><img src="/image/11.jpg" alt="Storm in Klaipeda" /></a></li>
<li><a href="/image/12_big.jpg" data-imagelightbox="c"><img src="/image/12.jpg" alt="Sunset over Plateliai lake" /></a></li>
</ul>
<style>
html
{
/* killing 300ms touch delay in IE */
-ms-touch-action: manipulation;
touch-action: manipulation;
}
body
{
font-family: 'Fjalla One', sans-serif;
color: #333;
background-color: #efefef;
}
.is-hidden
{
display: none;
}
.btn
{
text-transform: uppercase;
color: #efefef;
background-color: #333;
padding: 0.313em 0.625em; /* 5 10 */
}
.btn:hover,
.btn:focus { background-color: #c00; }
.btn:active { background-color: #a00; }
#container
{
width: 41.25em; /* 660 */
text-align: center;
padding: 0 1.25em; /* 20 */
margin: 3.125em auto 6.25em; /* 50 100 */
}
#container h1
{
font-size: 2.125em; /* 34 */
line-height: 0.882em; /* 30 (34) */
text-transform: uppercase;
}
#container h1 span
{
font-size: 0.588em; /* 20 (34) */
line-height: 1em; /* 20 (20) */
color: #aaa;
display: block;
}
#container h1 a:hover span,
#container h1 a:focus span { color: #333; }
#container h2
{
border-top: 1px solid #ddd;
padding-top: 1.875em; /* 30 */
margin-top: 1.875em; /* 30 */
margin-bottom: 0.625em; /* 10 */
}
#container h2 span
{
color: #666;
}
#container h2[data-caption]:before
{
font-size: 0.875rem;
font-weight: 300;
color: #fff;
background-color: #c00;
display: inline-block;
content: attr( data-caption );
padding: 0.125rem 0.313rem; /* 2 5 */
margin-right: 0.625rem; /* 10 */
-webkit-transform: rotate( -8deg );
-ms-transform: rotate( -8deg );
transform: rotate( -8deg );
}
#container ul
{
}
#container li
{
display: inline-block;
margin: 0.625em; /* 10 */
}
#container img
{
width: 8.75em; /* 140 */
height: 8.75em; /* 140 */
border-color: #eee;
border: 0.625em solid rgba( 255, 255, 255, .5 ); /* 10 */
-webkit-box-shadow: 0 0 0.313em rgba( 0, 0, 0, .05 ); /* 5 */
box-shadow: 0 0 0.313em rgba( 0, 0, 0, .05 ); /* 5 */
-webkit-transition: -webkit-box-shadow .3s ease, border-color .3s ease;
transition: box-shadow .3s ease, border-color .3s ease;
}
#container img:hover,
#container img:focus
{
border-color: #fff;
-webkit-box-shadow: 0 0 0.938em rgba( 0, 0, 0, .25 ); /* 15 */
box-shadow: 0 0 0.938em rgba( 0, 0, 0, .25 ); /* 15 */
}
footer
{
font-size: 0.875em; /* 14 */
color: #aaa;
border-top: 1px solid #ddd;
padding-top: 2.143em; /* 30 (14) */
margin-top: 2.143em; /* 30 (14) */
}
footer a { color: #666; }
footer a:hover,
footer a:focus { color: #333; }
#imagelightbox{
cursor: pointer;
position: fixed;
z-index: 10000;
touch-action: none;
box-shadow: 0 0 3.125em rgba( 0, 0, 0, .75 ); /* 50 */
}
#imagelightbox-loading,
#imagelightbox-loading div
{
border-radius: 50%;
}
#imagelightbox-loading
{
width: 2.5em; /* 40 */
height: 2.5em; /* 40 */
background-color: #444;
background-color: rgba( 0, 0, 0, .5 );
position: fixed;
z-index: 10003;
top: 50%;
left: 50%;
padding: 0.625em; /* 10 */
margin: -1.25em 0 0 -1.25em; /* 20 */
-webkit-box-shadow: 0 0 2.5em rgba( 0, 0, 0, .75 ); /* 40 */
box-shadow: 0 0 2.5em rgba( 0, 0, 0, .75 ); /* 40 */
}
#imagelightbox-loading div
{
width: 1.25em; /* 20 */
height: 1.25em; /* 20 */
background-color: #fff;
-webkit-animation: imagelightbox-loading .5s ease infinite;
animation: imagelightbox-loading .5s ease infinite;
}
@-webkit-keyframes imagelightbox-loading
{
from { opacity: .5; -webkit-transform: scale( .75 ); }
50% { opacity: 1; -webkit-transform: scale( 1 ); }
to { opacity: .5; -webkit-transform: scale( .75 ); }
}
@keyframes imagelightbox-loading
{
from { opacity: .5; transform: scale( .75 ); }
50% { opacity: 1; transform: scale( 1 ); }
to { opacity: .5; transform: scale( .75 ); }
}
/* OVERLAY */
#imagelightbox-overlay
{
background-color: #fff;
background-color: rgba( 255, 255, 255, .9 );
position: fixed;
z-index: 9998;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
/* "CLOSE" BUTTON */
#imagelightbox-close
{
width: 2.5em; /* 40 */
height: 2.5em; /* 40 */
text-align: left;
background-color: #666;
border-radius: 50%;
position: fixed;
z-index: 10002;
top: 2.5em; /* 40 */
right: 2.5em; /* 40 */
-webkit-transition: color .3s ease;
transition: color .3s ease;
}
#imagelightbox-close:hover,
#imagelightbox-close:focus { background-color: #111; }
#imagelightbox-close:before,
#imagelightbox-close:after
{
width: 2px;
background-color: #fff;
content: '';
position: absolute;
top: 20%;
bottom: 20%;
left: 50%;
margin-left: -1px;
}
#imagelightbox-close:before
{
-webkit-transform: rotate( 45deg );
-ms-transform: rotate( 45deg );
transform: rotate( 45deg );
}
#imagelightbox-close:after
{
-webkit-transform: rotate( -45deg );
-ms-transform: rotate( -45deg );
transform: rotate( -45deg );
}
/* CAPTION */
#imagelightbox-caption
{
text-align: center;
color: #fff;
background-color: #666;
position: fixed;
z-index: 10001;
left: 0;
right: 0;
bottom: 0;
padding: 0.625em; /* 10 */
}
/* NAVIGATION */
#imagelightbox-nav
{
background-color: #444;
background-color: rgba( 0, 0, 0, .5 );
border-radius: 20px;
position: fixed;
z-index: 10001;
left: 50%;
bottom: 3.75em; /* 60 */
padding: 0.313em; /* 5 */
-webkit-transform: translateX( -50% );
-ms-transform: translateX( -50% );
transform: translateX( -50% );
}
#imagelightbox-nav button
{
width: 1em; /* 20 */
height: 1em; /* 20 */
background-color: transparent;
border: 1px solid #fff;
border-radius: 50%;
display: inline-block;
margin: 0 0.313em; /* 5 */
}
#imagelightbox-nav button.active
{
background-color: #fff;
}
/* ARROWS */
.imagelightbox-arrow
{
width: 3.75em; /* 60 */
height: 7.5em; /* 120 */
background-color: #444;
background-color: rgba( 0, 0, 0, .5 );
vertical-align: middle;
display: none;
position: fixed;
z-index: 10001;
top: 50%;
margin-top: -3.75em; /* 60 */
}
.imagelightbox-arrow:hover,
.imagelightbox-arrow:focus { background-color: rgba( 0, 0, 0, .75 ); }
.imagelightbox-arrow:active { background-color: #111; }
.imagelightbox-arrow-left { left: 2.5em; /* 40 */ }
.imagelightbox-arrow-right { right: 2.5em; /* 40 */ }
.imagelightbox-arrow:before
{
width: 0;
height: 0;
border: 1em solid transparent;
content: '';
display: inline-block;
margin-bottom: -0.125em; /* 2 */
}
.imagelightbox-arrow-left:before
{
border-left: none;
border-right-color: #fff;
margin-left: -0.313em; /* 5 */
}
.imagelightbox-arrow-right:before
{
border-right: none;
border-left-color: #fff;
margin-right: -0.313em; /* 5 */
}
#imagelightbox-loading,
#imagelightbox-overlay,
#imagelightbox-close,
#imagelightbox-caption,
#imagelightbox-nav,
.imagelightbox-arrow
{
-webkit-animation: fade-in .25s linear;
animation: fade-in .25s linear;
}
@-webkit-keyframes fade-in
{
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fade-in
{
from { opacity: 0; }
to { opacity: 1; }
}
@media only screen and (max-width: 41.250em) /* 660 */
{
#container
{
width: 100%;
}
#imagelightbox-close
{
top: 1.25em; /* 20 */
right: 1.25em; /* 20 */
}
#imagelightbox-nav
{
bottom: 1.25em; /* 20 */
}
.imagelightbox-arrow
{
width: 2.5em; /* 40 */
height: 3.75em; /* 60 */
margin-top: -2.75em; /* 30 */
}
.imagelightbox-arrow-left { left: 1.25em; /* 20 */ }
.imagelightbox-arrow-right { right: 1.25em; /* 20 */ }
}
@media only screen and (max-width: 20em) /* 320 */
{
.imagelightbox-arrow-left { left: 0; }
.imagelightbox-arrow-right { right: 0; }
}
</style>
<script src="/js_webseite/jquery.js"></script>
<script src="/js_webseite/imagelightbox.min.js"> </script>
<script>
$( function()
{
var
// ACTIVITY INDICATOR
activityIndicatorOn = function()
{
$( '<div id="imagelightbox-loading"><div></div></div>' ).appendTo( 'body' );
},
activityIndicatorOff = function()
{
$( '#imagelightbox-loading' ).remove();
},
// OVERLAY
overlayOn = function()
{
$( '<div id="imagelightbox-overlay"></div>' ).appendTo( 'body' );
},
overlayOff = function()
{
$( '#imagelightbox-overlay' ).remove();
},
// CLOSE BUTTON
closeButtonOn = function( instance )
{
$( '<button type="button" id="imagelightbox-close" title="Close"></button>' ).appendTo( 'body' ).on( 'click touchend', function(){ $( this ).remove(); instance.quitImageLightbox(); return false; });
},
closeButtonOff = function()
{
$( '#imagelightbox-close' ).remove();
},
// CAPTION
captionOn = function()
{
var description = $( 'a[href="' + $( '#imagelightbox' ).attr( 'src' ) + '"] img' ).attr( 'alt' );
if( description.length > 0 )
$( '<div id="imagelightbox-caption">' + description + '</div>' ).appendTo( 'body' );
},
captionOff = function()
{
$( '#imagelightbox-caption' ).remove();
},
// NAVIGATION
navigationOn = function( instance, selector )
{
var images = $( selector );
if( images.length )
{
var nav = $( '<div id="imagelightbox-nav"></div>' );
for( var i = 0; i < images.length; i++ )
nav.append( '<button type="button"></button>' );
nav.appendTo( 'body' );
nav.on( 'click touchend', function(){ return false; });
var navItems = nav.find( 'button' );
navItems.on( 'click touchend', function()
{
var $this = $( this );
if( images.eq( $this.index() ).attr( 'href' ) != $( '#imagelightbox' ).attr( 'src' ) )
instance.switchImageLightbox( $this.index() );
navItems.removeClass( 'active' );
navItems.eq( $this.index() ).addClass( 'active' );
return false;
})
.on( 'touchend', function(){ return false; });
}
},
navigationUpdate = function( selector )
{
var items = $( '#imagelightbox-nav button' );
items.removeClass( 'active' );
items.eq( $( selector ).filter( '[href="' + $( '#imagelightbox' ).attr( 'src' ) + '"]' ).index( selector ) ).addClass( 'active' );
},
navigationOff = function()
{
$( '#imagelightbox-nav' ).remove();
},
// ARROWS
arrowsOn = function( instance, selector )
{
var $arrows = $( '<button type="button" class="imagelightbox-arrow imagelightbox-arrow-left"></button><button type="button" class="imagelightbox-arrow imagelightbox-arrow-right"></button>' );
$arrows.appendTo( 'body' );
$arrows.on( 'click touchend', function( e )
{
e.preventDefault();
var $this = $( this ),
$target = $( selector + '[href="' + $( '#imagelightbox' ).attr( 'src' ) + '"]' ),
index = $target.index( selector );
if( $this.hasClass( 'imagelightbox-arrow-left' ) )
{
index = index - 1;
if( !$( selector ).eq( index ).length )
index = $( selector ).length;
}
else
{
index = index + 1;
if( !$( selector ).eq( index ).length )
index = 0;
}
instance.switchImageLightbox( index );
return false;
});
},
arrowsOff = function()
{
$( '.imagelightbox-arrow' ).remove();
};
// WITH ACTIVITY INDICATION
// WITH "CLOSE" BUTTON & ACTIVITY INDICATION
var instanceC = $( 'a[data-imagelightbox="c"]' ).imageLightbox(
{
quitOnDocClick: false,
onStart: function() { closeButtonOn( instanceC ); },
onEnd: function() { closeButtonOff(); activityIndicatorOff(); },
onLoadStart: function() { activityIndicatorOn(); },
onLoadEnd: function() { activityIndicatorOff(); }
});
$( '.js--add-dynamic ' ).on( 'click', function( e )
{
e.preventDefault();
var items = $( '.js--dynamic-items' );
instanceH.addToImageLightbox( items.find( 'a' ) );
$( '.js--dynamic-place' ).append( items.find( 'li' ).detach() );
$( this ).remove();
items.remove();
});
});
</script>