I want to feed a CSS stylesheet or a <style>
block into a Python Dash app. I've attempted to do both below, but neither works for me. The app loads fine, but the text remains black, not green.
import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
from flask import send_from_directory
# define the app
app = dash.Dash()
app.head = [html.Link(rel='stylesheet', href='./static/stylesheet.css'),
('''
<style type="text/css">
h1 {
color:green;
}
</style>
''')]
app.layout = html.Div(html.H1('Hello World!'))
if __name__ == '__main__':
app.run_server(debug=True)
and inside ./static/stylesheet.css
is a file with only this:
h1{
color:green;
}
I've tried having just the stylesheet or just the <style>
tag but neither of those turns the h1 tag green either.
Here is the research I've done to try to solve my issue:
https://github.com/plotly/dash/pull/171
https://dash.plot.ly/external-resources
https://github.com/plotly/dash-recipes/blob/master/dash-local-css-link.py
The only thing I haven't tried (that those links suggest) is to load from an external link (CDN). However I want to be able to load this app offline so that isn't an option.
Including custom CSS or JavaScript in your Dash apps is simple. Just create a folder named assets in the root of your app directory and include your CSS and JavaScript files in that folder. Dash will automatically serve all of the files that are included in this folder.
Dash's component libraries, like dash_core_components and dash_html_components , are bundled with JavaScript and CSS files. Dash automatically checks with component libraries are being used in your application and will automatically serve these files in order to render the application.
CSS learning checklist Create a simple HTML file with basic elements in it. Use the python -m SimpleHTTPServer command to serve it up. Create a <style></style> element within the <head> section in the HTML markup. Play with CSS within that style element to change the look and feel of the page.
Dash is a web app framework that provides pure Python abstraction around HTML, CSS, and JavaScript. Instead of writing HTML or using an HTML templating engine, you compose your layout using Python with the Dash HTML Components module ( dash.
Starting from Dash v0.22, you would include local CSS files as follows
make a assets
folder in the same directory as your app.py
. Put all your .css
and .js
files there.
Initialize the app
object by giving the __name__
as the first argument; use app = dash.Dash(__name__)
instead of app = dash.Dash()
. (reasoning)
Now Dash will automatically load your CSS and JS files. To force a correct loading order (especially important with CSS), it is recommended to name your files as 01_first.css
, 02_some_customization.css
, .. 25_load_this_last.css
. (the loading order is always alphanumerical)
Note: Your custom CSS will be included after the Dash component CSS (source).
For inline CSS, you may use the style
parameter of the html.Component
.
text-align
-> textAlign
, etc.For example:
import dash
import dash_html_components as html
app = dash.Dash(__name__)
app.layout = html.Div(
[html.H1('Demo'), html.H3('Text')],
style={
'textAlign': 'center',
'border': '1px solid red',
},
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With