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中Array 对象相关的几个方法
Dec 22 Javascript
在IE中调用javascript打开Excel的代码(downmoon原作)
Apr 02 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
Oct 13 Javascript
javascript汉字拼音互转的简单实例
Oct 09 Javascript
微信小程序 石头剪刀布实例代码
Jan 04 Javascript
jQuery弹出层插件popShow用法示例
Jan 23 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
Jan 16 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 Javascript
VUE DOM加载后执行自定义事件的方法
Sep 07 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
Oct 11 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
Sep 17 Javascript
JavaScript数值类型知识汇总
Nov 17 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
js获取height和width的方法说明
2013/01/06 Javascript
jquery使用经验小结
2015/05/20 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
vue v-model的用法解析
2020/10/19 Javascript
python3访问sina首页中文的处理方法
2014/02/24 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
Python字符串的一些操作方法总结
2019/06/10 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
python中添加模块导入路径的方法
2021/02/03 Python
购房意向书范本
2014/04/01 职场文书
小学四年级学生评语
2014/12/26 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python