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)
效果如下:

 
       
点我分享笔记