繁体   English   中英

单击按钮时如何添加加载动画?

[英]How to add a Loading Animation when a Button is Clicked?

对于我的网站,单击按钮时,屏幕模糊。 我现在试图在按下按钮时在模糊的顶部添加一个旋转圆圈的加载动画,但是,我遇到了很多问题。 当我尝试也要单击按钮时,请单击“ isActive”,然后使加载程序类div为isActive,则整个网站崩溃了。

js文件代码:

import React from "react";
import "./App.scss";

class App extends React.Component {

    state = { fadingOut: false }
    fadeOut = () => this.setState({fadingOut: true});


    render() {
        return (
            <div className="App" style={this.state.fadingOut ? {filter: 
            'blur(0.35vw)'} : undefined }
            > 

                <div className="top-bar">

                <div className="title">
                    .datapoems
                </div>

                <img className="logo" src="./logo.png"/>

                </div>

                <div className="container">
                    <div className="sloganLineOne">Poem Theme</div>
                    <div className="sloganLineTwo">Detector</div>
                    <textarea className="inputField" placeholder="Please Enter 
                     Your Poem Here..."></textarea>
                    <button className="button" onClick= 
                     {this.fadeOut}>Enter</button>
                    <img className="leftTriangle" 
                     src="./leftSideTriangle.png"/>
                    <img className="rightTriangle" 
                     src="./rightSideTriangle.png"/>
                </div>
            </div>
        );
    }
}

export default App;

scss加载器代码:

 .loader {
                border: 16px solid #f3f3f3;
                border-radius: 50%;
                border-top: 16px solid blue;
                border-bottom: 16px solid blue;
                width: 120px;
                height: 120px;
                -webkit-animation: spin 2s linear infinite;
                animation: spin 2s linear infinite;
              }

              @-webkit-keyframes spin {
                0% { -webkit-transform: rotate(0deg); }
                100% { -webkit-transform: rotate(360deg); }
              }

              @keyframes spin {
                0% { transform: rotate(0deg); }
                100% { transform: rotate(360deg); }
              }

我接受了您的代码,并对其进行了一些修改,以实现所需的结果(基于我对您的问题的理解)。

class App extends Component {
  state = { fadingOut: false };
  fadeOut = () => this.setState({ fadingOut: true });

  render() {
    const contentStyle = this.state.fadingOut
      ? { filter: "blur(0.35vw)" }
      : undefined;
    const loadingIndicator = this.state.fadingOut ? (
      <div style={loaderStyle}>-- Loading icon --</div>
    ) : null;

    return (
      <div className="App" style={{ position: "relative" }}>
        <div style={contentStyle}>
          <div className="top-bar">
            <div className="title">.datapoems</div>
            <img className="logo" src="./logo.png" />
          </div>
          <div className="container">
            <div className="sloganLineOne">Poem Theme</div>
            <div className="sloganLineTwo">Detector</div>
            <textarea
              className="inputField"
              placeholder="Please Enter Your Poem Here..."
            />
            <button className="button" onClick={this.fadeOut}>
              Enter
            </button>
            <img className="leftTriangle" src="./leftSideTriangle.png" />
            <img className="rightTriangle" src="./rightSideTriangle.png" />
          </div>
        </div>
        {loadingIndicator}
      </div>
    );
  }
}

const loaderStyle = {
  position: "absolute", // or position: "fixed"
  top: 0,
  bottom: 0,
  left: 0,
  right: 0,
  display: "flex",
  justifyContent: "center",
  alignItems: "center"
};

https://codesandbox.io/s/react-example-353dg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM