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

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

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

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

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

我的页面</ 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></pre> </div> <p>2.通过通过Bower或npm安装工具安装</p> <div class="jb51code"> <pre class="brush:js;"> # Bower bower install fancybox --save # NPM npm install @fancyapps/fancybox --save</pre> </div> <p>3.项目中通过外部引用,一般放在lib文件夹下(我采用的是这种方法)</p> <p>在lib下新建一个文件目录fancy文件夹,然后引入下载好的.js和.css,在gulpfile.js添加自动化打包压缩任务,放在css目录中的lib.min.css和lib.min.js,在入口index.html中引入压缩后的文件。</p> <p>以本fancyBox插件举例:</p> <div class="jb51code"> <pre class="brush:js;"> 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); });</pre> </div> <p>封装在angular自定义组件中</p> <p>html模块:</p> <div class="jb51code"> <pre class="brush:js;"> <img-box img-url="'xxxxxx.png'" img-style="'width:740px;margin-left:-50px;'"></img-box></pre> </div> <p>directive.js模块:</p> <div class="jb51code"> <pre class="brush:js;"> var appModule = angular.module('app.core'); appModule.directive('imgBox',imgBox);</pre> </div> <div class="jb51code"> <pre class="brush:js;"> 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 (s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e,elem,attrs) { $(".image<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>").<a href="https://www.jb51.cc/tag/fancybox/" target="_blank" class="keywords">fancybox</a>(); },} }</pre> </div> <p>官方写法:</p> <div class="jb51code"> <pre class="b<a href="https://www.jb51.cc/tag/rush/" target="_blank" class="keywords">rush</a>:js;"> <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">     <p class="pic_center"><img src="https://c1.staticflickr.com/9/8148/29324593462_f890687b7a_m.jpg" /></p>   </a>   <a href="https://c1.staticflickr.com/9/8487/28808645394_a0ff0fc5c1_k.jpg" data-fancybox="images" data-width="2048" data-height="1365">     <p class="pic_center"><img src="https://c1.staticflickr.com/9/8487/28808645394_9c7e6bf8a5_m.jpg" /></p>   </a></pre> </div> <p>  标注:data-<a href="https://www.jb51.cc/tag/fancybox/" target="_blank" class="keywords">fancybox</a>使用<a href="https://www.jb51.cc/tag/tupian/" target="_blank" class="keywords">图片</a>预览<a href="https://www.jb51.cc/tag/chajian/" target="_blank" class="keywords">插件</a>,三个值都为images表示在<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a><a href="https://www.jb51.cc/tag/tupian/" target="_blank" class="keywords">图片</a>组内 data-width data-height 图像的真实宽高度 data-caption <a href="https://www.jb51.cc/tag/biaoti/" target="_blank" class="keywords">标题</a>信息</p> <p>  启用<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>: </p> <div class="jb51code"> <pre class="b<a href="https://www.jb51.cc/tag/rush/" target="_blank" class="keywords">rush</a>:js;"> <script type="text/javascript"> $("[data-<a href="https://www.jb51.cc/tag/fancybox/" target="_blank" class="keywords">fancybox</a>]").<a href="https://www.jb51.cc/tag/fancybox/" target="_blank" class="keywords">fancybox</a>({ // Options will go here });   </script></pre> </div> <p>  遇到的问题:</p> <p>  1.如果使用低版本的<a href="https://www.jb51.cc/tag/tupian/" target="_blank" class="keywords">图片</a>预览<a href="https://www.jb51.cc/tag/chajian/" target="_blank" class="keywords">插件</a>,回报Cannot read property 'msie' of undefined的错,原因低版本似乎使用$ .<a href="https://www.jb51.cc/tag/bro/" target="_blank" class="keywords">bro</a>wser<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>,但是从jQuery 1.9起已被<a href="https://www.jb51.cc/tag/shanchu/" target="_blank" class="keywords">删除</a></p> <p>  2.在template或者templateUrl要使用html中传入的<a href="https://www.jb51.cc/tag/imgur/" target="_blank" class="keywords">imgur</a>l值,不能直接使用<a href="https://www.jb51.cc/tag/imgur/" target="_blank" class="keywords">imgur</a>l或者s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.<a href="https://www.jb51.cc/tag/imgur/" target="_blank" class="keywords">imgur</a>l<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a>。</p> <p>  <a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>:</p> <div class="jb51code"> <pre class="b<a href="https://www.jb51.cc/tag/rush/" target="_blank" class="keywords">rush</a>:js;"> 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>'</pre> </div> <p>      或者</p> <div class="jb51code"> <pre class="b<a href="https://www.jb51.cc/tag/rush/" target="_blank" class="keywords">rush</a>:js;"> 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>'</pre> </div> <p>     后面的th:src可以不用拼接,如果你项目中是用cdn上的资源<a href="https://www.jb51.cc/tag/tupian/" target="_blank" class="keywords">图片</a>,可以使用。 </p> <p><h3>总结</h3></p> <p>以上所述是小编给大家介绍的Angular中封装<a href="https://www.jb51.cc/tag/fancybox/" target="_blank" class="keywords">fancybox</a>(<a href="https://www.jb51.cc/tag/tupian/" target="_blank" class="keywords">图片</a>预览)遇到问题小结。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可<a href="https://www.jb51.cc/tag/fenxiang/" target="_blank" class="keywords">分享</a>给好友!感谢<a href="https://www.jb51.cc/tag/zhichi/" target="_blank" class="keywords">支持</a>。</p><div class="topcard-tags"><a href="https://m.jb51.cc/tag/angular/" class="tag_link" target="_blank">angular</a><a href="https://m.jb51.cc/tag/tupianyulan/" class="tag_link" target="_blank">图片预览</a></div> </div> </div> </div> <!-- row end--> <div class="clearfix"></div> <!-- row --> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <div class="title"><h1>相关文章</h1></div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/09-25/18/879e7ec08a36083a57dfc8b44214469d.gif" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/js/4742335.html" title="自定义web弹窗/层:简易风格的msg与可拖放的dialog,生成博客园文章目录弹窗">自定义web弹窗/层:简易风格的msg与可拖放的dialog,生成博客园文章目录弹窗</a> </div> <div class="summary">前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/09-25/18/84bd76d88488cafdfb2789b5a991fecf.png" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/js/4742334.html" title="nice-validator表单验证插件的简单使用">nice-validator表单验证插件的简单使用</a> </div> <div class="summary">前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/09-25/18/cf659cff914621d918c6072273c30973.gif" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/js/4742333.html" title="基于“formData批量上传的多种实现” 的多图片预览、上传的多种实现">基于“formData批量上传的多种实现” 的多图片预览、上传的多种实现</a> </div> <div class="summary">前言 图片上传是web项目常见的需求,我基于之前的博客的代码...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/09-25/18/02f80db4fdf55f3a24674e2854e018f2.png" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/js/4742332.html" title="踹掉后端,前端导出Excel!">踹掉后端,前端导出Excel!</a> </div> <div class="summary">前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/09-25/18/db8dce1453ed09a8230451f2a9fcdc68.png" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/js/4742331.html" title="Web Worker——js的多线程,实现统计博客园总阅读量、总评论量、总推荐量">Web Worker——js的多线程,实现统计博客园总阅读量、总评论量、总推荐量</a> </div> <div class="summary">前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/09-25/18/1cd1c972ce822d1a99b7d1b2c8f9cfcd.png" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/js/4742330.html" title="select标签 禁止选择但又能通过序列化form表单传值到后台">select标签 禁止选择但又能通过序列化form表单传值到后台</a> </div> <div class="summary">前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...</div> </div></div> </div> <!-- row end--> </div> </div> <footer id="footer"> <div class="container"> <div class="copyright"> Copyright © 2018 编程之家. 当前版本 V7.0.16<br> <span class="ml5">编程之家 版权所有 <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">闽ICP备13020303号-8</a> </div> </div> </footer> <script src="https://m.jb51.cc/js/count.js"></script> </body> </html>