'Align dash core components horizontally

I want to align two Dropdown menus and a DatePickerRange horizontally. But with the following code:

import dash
import dash_core_components as dcc
import dash_html_components as html

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

style_dict = dict(width='100%',
                  border='1.5px black solid',
                  height='50px',
                  textAlign='center',
                  fontSize=25)

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)


app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),

    # placeholder
    html.Div(style={'width': '2%', 'display': 'inline-block'}),

    html.Div(
        dcc.Dropdown(
            id = 'start_hour',
            options = [{'label': i, 'value': i} for i in list(range(0,24))],
            style=style_dict,
    ), style={'width': '20%', 'display': 'inline-block'}),

    # placeholder
    html.Div(style={'width': '2%', 'display': 'inline-block'}),
              
    html.Div(                         
    dcc.DatePickerRange(
        id='date_picker_range',
        style=style_dict
    ), style={'width': '14%', 'display': 'inline-block', 'fontSize': 20}),

    # placeholder
    html.Div(style={'width': '2%', 'display': 'inline-block'}),
    
    html.Div(
        dcc.Dropdown(
            id = 'end_hour',
            options = [{'label': i, 'value': i} for i in list(range(0,24))],            
            style=style_dict                
    ), style={'width': '20%', 'display': 'inline-block'}),        

])

if __name__ == '__main__':
    app.run_server(debug=False, use_reloader=False)

I got this layout:

enter image description here

If I zoom in I got this:

enter image description here

Is it possible to force the components to be aligned at the top edge, no matter how I zoom in or out?

As browser I use Firefox.



Solution 1:[1]

I had a problem similar to the one you are describing. I was creating a dashboard that looked like this:

dcc components without proper alignement

As you can see in the image, my dcc components, as well as their titles were not aligned correctly. I tried adding the style parameter verticalAlign and it worked as I expected. This is how the dashboard looked after adding that style parameter:

dcc components aligned

I'm attaching my dashboard Layout code so you can see where I placed the parameter mentioned:

## Dashboard layout
app.layout = html.Div( ## Master div
    [
        html.Div( ## Dashboard title
            [
                dcc.Markdown(dash_title)
            ]
        ),
        html.Div( ## Select menus
            [
                html.Div( ## Stock select
                    [
                        dcc.Markdown(dash_stock_sel),
                        dcc.Dropdown(
                            id="select_stock",
                            options=[{"label": cmp, "value": tickers_base[cmp]["symbol"]} for cmp in tickers_base],
                            value="TSLA"
                        )
                    ],
                    style={
                        "display": "inline-block",
                        "width": "20%"
                    }
                ),
                html.Div( ## Date select dcc components
                    [
                        dcc.Markdown(dash_date_sel),
                        dcc.DatePickerRange(
                            id="select_dates",
                            min_date_allowed=date(2015, 1, 1),
                            max_date_allowed=date.today(),
                            initial_visible_month=date(2015, 1, 1),
                            end_date=date.today()
                        )
                    ],
                    style={
                        "display": "inline-block",
                        "width": "30%",
                        "margin-left": "20px",
                        "verticalAlign": "top"
                    }
                ),
            ]
        ),
        html.Div( ## Stock prices graph
            [
                dcc.Graph(
                    id="cstock_graph",
                    figure=stock_graph(def_company, datareader_api, def_start, def_end)
                )
            ]
        )
    ]
)

I hope this answer helps!

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 marc_s