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学习之一个简易的日历控件
Mar 24 Javascript
javascript dom代码应用 简单的相册[firefox only]
Jun 12 Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
js实现带圆角的两级导航菜单效果代码
Aug 24 Javascript
概述VUE2.0不可忽视的很多变化
Sep 25 Javascript
jquery实现多次上传同一张图片
Jan 09 Javascript
canvas实现简易的圆环进度条效果
Feb 28 Javascript
手把手教你搭建ES6的开发运行环境
Jul 11 Javascript
JavaScript反射与依赖注入实例详解
May 29 Javascript
微信小程序实现弹出层效果
May 26 Javascript
vue中 this.$set的用法详解
Sep 06 Javascript
vue实现div单选多选功能
Jul 16 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
JavaScript工具库MyTools详解
2020/01/01 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
python if not in 多条件判断代码
2016/09/21 Python
python 连接sqlite及简单操作
2017/06/30 Python
Python实现线程状态监测简单示例
2018/03/28 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
Python random模块的使用示例
2020/10/10 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
晚归检讨书
2014/02/19 职场文书
义诊活动总结
2015/02/04 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS