一个还算优雅的 react 图片组件

前端之家收集整理的这篇文章主要介绍了一个还算优雅的 react 图片组件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

写了一个还算优雅的图片组件
mult-transition-image-view

截图:

前言

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

功能简介

首先它是一个比较优雅的组件:用起来不头疼。
第二个它能实现以下场景:

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

使用方法

安装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

喜欢的就给个 star

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

猜你在找的React相关文章