Angular中封装fancyBox(图片预览)遇到问题小结


Posted in Javascript onSeptember 01, 2017

首先在官网下载最新版的fancyBox(一定要去最新网站,以前依赖的jquery版本偏低),附上链接:

http://fancyapps.com/fancybox/3/

然后在项目中引用jquery,然后在引用jquery.fancybox.min.css和jquery.fancybox.min.js。

如果需要动画和鼠标滚轮滚动效果还可以引入他提供的相关工具文件。

1.你可以通过链接.css和.js在你的html文件来安装fancyBox 。确保您也加载了jQuery库。以下是用作示例的基本HTML模板

<!DOCTYPE html><HTML>
<HEAD>
 <meta charset =“utf-8”>
 <title>我的页面</ title>
 <! - CSS - >
 <link rel =“stylesheet”type =“text / css”href =“jquery.fancybox.min.css”>
</ HEAD>
<BODY>
 <! - 您的HTML内容到这里 - >
 <! - JS - >
 <script src =“// code.jquery.com/jquery-3.2.1.min.js”> </ script>
 <script src =“jquery.fancybox.min.js”> </ script>
</ BODY>
</ HTML>

2.通过通过Bower或npm安装工具安装

# Bower
bower install fancybox --save
# NPM
npm install @fancyapps/fancybox --save

3.项目中通过外部引用,一般放在lib文件夹下(我采用的是这种方法)

在lib下新建一个文件目录fancy文件夹,然后引入下载好的.js和.css,在gulpfile.js添加自动化打包压缩任务,放在css目录中的lib.min.css和lib.min.js,在入口index.html中引入压缩后的文件。

以本fancyBox插件举例:

gulp.task('build-lib-js', ['build-clean-third-lib-js'], function () {
var thirdLibJs = gulp.src([

//外部引用js

'./lib/fancybox/jquery.fancybox.min.js',

])

.pipe(uglify())

.pipe(concat('lib.min.js', {newLine: '\r\n'}))

.pipe(gulp.dest('js'));

return merge.apply(null, thirdLibJs);

});
gulp.task('build-lib-css', ['build-clean-lib-css'], function () {
  var thirdLibCss = gulp.src([

 
 //外部引用css
    './lib/fancybox/jquery.fancybox.min.css'
  ])
    .pipe(concat('lib.min.css', {newLine: '\r\n'})) //放在哪个文件中
    .pipe(gulp.dest('css'));//打包输出目录(在哪个目录下)
  return merge.apply(null, thirdLibCss);
});

封装在angular自定义组件中

html模块:

<img-box img-url="'xxxxxx.png'" img-style="'width:740px;margin-left:-50px;'"></img-box>

directive.js模块:

var appModule = angular.module('app.core');
appModule.directive('imgBox',imgBox);
function imgBox() {
  return {
    restrict:'AE',
    transclude:true,
    scope:{
      imgUrl:"=",
      imgStyle:'='
    },
    template:'<a class="imageBox" href="{{imgUrl}}" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-fancybox><img style="{{imgStyle}}" src="{{imgUrl}}" th:src="${cdn.url('+"'{{imgUrl}}'"+')}" /></a>',
    link:function (scope,elem,attrs) {
      $(".imageBox").fancybox();
    },
  }
}

官方写法:

<a href="https://c1.staticflickr.com/9/8387/29155724700_a227577206_k.jpg" data-fancybox="images" data-width="2048" data-height="1365">

<img src="https://c1.staticflickr.com/9/8387/29155724700_58c1cb71cf_m.jpg" />

</a>

<a href="https://c1.staticflickr.com/9/8148/29324593462_abebaddc38_k.jpg" data-fancybox="images" data-width="2048" data-height="1366">


<img src="https://c1.staticflickr.com/9/8148/29324593462_f890687b7a_m.jpg" />

</a>

<a href="https://c1.staticflickr.com/9/8487/28808645394_a0ff0fc5c1_k.jpg" data-fancybox="images" data-width="2048" data-height="1365">


<img src="https://c1.staticflickr.com/9/8487/28808645394_9c7e6bf8a5_m.jpg" />

</a>

标注:data-fancybox使用图片预览插件,三个值都为images表示在一个图片组内 data-width data-height 图像的真实宽高度 data-caption 标题信息

启用方法: 

<script type="text/javascript">
 $("[data-fancybox]").fancybox({
 // Options will go here
 });
</script>

遇到的问题:

1.如果使用低版本的图片预览插件,回报Cannot read property 'msie' of undefined的错,原因低版本似乎使用$ .browser方法,但是从jQuery 1.9起已被删除

2.在template或者templateUrl要使用html中传入的imgUrl值,不能直接使用imgUrl或者scope.imgUrl获取。

方法:

template:'<a class="imageBox" href="{{imgUrl}}" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-fancybox><img style="{{imgStyle}}" src="{{imgUrl}}" th:src="${cdn.url('+"'{{imgUrl}}'"+')}" /></a>'

或者

template:'<a class="imageBox" ng-href="{{imgUrl}}" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-fancybox><img style="{{imgStyle}}" ng-src="{{imgUrl}}" th:src="${cdn.url('+"'{{imgUrl}}'"+')}" /></a>'

 后面的th:src可以不用拼接,如果你项目中是用cdn上的资源图片,可以使用。

总结

以上所述是小编给大家介绍的Angular中封装fancyBox(图片预览)遇到问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery 风格的HTML文本转义
Jul 01 Javascript
jQuery入门第一课 jQuery选择符
Mar 14 Javascript
javaScript 利用闭包模拟对象的私有属性
Dec 29 Javascript
js数组的操作详解
Mar 27 Javascript
node.js中的fs.link方法使用说明
Dec 15 Javascript
javascript事件委托的用法及其好处简析
Apr 04 Javascript
JS鼠标滚动分页效果示例
Jul 05 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
Jul 05 Javascript
React中jquery引用的实现方法
Sep 12 jQuery
Vue 项目代理设置的优化
Apr 17 Javascript
快速解决处理后台返回json数据格式的问题
Aug 07 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 #Javascript
Angularjs实现上传图片预览功能
Sep 01 #Javascript
JavaScript中使用参数个数实现重载功能
Sep 01 #Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
Sep 01 #Javascript
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 #jQuery
基于Vue.js 2.0实现百度搜索框效果
Dec 28 #Javascript
JavaScript闭包的简单应用
Sep 01 #Javascript
You might like
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
php对称加密算法示例
2014/05/07 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
PHP实现小偷程序实例
2016/10/31 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
跟老齐学Python之用while来循环
2014/10/02 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
python模块之paramiko实例代码
2018/01/31 Python
Django中Model的使用方法教程
2018/03/07 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
教师暑期培训感言
2014/08/15 职场文书
骨干教师申报材料
2014/12/17 职场文书
经营目标责任书
2015/05/08 职场文书
用python自动生成日历
2021/04/24 Python