How to add/create a custom loader with Dash plotly?

Solution 1
.dash-spinner {
  background-image: url("http://i.stack.imgur.com/SBv4T.gif");
  background-size: contain;
  background-repeat: no-repeat;
}

.dash-spinner * {
  display: none !important;
}
from dash import Dash
import time
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output


app = Dash(__name__)
app.layout = html.Div(
    children=[
        html.H3("Edit text input to see loading state"),
        dcc.Input(id="loading-input-1", value="Input triggers local spinner"),
        dcc.Loading(
            id="loading-1", type="default", children=html.Div(id="loading-output-1")
        ),
    ],
)


@app.callback(
    Output("loading-output-1", "children"),
    Input("loading-input-1", "value"),
    prevent_initial_call=True,
)
def input_triggers_spinner(value):
    time.sleep(2)
    return value


if __name__ == "__main__":
    app.run_server()
Solution 2
.gif-loading {
  margin: 1rem auto;
  width: 1280px;
  height: 720px;
  text-align: center;
  font-size: 10px;
  background-image: url("loading.gif");
  background-size: contain;
  background-repeat: no-repeat;
}
dcc.Loading(
            id="loading-1", type="default", className='gif-loading', children=html.Div(id="loading-output-1")
        ),