基于React的图片缩放、旋转、反转、翻页等效果的实现

本文主要是基于viewjs的图片展示

话不多说,先看效果
在这里插入图片描述
可以看到对于图片的缩放、旋转、下一张,反转等,符合我们做图片展示框架的要求。

安装viewjs

因为前端使用的是react,所以我们找到一个viewjs的react实现,
项目引入:"react-viewer": "^3.2.1",

或:npm install react-viewer --save

代码使用

在render函数里加入如下代码

view 遮罩
          <Viewer
            visible={this.state.visible}
            onClose={this.setImageVisible}
            onMaskClick={this.setImageVisible}
            images={images}
            activeIndex={this.state.activeIndex}
            attribute={true}
            customToolbar={(toolbars) => {
              return toolbars.concat([
                {
                  key: "download",
                  render: (<div>C</div>),
                  onClick: (activeImage) => {
                	console.log(activeImage);
              	  },
                },
              ]);
            }}
          />

几个props说明下:

  • visible 表示组件是否可见,true 可见,false不可见,可由action控制
  • onClose和onMaskClose是一个action,点击之后会将visible 变成false,从而可以关闭mask
  • activeIndex 表示展示在mask上的图片的下标
  • images表示所有图片的数据,可以是url,可以是转码后的base64字符串

具体可以参考:react-view github

最主要的是构建images
结构如下:

{
	[
		{
			src: 'http://xxx',
			alt: '图片描述'
		},
		{
			src: 'http://xxx',
			alt: '图片描述2'
		}
	]
}
渲染图片

然后在需要渲染图片的地方,把图片渲染出来:

<div className={imgListClass}>
      {images.map((item, index) => {
            return (
                <div key={index.toString()} className="img-item">
                     <img src={item.src} onClick={() => {
                        this.setState({
                          visible: true,
                          activeIndex: index,
                        });
                      }}/>
                    </div>
                  );
        })}
</div>
  setImageVisible = () => {
    this.setState({ visible: false });
  };

这样就大功告成了。

另外react-viewer可支持动态渲染,当使用axios向后台请求数据时,只需要将加载后的数据add进images这个state里,就可以在mask中的预览图看到。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 React实现上下滚动翻页的 UI 效果,可以使用 CSS 样式来设置页面滚动条的样式,并结合 `onWheel` 事件监听器来实现页面的滚动效果。具体实现步骤如下: 1. 在你的组件中添加一个滚动容器,并设置其样式。例如: ```jsx function MyComponent() { return ( <div className="scroll-container"> {/* TODO: 渲染页面内容 */} </div> ); } ``` 2. 在 CSS 样式中设置滚动容器的样式,包括滚动条的样式和位置等。例如: ```css .scroll-container { overflow-y: scroll; /* 显示垂直滚动条 */ scrollbar-width: thin; /* 设置滚动条宽度 */ scrollbar-color: #ccc #fff; /* 设置滚动条颜色 */ height: 100vh; /* 设置滚动容器高度 */ } ``` 3. 在组件中添加一个 `onWheel` 事件监听器,并在该监听器中控制滚动容器的滚动位置。例如: ```jsx function MyComponent() { function handleWheel(e) { const container = e.target; // 获取滚动容器元素 const deltaY = e.deltaY; // 获取滚动距离 container.scrollTop += deltaY; // 根据滚动距离更新滚动位置 } return ( <div className="scroll-container" onWheel={handleWheel}> {/* TODO: 渲染页面内容 */} </div> ); } ``` 在上面的示例中,我们定义了一个 `handleWheel` 函数来处理 `onWheel` 事件。在该函数中,我们首先获取了滚动容器元素和滚动距离,然后根据滚动距离更新了滚动容器的滚动位置。这样就可以通过鼠标滚轮来控制页面的滚动了。 需要注意的是,在实际开发中,你可能还需要对滚动容器的高度和滚动条的样式等进行进一步的设置,以便实现更好的 UI 效果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值