Hi friends,
I am trying to create cards in Dash with ability to flip 180 degrees on click. For that, I have Dash code, some CSS and 4 lines of javascript. Upon running, the app recognizes the CSS (stored in assets folder), but it doesn’t recognize javascript. Any ideas how to do this?
Here is the code:
Dash:
import dash
import dash_bootstrap_components as dbc
import dash_html_components as html
import dash_core_components as dcc
import pandas as pd
import plotly.graph_objs as go
from dash.dependencies import Input, Output
app = dash.Dash(__name__)
card = dbc.Container([
dbc.Row(
[
dbc.Card(
dbc.CardImg(src="/assets/img_avatar3.png", alt="Avatar", style={"width":"100%"}),
className="front"),
dbc.Card(
dbc.CardImg(src="/assets/img_avatar2.png", alt="Avatar", style={"width":"100%"}),
className="back"),
],
className="card",
), ],
className="container",
)
cards = html.Div([card])
app.layout = cards
if __name__ == '__main__':
app.run_server(debug=True)
CSS:
html,
body {
height: 100%;
margin: 0;
}
body {
background: #00a5f7;
display: -ms-flexbox;
display: box;
display: flex;
-o-box-orient: vertical;
flex-direction: column;
-o-box-pack: center;
justify-content: center;
-o-box-align: center;
align-items: center;
}
.container {
width: 300px;
height: 200px;
position: relative;
-webkit-perspective: 800px;
-ms-perspective: 800px;
perspective: 800px;
border-radius: 4px;
}
.card {
width: 100%;
height: 100%;
position: absolute;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
transition: -webkit-transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
transition: transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
transition: transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275), -webkit-transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
border-radius: 6px;
box-shadow: 0 6px 16px rgba(0,0,0,0.15);
cursor: pointer;
}
.card div {
position: absolute;
width: 100%;
height: 100%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
border-radius: 6px;
background: #fff;
display: -ms-flexbox;
display: box;
display: flex;
-o-box-pack: center;
justify-content: center;
-o-box-align: center;
align-items: center;
font: 16px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
color: #47525d;
}
.card .back {
-webkit-transform: rotateY(180deg);
transform: rotateY(180deg);
}
.card.flipped {
-webkit-transform: rotateY(180deg);
transform: rotateY(180deg);
}
Javascript:
$('.container').on('click', function () {
$('.card').toggleClass('flipped');
});
Thanks!!!