react 翻书效果_transition、class名称、React实现无限反复翻书效果
新手发文章。文章是在看到翻书效果动画后自己结合别人的例子实现的翻书效果,发文章记录以下。以后如果有机会用上,可以参考此文章。
首先是React的JSX页面结构:
// 一页paper包含2面图片
// 根据状态中 atLeft数组是否包含页码数判断页面paper翻到了左边还是右边。
-1 ? 'left' : 'right'].join(' ')}>
-1 ? 'left' : 'right'].join(' ')}>
-1 ? 'left' : 'right'].join(' ')}>
-1 ? 'left' : 'right'].join(' ')}>
上面给包裹img的div加上translateZ(*px)时为了防止翻页后图片显示的问题,如不加会使翻过去的正面图像显示在反面上。
然后是样式文件:
.paper{
position: absolute;
transition: transform 1s;
transform-style: preserve-3d;
}
.pic{
position: absolute;
right: 0px;
}
.left{
transform-origin: left center;
transform: perspective(1000px) rotateY(0deg);
}
.right{
transform-origin: left center;
transform: perspective(1000px) rotateY(180deg);
}
最后是其他部分内容:
state = {
degree: 0,
atLeft: [],
to: 1,
}
componentDidMount (){
let timer = null
clearInterval(timer)
let i = 1
// 创建定时器为每页paper切换class名,左翻时方向变量to为:1,右翻时方向变量to为:-1
timer = setInterval(() => {
if(this.state.to === 1){
if (i <= 4){
let newAtLelft = this.state.atLeft
newAtLelft.push(i)
this.setState({
atLeft: newAtLelft
})
i++
}
// 右翻时 i等于 5时就要改变方向
if(i === 5){
this.setState({
to: -1
})
}
} else{
if (i >= 1) {
let newAtLelft = this.state.atLeft
newAtLelft.pop(i)
this.setState({
atLeft: newAtLelft
})
i--
}
// 注意: 左翻时包含页码i的数组atLeft删除到1时就需要改变方向
if(i === 1){
this.setState({
to: 1
})
}
}
},3000)
}
完整组件类
export default class App extends React.Component {
state = {
degree: 0,
atLeft: [],
to: 1,
}
componentDidMount (){
setInterval(() => {
this.setState({
degree: this.state.degree + 90
})
}, 3000)
let timer = null
clearInterval(timer)
let i = 1
timer = setInterval(() => {
if(this.state.to === 1){
if (i <= 4){
let newAtLelft = this.state.atLeft
newAtLelft.push(i)
this.setState({
atLeft: newAtLelft
})
i++
}
if(i === 5){
this.setState({
to: -1
})
}
} else{
if (i >= 1) {
let newAtLelft = this.state.atLeft
newAtLelft.pop(i)
this.setState({
atLeft: newAtLelft
})
i--
}
if(i === 1){
this.setState({
to: 1
})
}
}
},3000)
}
render () {
- -1 ? 'left' : 'right'].join(' ')}>
- -1 ? 'left' : 'right'].join(' ')}>
- -1 ? 'left' : 'right'].join(' ')}>
- -1 ? 'left' : 'right'].join(' ')}>
}
第一次发文章,文章有点乱,有问题请大佬们指出,谢谢。
keniran
发布了1 篇原创文章 · 获赞 0 · 访问量 22
私信
关注
标签:right,join,atLeft,newAtLelft,transition,React,state,class,left
来源: https://blog.csdn.net/keniran/article/details/104410808
react 翻书效果_transition、class名称、React实现无限反复翻书效果相关推荐
- html翻页特效实现原理,CSS3实现超炫3D翻书效果(二)
上回书,我们已经简单实现如何翻一页.好,现在我们复习一下.翻书效果的基本原理,请看下html布局: 简单再次说明下:box为大盒子,主要提供显示区域的左部分:page为要翻转的页面,其包含正面(fro ...
- react native开发Android 篇——APP名称、图标、启动页
react native开发Android 篇--APP名称.图标.启动页 设置APP名称 设置APP图标 设置启动页 隐藏启动页 设置APP名称 编辑 android/app/src/main/re ...
- ppt怎么把图片做成翻书效果_PPT教程,教你如何制作翻书效果动画
我们ppt制作是不可能只有文字,经常需要添加一些动画特效,增加观赏性和美观性.今天小编要教的大家的是PPT中的翻书动画效果,有兴趣的朋友一起来看看吧! PPT制作翻书效果教程: 1.先打开PPT,然后 ...
- react中样式冲突_如何通过React中的样式使您的应用漂亮
react中样式冲突 by Vinh Le 由Vinh Le 如何通过React中的样式使您的应用漂亮 (How to make your apps pretty with styling in Re ...
- react 生成图片二维码_21个React开发神器
来源 | https://www.jianshu.com/p/febbd8d3cdd4 下列工具中的重要性与排序无关. 1.Webpack Bundle Analyzer 有没有想过你的应用程序的哪些 ...
- react中使用构建缓存_使用React构建Tesla的电池范围计算器(第1部分)
react中使用构建缓存 by Matthew Choi 由Matthew Choi 使用React构建Tesla的电池范围计算器(第1部分) (Building Tesla's Battery Ra ...
- react jest测试_如何使用React测试库和Jest开始测试React应用
react jest测试 Testing is often seen as a tedious process. It's extra code you have to write, and in s ...
- react 组件引用组件_React Elements VS React组件
react 组件引用组件 A few months ago I posted to Twitter what I thought was a simple question: 几个月前,我在Twitt ...
- react和nodejs_如何使用NodeJS和React为SaaS构建Stripe Billing入门流程
react和nodejs 你会学什么? (What will you learn?) In this article we will be going over the steps needed to ...
- react hooks使用_我如何使用React Hooks在约100行代码中构建异步表单验证库
react hooks使用 by Austin Malerba 奥斯汀·马勒巴(Austin Malerba) 我如何使用React Hooks在约100行代码中构建异步表单验证库 (How I bu ...
最新文章
- 2017海克斯康拉斯维加斯美国大会 精彩即将开始
- Hadoop学习之路(三)Hadoop-2.7.5在CentOS-6.7上的编译
- python全栈 互联网协议
- DVWA学习(三)Brute Force(暴力破解)
- 思维导图分析http之前端组成
- python大数据处理与分析课程目标_《大数据分析与挖掘》课程教学大纲
- hik中心服务器登录失败,蒲公英云平台登录失败解决方案
- Win32Asm学习笔记[不断更新]
- 2019JAVA中ajax不高亮_2019-01-18 ajax请求时,token死活放不大header中
- ad17 linux 版本,Altium Designer这些不同版本的软件之间的区别有多大呢?
- ad采样的符号位_AD采样后数据如何在FPGA中转化为有符号数
- 【STM32 基础实验矩阵按键】
- 七种寻址方式(立即寻址、寄存器寻址)
- Unity3d报错及解决办法总结
- Python量化交易平台开发教程系列5-底层接口对接
- 知乎9.6万赞热帖:“为什么飞机的头等舱一直拉着帘子?”答案细思极恐
- excel怎么设置打印区域_excel:将多个表格的不同区域打印在一张纸上
- 在移动硬盘上安装Ubuntu
- 第73节:Java中的HTTPServletReauest和HTTPServletResponse
- leaftlet 中Polygon的使用属性
热门文章
- 《GNU Emacs Lisp编程入门》读书笔记
- SMT Kingdom v8.5 地震解释软件\
- 服装企业三步走向PLM,致力提升价值的时尚品牌
- native数据类型 react_React-Native 之 数据持久化
- html阻止超链接跳转,009_阻止html标签默认事件的执行,比如阻止超链接默认点击事件的执行...
- LPC4370 USERMANUAL
- 计算机四级网络工程师复习提纲
- 小软件项目开发的管理
- lua 常用数据类型总结
- 360浏览器html在哪儿,360浏览器打印页面设置在哪里