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 相关文章推荐
jquery1.4 教程二 ajax方法的改进
Feb 25 Javascript
javascript分页代码(当前页码居中)
Sep 20 Javascript
js写一个弹出层并锁屏效果实现代码
Dec 07 Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 Javascript
JS中FRAME的操作问题实例分析
Oct 21 Javascript
requireJS使用指南
Apr 27 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
Jan 30 Javascript
javascript中this用法实例详解
Apr 06 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
Jan 12 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
使用layui实现树形结构的方法
Sep 20 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整合七牛实现上传文件
2015/07/03 PHP
php组合排序简单实现方法
2016/10/15 PHP
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
开始着手第一个Django项目
2015/07/15 Python
python如何爬取个性签名
2018/06/19 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
numpy库reshape用法详解
2020/04/19 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
linux面试题参考答案(1)
2016/01/22 面试题
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
教师实习自我鉴定
2013/12/11 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
房屋产权证明书
2014/10/15 职场文书
保研推荐信格式
2015/03/25 职场文书
社区党建工作总结2015
2015/05/13 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫