- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Dash 允许使用我们自己的 CSS 样式表。但是,如果您在科学领域并且不熟悉 CSS,则可以使用 Bootstrap 组件,这使得样式和页面布局非常容易组合在一起。
这是在破折号中创建侧边栏的标准示例:"""
This app creates a simple sidebar layout using inline style arguments and the
dbc.Nav component.
dcc.Location is used to track the current location. There are two callbacks,
one uses the current location to render the appropriate page content, the other
uses the current location to toggle the "active" properties of the navigation
links.
For more details on building multi-page Dash applications, check out the Dash
documentation: https://dash.plot.ly/urls
"""
import dash
import dash_bootstrap_components as dbc
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
app = dash.Dash(external_stylesheets=[dbc.themes.BOOTSTRAP])
# the style arguments for the sidebar. We use position:fixed and a fixed width
SIDEBAR_STYLE = {
"position": "fixed",
"top": 0,
"left": 0,
"bottom": 0,
"width": "16rem",
"padding": "2rem 1rem",
"background-color": "#f8f9fa",
}
# the styles for the main content position it to the right of the sidebar and
# add some padding.
CONTENT_STYLE = {
"margin-left": "18rem",
"margin-right": "2rem",
"padding": "2rem 1rem",
}
sidebar = html.Div(
[
html.H2("Sidebar", className="display-4"),
html.Hr(),
html.P(
"A simple sidebar layout with navigation links", className="lead"
),
dbc.Nav(
[
dbc.NavLink("Page 1", href="/page-1", id="page-1-link"),
dbc.NavLink("Page 2", href="/page-2", id="page-2-link"),
dbc.NavLink("Page 3", href="/page-3", id="page-3-link"),
],
vertical=True,
pills=True,
),
],
style=SIDEBAR_STYLE,
)
content = html.Div(id="page-content", style=CONTENT_STYLE)
app.layout = html.Div([dcc.Location(id="url"), sidebar, content])
# this callback uses the current pathname to set the active state of the
# corresponding nav link to true, allowing users to tell see page they are on
@app.callback(
[Output(f"page-{i}-link", "active") for i in range(1, 4)],
[Input("url", "pathname")],
)
def toggle_active_links(pathname):
if pathname == "/":
# Treat page 1 as the homepage / index
return True, False, False
return [pathname == f"/page-{i}" for i in range(1, 4)]
@app.callback(Output("page-content", "children"), [Input("url", "pathname")])
def render_page_content(pathname):
if pathname in ["/", "/page-1"]:
return html.P("This is the content of page 1!")
elif pathname == "/page-2":
return html.P("This is the content of page 2. Yay!")
elif pathname == "/page-3":
return html.P("Oh cool, this is page 3!")
# If the user tries to reach a different page, return a 404 message
return dbc.Jumbotron(
[
html.H1("404: Not found", className="text-danger"),
html.Hr(),
html.P(f"The pathname {pathname} was not recognised..."),
]
)
if __name__ == "__main__":
app.run_server(port=8888)
Bootstrap nav pills 是导航栏中的元素。它们是导航组件,允许用户浏览布局中的各种选项。 example
在 CSS 脚本中 example , pills 有不同的组件,可以是样式,例如:
/* CSS used here will be applied after bootstrap.css */
body {
background: #000;
}
.nav-pills a {
color: #ffffff
}
.nav-pills a:hover {
color: #560000;
border-radius: 0px;
}
.nav-pills .active a:hover {
color: #560000;
border-radius: 0px;
}
.nav>li>a:hover,
.nav>li>a:focus {
color: #560000;
border-radius: 0px;
}
我想通过我的 python 脚本更新药丸样式,并在悬停时更改药丸的颜色,当它处于事件状态时,我想更改字体类型及其文本颜色。我仍然熟悉 CSS,因此我宁愿通过 python 脚本更新它。通过设置样式参数,我确实成功地覆盖了 CSS 样式。
根据 Dash Bootstrap components我可以按如下所述将药丸样式设置为导航项目:
pills( bool 值,可选):将 pill 样式应用于导航项。事件项目将由药丸指示。
我已经这样编辑了代码:
sidebar = html.Div(
[
html.H2("Sidebar", className="display-4"),
html.Hr(),
html.P(
"A simple sidebar layout with navigation links", className="lead"
),
dbc.Nav(
[
dbc.NavItem(dbc.NavLink("Page 1", href="/page-1", id="page-1-link"), style={"background-color": "grey"}),
dbc.NavLink("Page 2", href="/page-2", id="page-2-link"),
dbc.NavLink("Page 3", href="/page-3", id="page-3-link"),
],
vertical=True,
pills=True,
# className="nav navbar-nav",#"nav nav-pills hidden-sm",
#style ={"li:hover" =""}
),
],
style=SIDEBAR_STYLE,
)
这只会改变背景颜色,而不会在鼠标悬停或处于事件状态时改变药丸颜色和字体颜色。 python中的语法是什么?我在代码中尝试了很多选项,并且在 python 中搜索了样式语法,但我仍然没有遇到等效的 python 样式语法 example .
我最接近更改 pill 样式的方法是更改可用的 Bootstrap 样式表:
app = dash.Dash(external_stylesheets=[dbc.themes.FLATLY])
您可以在 html 中查看各种主题及其代码 here
最佳答案
我强烈建议您在 css 样式表中采用处理伪类样式的方法,例如 :hover
和 :active
。
要包含 css 样式表,请参阅文档 here .基本上你只需要在你的根目录中有一个 assets
文件夹,并将 .css
文件放在里面。
因此,您可以向每个 NavLink
添加一个 className
属性,使用样式表中的类定位元素并添加 :hover
和 :active
根据需要设置样式。
在你的 Dash 布局中:
dbc.NavLink("Page 1", href="/page-1", id="page-1-link", className="page-link"),
在您的 assets
目录中的一个 css 文件中:
.page-link:hover {
background-color: green;
}
.page-link:active {
background-color: blue;
}
您还可以在 assets
文件夹中包含脚本,并使用 Javascript 设置元素样式(如果您需要以 css 无法实现的方式使其动态化)。
为什么您的方法无法按照您对内联样式的预期方式工作,请参阅 CSS Pseudo-classes with inline styles .
现在可以使用 Location
监听路由变化并根据当前路由改变每个 NavLink
的事件状态。我再次推荐更简单且更易于扩展的 css 方法,以下方法也不适用于悬停,但您可以执行类似的操作来更改单击时的样式:
from dash import Dash
import dash_bootstrap_components as dbc
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
app = Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
links = [
{"id": "page-1-link", "href": "/page-1", "link-text": "Page 1"},
{"id": "page-2-link", "href": "/page-2", "link-text": "Page 2"},
{"id": "page-3-link", "href": "/page-3", "link-text": "Page 3"},
]
sidebar = html.Div(
[
dcc.Location(id="url", refresh=False),
html.H2("Sidebar", className="display-4"),
html.Hr(),
html.P("A simple sidebar layout with navigation links", className="lead"),
dbc.Nav(
[
dbc.NavItem(
dbc.NavLink(link["link-text"], href=link["href"], id=link["id"])
)
for link in links
],
vertical=True,
pills=True,
),
],
)
app.layout = sidebar
@app.callback(
[Output(link["id"], "active") for link in links],
Input("url", "pathname"),
prevent_initial_call=True,
)
def display_page(pathname):
actives_list = [False for link in links]
if pathname == "/":
return actives_list
actives_list[int(pathname[-1]) - 1] = True
return actives_list
if __name__ == "__main__":
app.run_server(port=8888)
关于plotly-dash - 使用 dash python 更改 bootstrap nav-pills 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62106013/
我想更改 plotly(_express) 图中的构面标签。剧情如下: import plotly.express as px tips = px.data.tips() fig = px.scatt
我正在尝试使用 plotly.js 在 map 上绘制数据。我知道您可以通过以下方式获得一个国家/地区的 map : layout = dict( title = '',
关于 this page暗示他们有一些默认的色标,例如“Viridis”。我终其一生都找不到一个网页来记录这些命名的色标是什么。 最佳答案 问题是我是英国人并且正确拼写了颜色。色标可在 https:/
在下面的示例中,我在一个 plotly 子图中有四个箱形图。此示例中的四个箱形图中的每一个都有 3 个变量:股票、债券和现金。在每个箱线图中,我希望股票以相同的颜色(例如蓝色)显示,债券以相同的颜色(
我有一个 plotly plot,当数据发生变化时,我想删除 plot 并生成一个新 plot。为此,我这样做: $('#heatmap2').empty() 然后我重新生成我的 plotly 。但是
有许多问题和答案以一种或另一种方式涉及这个主题。有了这个贡献,我想清楚地说明为什么一个简单的方法,比如 marker = {'color' : 'red'}将适用于 plotly.graph_obje
这可能是一个非常愚蠢的问题,但是当使用 .plot() 绘制 Pandas DataFrame 时,它非常快并且会生成具有适当索引的图形。一旦我尝试将其更改为条形图,它似乎就失去了所有格式并且索引
我用 plotly (express) 生成了很多图像,并将它们以 png 格式保存在本地目录中。我想创建一个带有 plotly dash 的仪表板。我生成的图像有很多依赖关系:这就是我不想将代码包含
最近,我正在学习Plotly express和Altair/Vega-Lite进行交互式绘图。他们两个都令人印象深刻,我想知道他们的优点和缺点是什么。尤其是对于创建交互式地块,它们之间有什么大差异,何
在 plotly 中,我可以创建一个直方图,例如in this example code from the documentation : import plotly.express as px df
来自 Matlab 我正在努力弄清楚为什么以下不起作用: plot(x=rand(10),y=rand(10)) 正确生成图表。 x=rand(10) y=rand(10) plot(x,y) 产生错
我和一位同事一直在尝试设置自定义图例标签,但到目前为止都失败了。下面的代码和详细信息 - 非常感谢任何想法! 笔记本:toy example uploaded here 目标:将图例中使用的默认比率值
我正在使用 Plotly python 库生成一个带有几个 fiddle 图和几个填充散点图的图形。无论什么订单我都有个人fig.add_trace在我的代码中调用, fiddle 图总是在散点图后面
我将图表的大小配置为 Shiny 但图表之间仍有空白区域 它们在配置高度和宽度之前显示为旧区域 这是我的代码 plot1_reactive % layout(xaxis = xaxis,
我想弄清楚如何组织一个包含多个应用程序的破折号项目。所有示例都是单页应用程序,我希望将多个破折号组织为一个项目,由 gunicorn 运行(在 docker 容器内): dash-project/
我之前做了一些解决方法来在 Julia Plotly 中实现精彩的子图,但目前正在努力解决一个更复杂的问题。下面有三种方法可以完成这项工作。 draw1 完美地完成了,但不适用于我的情况,draw2
我的子图之间有很大的空间。在 matplotlib 中,有一种称为紧密布局的布局可以消除这种情况。 plotly 有没有类似的布局?我正在 iPython 笔记本中绘图,因此空间有限。请参阅下图中的空
我正在尝试获取我提前生成的 cbrewer Reds 颜色图。但是,当我尝试使用它时,我仍然得到一些默认的颜色图。我究竟做错了什么?这是 plotly :https://plot.ly/~smirno
我一直在使用 plot.ly 并希望将多个跟踪分组到图例中的同一个键。 我有显示有关特定用户的数据的子图。我想让每个键代表一个用户,而不是 user.data1、user.data2 等。 这是我现在
我有下面这张图,我想把除点和三角形以外的所有东西都去掉,意思是横纵轴上的数字和小竖线,我该怎么做? 这是图片: 这是我的代码: x0 = np.average(triangleEdges,axis=0
我是一名优秀的程序员,十分优秀!