react实现一个优雅的图片占位模块组件详解


Posted in Javascript onOctober 30, 2017

前言

发现项目中的图片占位模块写得很不优雅,找了一圈,发现没找到自己想要的图片组件。于是自己写了一个,写了一个还算优雅的图片组件:mult-transition-image-view

截图:

react实现一个优雅的图片占位模块组件详解

功能简介

首先它是一个比较优雅的组件:用起来不头疼。

第二个它能实现以下场景:

  • 没有图片的时候,显示一个占位图(可以直接用css来写背景,方便自定义)
  • 希望在加载大图的时候,能先占位一张小图,然后再过渡到一张大图。类似上面的截图。

使用方法

安装npm 包

npm install react-mult-transition-image-view

代码部分

import ImageBoxView from 'react-mult-transition-image-view'

 <ImageBoxView img="#你的图片#"/>

当然 你可以设置其他属性

<ImageBoxView
 width="320" // 
 height="200" // 宽高,会转化成 style 属性
 mode="style" // 使用 style 去显示图片(默认:img)
 img="#你要的图片#"/> // 图片路径

小图过渡到大图的效果

<ImageBoxView
 animate="fade" // 会触发动画样式(见下方样式部分 )
 mode="style" // 使用 style 去显示图片(默认:img)
 img={['#小图地址#', '#大图地址#']}/> // img 传入数组形式。

实现随机显示图片

当有很多图片的时候,可以让图片随机时间显示,增加图片显示出来的体验
(一起出来真的有点丑)

<ImageBoxView
 delay="100" // 延迟加载(默认:0),可以传入一个随机数
 img="#你要的图片#"/> // 图片路径

幻灯片效果

因为 img 属性可以传入数组,所以 理论上可以加载很多图,实现幻灯片效果。
使用 wait 属性 来设置,每张图片加载后的等待时间

<ImageBoxView
 animate="fade" // 会触发动画样式(见下方样式部分 )
 wait="100" // 每张图片加载完后,继续加载下一张的时间(默认:0)
 mode="style" // 使用 style 去显示图片(默认:img)
 img={['#图片1#', '#图片2#', '#图片3#']}/> // img 传入数组形式。

样式部分

别忘了样式部分

.c-img-box{
 display:inline-block;
 width: 320px;
 height: 200px;
 background: #f7f6f5;
 position: relative;
 .img-hold{
 overflow: hidden;
 background-size: cover;
 background-repeat: no-repeat;
 background-position: center;
 img{
  width:100%;
  height:100%;
 }
 &.img-animate{
  transition: opacity 0.5s;
 }
 }
 
 .img-cover{
 background: url('https://d.2dfire.com/om/images/menulist/7deb58da.default.png') no-repeat center/300px;
 background-color:#f0f0f0;
 }
 
 .img-cover,
 .img-hold,
 .img-hide{
 position: absolute;
 width: 100%;
 height: 100%;
 top:0;
 left:0;
 }
 
 .img-hide{
 opacity: 0;
 }
 
}

TODO

github: https://github.com/qilei0529/react-mult-transition-image-view

本地下载:http://xiazai.3water.com/201710/yuanma/react-mult-transition-image-view(3water.com).rar

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript 全角转半角部分
Oct 28 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
JavaScript性能优化总结之加载与执行
Aug 11 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
vue-lazyload使用总结(推荐)
Nov 01 Javascript
在vue项目中引入highcharts图表的方法
Jan 21 Javascript
node中IO以及定时器优先级详解
May 10 Javascript
vue 表单之通过v-model绑定单选按钮radio
May 13 Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 Javascript
JS多个异步请求 按顺序执行next实现解析
Sep 16 Javascript
js实现简单的贪吃蛇游戏
Apr 23 Javascript
ES6 javascript中class类的get与set用法实例分析
Oct 30 #Javascript
原生JS与jQuery编写简单选项卡
Oct 30 #jQuery
简单实现jQuery弹窗效果
Oct 30 #jQuery
Bootstrap栅格系统的使用详解
Oct 30 #Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
Oct 30 #Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 #Javascript
JavaScript实现精美个性导航栏筋斗云效果
Oct 29 #Javascript
You might like
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
php explode函数实例代码
2012/02/27 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
详解Python中for循环的使用方法
2015/05/14 Python
Python中return语句用法实例分析
2015/08/04 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
python中添加模块导入路径的方法
2021/02/03 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
农贸市场管理制度
2014/01/31 职场文书
德育标兵事迹材料
2014/08/24 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
小学课改工作总结
2015/08/13 职场文书
初中语文教学研修日志
2015/11/13 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫