日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

react制作一个照片墙小demo

發布時間:2024/3/24 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 react制作一个照片墙小demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


點擊下面的 指示燈 會變大 當前的圖片會居于屏幕中間 再按一下會變成黃色 同時當前指示的照片會翻轉到背面
是一個綜合知識的考察 用到了css3的2d和3d轉換

// App.js import React,{ Component } from 'react' import ReactDOM from 'react-dom' import "./index.scss" import PicTab from "./picTab"class App extends Component {render(){return (<PicTab picJson={{picUrl:['./img/1.jpeg','./img/2.jpeg','./img/3.jpg','./img/4.jpg','./img/5.jpg','./img/6.jpg','./img/7.jpg','./img/8.jpg','./img/9.jpg',],text:['好看的動漫1','好看的動漫2','好看的動漫3','好看的動漫4','好看的動漫5','好看的動漫6','好看的動漫7','好看的動漫8','好看的動漫9'],bText:['我就是詳細介紹1','我就是詳細介紹2','我就是詳細介紹3','我就是詳細介紹4','我就是詳細介紹5','我就是詳細介紹6','我就是詳細介紹7','我就是詳細介紹8','我就是詳細介紹9',]}}/>)} } ReactDOM.render(<App />,document.getElementById('root')); import React,{ Component } from 'react' class PicTab extends Component {constructor(){super();this.state={rotate:[],left:'',top:'',zIndex:'',index:0,rotateY:[]}}UNSAFE_componentWillMount(){this.random();}random(id){let newRotate=[],newLeft=[],newTop=[],newZindex=[],newRotateY=[];this.props.picJson.picUrl.forEach((item,index)=>{newRotateY.push(0)if(id===index){newRotate.push(0)newLeft.push('40%');newTop.push('20%')newZindex[index]=30;}else{newRotate.push(Math.random()*-720+360);newLeft.push(Math.random()*(window.innerWidth-340)+'px');newTop.push(Math.random()*(window.innerHeight-416)+'px')}})this.setState({rotate:newRotate,left:newLeft,top:newTop,zIndex:newZindex,rotateY:newRotateY})}css(){return `*{margin:0;padding:0;list-style:none;}body{background:#ccc;overflow:hidden;}.myUl{width:100%;height:100%;}.myUl>li{width:340px;height:416px;background:white;position:absolute;transform-style:preserve-3d;}.myUl>li .zm{width:100%;height:100%;position:absolute;left:0;top:0;transform:translateZ(1px)}.myUl>li>.zm img{width:285px;height:192px;position:absolute;left:50%;top:93px;transform:translateX(-50%)}.myUl>li>.zm .textNode{width:100%;position:absolute;text-align:center;bottom:24px;color:#4d544d;}.myUl>li .bm{width:100%;height:100%;position:absolute;left:0;top:0;transform:translateZ(-10px) rotateY(180deg);text-align:center;}.myOl{position:absolute;left:50%;transform:translateX(-50%);bottom:38px;height:22px;} .myOl>li{width:22px;height:22px;float:left;background-color:#007d77;margin:0 8px;z-index:100;border-radius:50%;cursor:pointer;transition:.7s;}.myOl>li.active{transform:scale(1.5) rotateY(180deg);}.myOl>li.dactive{transform:scale(1.5) rotateY(360deg);background:yellow;}`}click(id,e){if(e.target.classList.contains('active')){if(e.target.classList.contains('dactive')){e.target.classList.remove('dactive');this.state.rotateY.splice(id,1,360);}else{e.target.classList.add('dactive');this.state.rotateY.splice(id,1,180);}this.setState({rotateY:this.state.rotateY})}else{this.random(id);this.setState({index:id})}}render(){let aLi=[],bLi=[];this.props.picJson.picUrl.forEach((v,i)=>{aLi.push(<li style={{transform:'perspective(800px) rotate('+this.state.rotate[i]+'deg) rotateY('+this.state.rotateY[i]+'deg)',left:this.state.left[i],top:this.state.top[i],transition:Math.random()*2+0.7+'s',zIndex:this.state.zIndex[i]}} key={i}><div className="zm"><img alt={i} src={v} /><div className="textNode">{this.props.picJson.text[i]}</div></div><div className="bm">{this.props.picJson.bText[i]}</div></li>)bLi.push(<li className={this.state.index===i?'active':''} key={i} onClick={this.click.bind(this,i)}></li>)});return (<div><style dangerouslySetInnerHTML={{__html:this.css()}}></style><ul className="myUl" ref="myUl">{aLi}</ul><ol className="myOl">{bLi}</ol></div>)} } export default PicTab

算是休閑 可以嘗試著敲敲代碼

總結

以上是生活随笔為你收集整理的react制作一个照片墙小demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。