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 去字符串空格终极版(支持utf8)
Nov 14 Javascript
再次谈论Javascript中的this
Jun 23 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
Jan 21 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
Mar 02 Javascript
纯jQuery实现前端分页功能
Mar 23 jQuery
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
Apr 22 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
Jan 20 Javascript
解决vue 打包发布去#和页面空白的问题
Sep 04 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
vue实现简易的双向数据绑定
Dec 29 Vue.js
JavaScript+HTML实现学生信息管理系统
Apr 20 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采集神器cURL使用方法详解
2016/02/19 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
详解jquery和vue对比
2019/04/16 jQuery
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
详解React 条件渲染
2020/07/08 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
python基础练习之几个简单的游戏
2017/11/10 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
在python里面运用多继承方法详解
2019/07/01 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
使用Pycharm分段执行代码
2020/04/15 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
市场安全管理制度
2014/01/26 职场文书
感恩寄语大全
2014/04/11 职场文书
文明家庭事迹材料
2014/12/20 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
python实现股票历史数据可视化分析案例
2021/06/10 Python