Dash 常用 HTML 组件
Dash 的核心组件之一是 HTML 组件,这些组件允许你在应用中嵌入标准的 HTML 元素。
本文将详细介绍 Dash 中常用的 HTML 组件。
1. 引入 HTML 组件
在 Dash 的最新版本中,HTML 组件的引入方式有所变化,我们可以直接从 dash
模块中导入 html
组件,而不需要像以前那样从 dash_html_components
中导入。
from dash import html
常用 HTML 组件
组件 | 说明 | 示例代码 |
---|---|---|
html.Div |
创建一个容器(<div> ),用于包裹其他组件 |
html.Div(children=[html.H1("标题"), html.P("这是一个段落。")]) |
html.H1 |
创建一级标题(<h1> ) |
html.H1("一级标题") |
html.H2 |
创建二级标题(<h2> ) |
html.H2("二级标题") |
html.H3 |
创建三级标题(<h3> ) |
html.H3("三级标题") |
html.P |
创建段落(<p> ) |
html.P("这是一个段落。") |
html.Span |
创建行内容器(<span> ),用于包裹行内文本或元素 |
html.Span("这是一段行内文本。") |
html.Br |
创建换行(<br> ) |
html.Div(children=[html.P("第一行"), html.Br(), html.P("第二行")]) |
html.A |
创建超链接(<a> ) |
html.A("点击这里访问 Dash 官网", href="https://dash.plotly.com") |
html.Img |
插入图片(<img> ) |
html.Img(src="https://plotly.com/assets/images/logo.png", height="50px") |
html.Ul |
创建无序列表(<ul> ) |
html.Ul(children=[html.Li("列表项1"), html.Li("列表项2")]) |
html.Ol |
创建有序列表(<ol> ) |
html.Ol(children=[html.Li("第一项"), html.Li("第二项")]) |
html.Li |
创建列表项(<li> ) |
html.Li("列表项") |
html.Button |
创建按钮(<button> ) |
html.Button("点击我", id='my-button') |
html.Label |
创建标签(<label> ),通常与输入组件一起使用 |
html.Label("用户名:"), dcc.Input(id='username', type='text') |
html.Table |
创建表格(<table> ) |
html.Table(children=[html.Tr(children=[html.Th("姓名"), html.Th("年龄")])]) |
html.Tr |
创建表格行(<tr> ) |
html.Tr(children=[html.Th("姓名"), html.Th("年龄")]) |
html.Th |
创建表头(<th> ) |
html.Th("姓名") |
html.Td |
创建表格单元格(<td> ) |
html.Td("张三") |
html.Header |
创建页眉(<header> ) |
html.Header(children=[html.H1("页眉标题")]) |
html.Footer |
创建页脚(<footer> ) |
html.Footer(children=[html.P("版权所有 © 2023")]) |
html.Section |
创建章节(<section> ) |
html.Section(children=[html.H2("章节标题"), html.P("章节内容")]) |
html.Nav |
创建导航栏(<nav> ) |
html.Nav(children=[html.A("首页", href="/"), html.A("关于", href="/about")]) |
html.Main |
创建主要内容区域(<main> ) |
html.Main(children=[html.H1("主要内容")]) |
html.Article |
创建文章区域(<article> ) |
html.Article(children=[html.H2("文章标题"), html.P("文章内容")]) |
html.Aside |
创建侧边栏(<aside> ) |
html.Aside(children=[html.H2("侧边栏"), html.P("侧边栏内容")]) |
html.Details |
创建可折叠内容(<details> ) |
html.Details(children=[html.Summary("点击展开"), html.P("隐藏内容")]) |
html.Summary |
创建可折叠内容的标题(<summary> ) |
html.Summary("点击展开") |
2. 常用的 HTML 组件
2.1 html.Div
html.Div
是 Dash 中最常用的 HTML 组件之一,它用于创建一个 div
元素。div
元素通常用于将内容分组,并且可以通过 CSS 进行样式设置。
实例
html.H1('这是一个标题'),
html.P('这是一个段落。')
])
在这个例子中,html.Div
包含了一个标题 (html.H1
) 和一个段落 (html.P
)。
2.2 html.H1
到 html.H6
html.H1
到 html.H6
用于创建不同级别的标题。H1
是最高级别的标题,H6
是最低级别的标题。
实例
html.H2('这是 H2 标题'),
html.H3('这是 H3 标题'),
html.H4('这是 H4 标题'),
html.H5('这是 H5 标题'),
html.H6('这是 H6 标题')
2.3 html.P
html.P
用于创建一个段落 (<p>
元素)。
实例
2.4 html.A
html.A
用于创建一个超链接 (<a>
元素)。你可以通过 href
属性指定链接的目标 URL。
实例
2.5 html.Img
html.Img
用于在页面中插入图片 (<img>
元素)。你需要通过 src
属性指定图片的 URL。
实例
2.6 html.Ul
和 html.Li
html.Ul
用于创建一个无序列表 (<ul>
元素),而 html.Li
用于创建列表项 (<li>
元素)。
实例
html.Li('列表项 1'),
html.Li('列表项 2'),
html.Li('列表项 3')
])
2.7 html.Ol
html.Ol
用于创建一个有序列表 (<ol>
元素)。
实例
html.Li('第一项'),
html.Li('第二项'),
html.Li('第三项')
])
2.8 html.Br
html.Br
用于在页面中插入一个换行符 (<br>
元素)。
实例
html.Br(),
html.P('这是第二行。')
2.9 html.Hr
html.Hr
用于在页面中插入一条水平线 (<hr>
元素)。
实例
html.Hr(),
html.P('这是下面的内容。')
2.10 html.Span
html.Span
用于创建一个内联容器 (<span>
元素),通常用于对文本的一部分进行样式设置。
实例
html.Span('高亮', style={'color': 'red'}),
' 的段落。')
3. 使用样式
Dash 的 HTML 组件支持通过 style
属性来设置 CSS 样式。style
属性接受一个字典,其中键是 CSS 属性,值是相应的 CSS 值。
实例
children="这是一个带样式的 Div",
style={
'color': 'white',
'backgroundColor': 'blue',
'padding': '10px',
'borderRadius': '5px'
}
)
这段代码使用 Dash 的 html.Div 组件创建了一个带有样式的 div 元素,效果是一个蓝色背景、白色文字、带圆角和内边距的 div。。
html.Div
:创建一个<div>
容器。children
:设置div
的内容为"这是一个带样式的 Div"
。style
:通过 CSS 样式设置div
的外观:color: white
:文字颜色为白色。backgroundColor: blue
:背景颜色为蓝色。padding: 10px
:内边距为 10 像素。borderRadius: 5px
:边框圆角为 5 像素。
实例
以下是一个完整的 Dash 应用实例,展示了如何使用 html.Div 和其他 HTML 组件,并通过 style 属性设置样式。
实例
# 创建 Dash 应用
app = Dash(__name__)
# 定义应用的布局
app.layout = html.Div(
style={
'fontFamily': 'Arial, sans-serif', # 设置全局字体
'padding': '20px', # 设置全局内边距
'maxWidth': '800px', # 设置最大宽度
'margin': '0 auto' # 居中显示
},
children=[
# 标题
html.H1(
"Dash 示例应用",
style={
'color': 'white',
'backgroundColor': 'darkblue',
'padding': '10px',
'borderRadius': '5px',
'textAlign': 'center' # 文字居中
}
),
# 段落
html.P(
"这是一个简单的 Dash 应用示例,展示了如何使用 HTML 组件和样式。",
style={
'fontSize': '16px',
'color': '#333',
'marginTop': '20px'
}
),
# 带样式的 Div
html.Div(
children="这是一个带样式的 Div",
style={
'color': 'white',
'backgroundColor': 'blue',
'padding': '10px',
'borderRadius': '5px',
'marginTop': '20px',
'textAlign': 'center'
}
),
# 按钮
html.Button(
"点击我",
style={
'backgroundColor': 'green',
'color': 'white',
'border': 'none',
'padding': '10px 20px',
'borderRadius': '5px',
'cursor': 'pointer',
'marginTop': '20px'
}
),
# 图片
html.Img(
src="https://dash.plotly.com/assets/images/language_icons/python_50px.svg",
style={
'height': '50px',
'marginTop': '20px',
'display': 'block', # 图片居中
'marginLeft': 'auto',
'marginRight': 'auto'
}
)
]
)
# 运行应用
if __name__ == '__main__':
app.run_server(debug=True)
效果如下:
点我分享笔记