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 相关文章推荐
js以对象为索引的关联数组
Jul 04 Javascript
window.location 对象所包含的属性
Oct 10 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
Jan 23 Javascript
jQuery数据缓存用法分析
Feb 20 Javascript
纯javascript实现图片延时加载方法
Aug 21 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
May 03 Javascript
JavaScript易错知识点整理
Dec 05 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
基于js中document.cookie全面解析
Sep 14 Javascript
axios实现文件上传并获取进度
Mar 25 Javascript
vue自动化路由的实现代码
Sep 30 Javascript
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
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中基本符号及使用方法
2010/03/23 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
js实现车辆管理系统
2020/08/26 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
Python中装饰器高级用法详解
2017/12/25 Python
使用matplotlib画散点图的方法
2018/05/25 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
python实现对变位词的判断方法
2020/04/05 Python
个人优缺点自我评价
2014/01/27 职场文书
毕业生自荐信格式
2014/03/07 职场文书
聘任证明怎么写
2015/03/02 职场文书
高中地理教学反思
2016/02/19 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server