久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

用React加CSS3實(shí)現(xiàn)微信拆紅包動(dòng)畫效果

本篇文章主要介紹了用React加CSS3實(shí)現(xiàn)微信拆紅包動(dòng)畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

微信紅包曾經(jīng)引爆過一系列的營銷熱潮,相信大家對于這種紅包形式并不陌生,這里本著娛樂至上的精神用React簡單地實(shí)現(xiàn)了拆紅包的動(dòng)畫效果,供大家一起交流學(xué)習(xí)

用CSS3繪制紅包

.redpack {
  height: 450px;
  background: #A5423A;
  width: 300px;
  left: 0;
  top: 0;
  border-radius: 10px;
  margin: 0 auto;
}
.topcontent {
    height: 300px;
    border: 1px solid #BD503A;
    background-color: #BD503A;
    border-radius: 10px 10px 50% 50% / 10px 10px 15% 15%;
    box-shadow: 0px 4px 0px -1px rgba(0,0,0,0.2);
}
#redpack-open {
    width: 100px;
    height: 100px;
    border: 1px solid #FFA73A;
    background-color: #FFA73A;
    border-radius: 50%;
    color: #fff;
    font-size: 20px;
    display: inline-block;
    margin-top: -50px;
    box-shadow: 0px 4px 0px 0px rgba(0, 0, 0, 0.2);
}
<div class='redpack'>
  <!--  紅包的頂部蓋子 -->
  <div class="topcontent"></div>
  <!-- 拆紅包的按鈕 -->
  <div id="redpack-open"></div>
</div>

效果如圖:

用React來區(qū)分不同的狀態(tài)的轉(zhuǎn)換

用React.js來實(shí)現(xiàn)的話,主要通過判斷state來控制紅包現(xiàn)在是等待拆開還是已經(jīng)拆開過,具體的代碼如下

import React from 'react';

class ReadPacket extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            animation: false,
            status: 0  // 0: 等待拆開 1: 拆開后
        };
    }

    render() {
        var bonus = this.props.thanks ? 0 : parseFloat(this.props.surveyInfo.bonus);

        if(this.state.status == 0) {
            return (
                <div className='redpack-container' id='redpack-container'>
                    <div className='redpack'>
                        <div className='topcontent'>
                            <div id='redpack-opened'>
                              <div className='redpack-avatar'>
                                <img src='http://placehold.it/80x80' alt='頭像' width='80' height='80'/>
                              </div>
                            </div>
                            <h2 style={{marginTop: 80, color: 'white'}}>獎(jiǎng)勵(lì)</h2>
                            <span className='redpack-text'>點(diǎn)擊下方按鈕領(lǐng)取紅包</span>
                            <div className='redpack-description white-text'>恭喜發(fā)財(cái) 大吉大利</div>
                        </div>

                        <div id='redpack-open' className={this.state.animation ? 'rotate' : ''}
                             onClick={this.openRedPacket.bind(this)}
                        >
                            <span>拆紅包</span>
                        </div>
                    </div>
                </div>
            );
        } else if (bonus == 0) {
            // 謝謝參與
            return (
                <div className='redpack-container' id='redpack-container'>
                    <div className='redpack'>
                        <div className='topcontent-open'>
                            <div className='redpack-avatar'>
                                <span id='close'></span>
                            </div>
                            <h1 style={{marginTop: 180, color: 'white'}}> 謝謝參與 </h1>
                            <span className='redpack-text'>多多參與的獎(jiǎng)勵(lì)的機(jī)會(huì)更多哦</span>
                            <br/>
                            <a onClick={this._toWallet.bind(this)}
                               style={{cursor:'pointer',textDecoration: 'underline', color: 'white'}}>
                                去我的賬戶查看
                            </a>
                        </div>

                        <div id='redpack-opened'>
                          <div className='redpack-avatar'>
                            <img src='http://placehold.it/80x80' alt='頭像' width='80' height='80'/>
                          </div>
                        </div>
                    </div>
                </div>
            );
        } else {
            // 顯示獎(jiǎng)勵(lì)金額
            return (
                <div className='redpack-container' id='redpack-container'>
                    <div className='redpack'>
                        <div className='topcontent-open'>
                            <div className='redpack-avatar'>
                                <span id='close'></span>
                            </div>
                            <h1 className='white-text' style={{marginTop: 180}}> {bonus.toFixed(2)} </h1>
                            <span className='redpack-text'>獎(jiǎng)勵(lì)積分已經(jīng)存入您的賬戶</span>
                            <a className='btn-flat white-text' onClick={this._toWallet.bind(this)}
                               style={{textDecoration: 'underline'}}>
                                去我的賬戶查看積分
                            </a>
                        </div>

                        <div id='redpack-opened'>
                          <div className='redpack-avatar'>
                            <img src='http://placehold.it/80x80' alt='頭像' width='80' height='80'/>
                          </div>
                        </div>
                    </div>
                </div>
            );
        }
    }

    stopAnimation() {
        this.setState({animation: false});
    }

    showResult() {
        this.setState({status: 1});
    }

    openRedPacket() {
        this.setState({animation: true});
        setTimeout(this.stopAnimation.bind(this), 3000);
        setTimeout(this.showResult.bind(this), 4000);
    }

    _toWallet() {
      // 跳轉(zhuǎn)到錢包
      window.location.hash = '/wallet';
    }
}

export default ReadPacket;

demo下載地址:redpacket_jb51.rar

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

本篇文章主要介紹了詳解CSS3 rem(設(shè)置字體大小) 教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
本篇文章主要介紹了CSS3 linear-gradient線性漸變生成加號(hào)和減號(hào)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
這篇文章主要介紹了CSS mask-image屬性詳細(xì)介紹(小結(jié))的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
這篇文章主要介紹了css3中的漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
這篇文章主要介紹了淺談css3新單位vw、vh、vmin、vmax的使用詳解的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
這篇文章主要介紹了淺談css3中calc在less編譯時(shí)被計(jì)算的解決辦法的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 粉嫩国产精品一区二区在线观看 | 三级在线视频 | 国产一区二区三区久久久久久久久 | 久久av一区二区三区 | 亚洲一二三区在线观看 | 狠狠躁躁夜夜躁波多野结依 | 成人激情视频 | 毛片高清 | 99re在线视频观看 | 久久9999久久 | 久久伊人一区二区 | 成av在线 | 一区二区三区av | 一区二区三区亚洲视频 | 国产乱码精品一区二区三区中文 | 日本黄色免费大片 | 激情国产 | 新超碰97| 在线中文字幕av | 亚洲欧美国产视频 | 亚洲欧洲日韩精品 中文字幕 | 一区二区三区成人 | 欧美日韩视频 | 国产精品久久久亚洲 | 久久久一区二区三区四区 | 国产成人精品一区二区三区 | 91在线免费视频 | 污污免费网站 | 欧美一区成人 | 亚洲成人一级 | 久久国产区 | 久久免费看 | 日本午夜在线视频 | 成人在线视频网址 | 伊人免费视频二 | 岛国毛片 | 精品免费看 | 丁香婷婷在线视频 | 免费观看黄 | 欧美精品一区二区在线观看 | 少妇精品久久久久久久久久 |