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

发布时间 - 2026-01-11 03:04:19    点击率:

首先在官网下载最新版的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(图片预览)遇到问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# angular  # fancyBox  # 图片预览  # angularjs点击图片放大实现上传图片预览  # 放在  # 小编  # 的是  # 您的  # 如果你  # 还可以  # 你可以  # 鼠标  # 在此  # 已被  # 是从  # 给大家  # 自定义  # 可以使用  # 您也  # 都为  # 所述  # 偏低  # 装在  # 要使 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  香港服务器网站推广:SEO优化与外贸独立站搭建策略  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何在局域网内绑定自建网站域名?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  php json中文编码为null的解决办法  phpredis提高消息队列的实时性方法(推荐)  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何用美橙互联一键搭建多站合一网站?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel如何实现API版本控制_Laravel版本化API设计方案  如何安全更换建站之星模板并保留数据?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  网站制作企业,网站的banner和导航栏是指什么?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  如何在建站主机中优化服务器配置?  如何在阿里云虚拟服务器快速搭建网站?  javascript日期怎么处理_如何格式化输出  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何注册花生壳免费域名并搭建个人网站?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  如何用wdcp快速搭建高效网站?  JS实现鼠标移上去显示图片或微信二维码  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何用低价快速搭建高质量网站?  使用C语言编写圣诞表白程序  EditPlus中的正则表达式 实战(1)  如何确保西部建站助手FTP传输的安全性?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  简单实现Android验证码  Python自动化办公教程_ExcelWordPDF批量处理案例  大连 网站制作,大连天途有线官网?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  如何确认建站备案号应放置的具体位置?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  php打包exe后无法访问网络共享_共享权限设置方法【教程】  网站优化排名时,需要考虑哪些问题呢?  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel集合Collection怎么用_Laravel集合常用函数详解  魔毅自助建站系统:模板定制与SEO优化一键生成指南  简历在线制作网站免费版,如何创建个人简历?