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 相关文章推荐
JavaScript 无符号右移赋值操作
Apr 17 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
使用js实现一个可编辑的select下拉列表
Feb 20 Javascript
Js表格万条数据瞬间加载实现代码
Feb 20 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
Apr 23 Javascript
angular中使用Socket.io实例代码
Jun 03 Javascript
简单谈谈js的数据类型
Sep 25 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
ES6基础之数组和对象的拓展实例详解
Aug 22 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
php正则
2006/07/07 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python中subprocess模块用法实例详解
2015/05/20 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
详解Django中间件执行顺序
2018/07/16 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
Jdbc数据访问技术面试题
2012/03/30 面试题
专科文秘应届生求职信
2013/11/18 职场文书
大一军训感言
2014/01/09 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
2016年国陪研修感言
2015/11/18 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python