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第一天(Jquery学习笔记)
May 11 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
Dec 15 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
javascript实现超炫的向上滑行菜单实例
Aug 03 Javascript
JS提交form表单实例分析
Dec 10 Javascript
原生JavaScript制作计算器
Oct 16 Javascript
详解如何较好的使用js
Dec 16 Javascript
angular+webpack2实战例子
May 23 Javascript
Three.js中网格对象MESH的属性与方法详解
Sep 27 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
Nov 17 Javascript
vue裁切预览组件功能的实现步骤
May 04 Javascript
vue-cropper插件实现图片截取上传组件封装
May 27 Vue.js
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 zend解密软件绿色版测试可用
2008/04/14 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
php中filter_input函数用法分析
2014/11/15 PHP
php提交post数组参数实例分析
2015/12/17 PHP
PHP错误机制知识汇总
2016/03/24 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
js tab效果的实现代码
2009/12/26 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
Python操作MongoDB详解及实例
2017/05/18 Python
python如何定义带参数的装饰器
2018/03/20 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
简历里的自我评价
2014/01/31 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
健康状况证明书
2014/11/26 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
客房服务员岗位职责
2015/02/09 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
golang实现浏览器导出excel文件功能
2022/03/25 Golang