I'm want to use fancybox
package in my Angular 2 app. I'm installed this package using npm
and attentively has read documentation. But fancybox
doesn't work. At first I'm thought that problem is href's such as http://localhost8000/media...
So i decided for testing use simple images from fancybox package. But it's also not working it just opens image in next tab with url of image.
index.html:
<html>
<head>
<base href="/">
<title>PhotoHub</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{% load staticfiles %}
<link rel="stylesheet" href="{% static "node_modules/bootstrap/dist/css/bootstrap.min.css" %}">
<link href="{% static "bower_components/font-awesome/css/font-awesome.min.css" %}" rel="stylesheet" />
<link href="{% static "bower_components/alertify.js/themes/alertify.core.css" %}" rel="stylesheet" />
<link href="{% static "bower_components/alertify.js/themes/alertify.bootstrap.css" %}" rel="stylesheet" />
<link href="{% static "node_modules/fancybox/dist/css/jquery.fancybox.css" %}" type="text/css" media="screen"/>
<link rel="stylesheet" href="{% static "styles.css" %}">
<script src="{% static "bower_components/jquery/dist/jquery.min.js" %}"></script>
<script src="{% static "node_modules/bootstrap/dist/js/bootstrap.min.js" %}"></script>
<script src="{% static "bower_components/alertify.js/lib/alertify.min.js" %}"></script>
<script src="{% static "node_modules/fancybox/dist/js/jquery.fancybox.pack.js" %}"></script>
<!-- 1. Load libraries -->
<!-- Polyfill(s) for older browsers -->
<script src="{% static "node_modules/core-js/client/shim.min.js" %}"></script>
<script src="{% static "node_modules/zone.js/dist/zone.js" %}"></script>
<script src="{% static "node_modules/reflect-metadata/Reflect.js" %}"></script>
<script src="{% static "node_modules/systemjs/dist/system.src.js" %}"></script>
<!-- 2. Configure SystemJS -->
<script src="{% static "systemjs.config.js" %}"></script>
<script>
System.import('app').catch(function(err){ console.error(err); });
$(document).ready(function() {
$(".fancybox").fancybox({type: "image"});
console.log('fancybox image')
});
</script>
</head>
<!-- 3. Display the application -->
<body>
<photohub></photohub>
</body>
</html>
My attempts with fancybox:
<a data-fancybox-type="image" class="fancybox" rel="group" href="static\node_modules\fancybox\demo\1_b.jpg"><img src="static\node_modules\fancybox\demo\1_b.jpg" alt="" /></a>
This is how i did it :
1 - in my index.html :
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.css">
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.pack.js"></script>
2- in my component :
...other imports
declare var jQuery: any
@Component({...})
export class Component implements AfterViewInit, OnDestroy {
ngAfterViewInit() {
jQuery(document).ready(function(){ //Photos Gallery
jQuery(".fancybox").fancybox({
openEffect: "elastic",
closeEffect: "none"
});
});
}
ngOnDestroy() {
jQuery(".fancybox").unbind('click.fb');
// or maybe jQuery(".fancybox").off() to remove all bindings
}
}
3 - in my component.html :
<a class="thumbnail fancybox slide" rel="ligthbox" href="{{photo.photoURL}}">
<img class="img-responsive" alt="" src="{{photo.photoURL}}"/>
</a>