组件工坊:Reflex 组件库 100 例
·
课程概览
布局
·
Box
·
Flex
·
Stack
·
Grid
·
Container
·
Section
·
Center
·
Spacer
·
Separator
·
Card
·
Inset
·
Aspect Ratio
·
Fragment
排版
·
Text
·
Heading
·
Link
·
Code
·
Markdown
·
Blockquote
·
Quote
·
Strong
·
Em
·
Kbd
表单
·
Button
·
Input
·
Text Area
·
Checkbox
·
Switch
·
Radio Group
·
Select
·
Slider
·
Form
·
Upload
数据展示
·
Badge
·
Avatar
·
Icon
·
Callout
·
List
·
Data List
·
Code Block
·
Progress
·
Spinner
·
Scroll Area
·
Moment
展开与切换
·
Tabs
·
Accordion
·
Segmented Control
浮层
·
Tooltip
·
Popover
·
Hover Card
·
Dialog
·
Alert Dialog
·
Drawer
·
Dropdown Menu
·
Context Menu
·
Toast
动态渲染
·
Cond
·
Match
·
Foreach
·
Auto Scroll
媒体
·
Image
·
Audio
·
Video
表格与数据网格
·
Table
·
Data Table
·
Data Editor
图表
·
Area Chart
·
Bar Chart
·
Line Chart
·
Composed Chart
·
Pie Chart
·
Radar Chart
·
Radial Bar Chart
·
Scatter Chart
·
Funnel Chart
·
Treemap
·
Sankey Chart
·
Error Bar
图表部件
·
Axis
·
Cartesian Grid
·
Chart Tooltip
·
Legend
·
Label
·
Reference
·
Brush
其他图表库
·
Plotly
·
Pyplot
HTML 元素
·
HTML
·
HTML Text
·
HTML Layout
·
HTML Forms
·
HTML Media
·
HTML Tables
·
SVG
其他工具
·
Theme
·
Skeleton
·
Clipboard
·
Html Embed
·
Script
·
Memo
rx.text.em官方文档
工坊订单
请在优惠券说明里,把“所有”商品和“包括”折扣商品这两个词读得重一些。
rx.text.em 标出说话时要加重语气的词。它渲染为 HTML <em> 标签,显示为斜体。同一句话因重读的词不同而意思不同时,就用它。
We had to do something about it.
rx.text("We ", rx.text.em("had"), " to do something about it.")Em 没有大小、颜色之类的外观属性,沿用外层 rx.text 的大小和颜色。因此本页没有属性实验台,而是放了由 State 驱动的示例。
| 属性 | 取值 | 默认值 | 用途 |
|---|---|---|---|
| 子元素 | 字符串、State 值、组件 | 必填 | 要加重语气的文字 |
此外还接受 id、title、lang 等 HTML 通用属性和基础事件。在 Radix 主题中,Em 显示为倾斜的衬线字体(主题的 --em-font-family)。
点击下面的单词按钮,换一个要重读的词。“I never said she took it”这句话,强调的词不同,意思就会变成“不是我说的,是别人说的”“拿走它的不是她,是别人”等等。用文字传达这种差别,正是 Em 的作用。
I never said she took it
class EmStressState(rx.State):
words: list[str] = ["I", "never", "said", "she", "took", "it"]
stressed: int = 1
@rx.event
def stress(self, i: int):
self.stressed = i
rx.flex(
rx.text(
rx.foreach(
EmStressState.words,
lambda w, i: rx.fragment(rx.cond(i == EmStressState.stressed, rx.text.em(w), rx.text(w, as_="span")), " "),
),
size="6",
),
rx.flex(
rx.foreach(
EmStressState.words,
lambda w, i: rx.button(
w,
size="1",
variant=rx.cond(i == EmStressState.stressed, "solid", "soft"),
on_click=EmStressState.stress(i),
),
),
spacing="2",
wrap="wrap",
),
direction="column",
spacing="3",
)书名、外来语这类“不是加重语气,只是外观倾斜”的情况,用 rx.text(…, as_="i")。<em> 会在 HTML 中留下“强调”的含义,<i> 则不带含义,只改变外观。
Emphasis: I really liked it.
Italic only: Moby-Dick is a novel.
rx.flex(
rx.text("Emphasis: I ", rx.text.em("really"), " liked it."),
rx.text("Italic only: ", rx.text("Moby-Dick", as_="i"), " is a novel."),
direction="column",
spacing="3",
)Em 同样使用外层文字的大小和颜色。把 Em 放进 Strong 里,就能做出既重要又加重语气的部分。
Small: we had to.
Large: we had to.
Mixed: this is very very important.
rx.flex(
rx.text("Small: we ", rx.text.em("had"), " to.", size="2"),
rx.text("Large: we ", rx.text.em("had"), " to.", size="6", color_scheme="indigo"),
rx.text("Mixed: this is ", rx.text.strong("very ", rx.text.em("very")), " important."),
direction="column",
spacing="3",
)句子保持原样,只给顾客容易误解的两个词套上 Em。
The coupon works on any item in the store, including items already on sale.
rx.card(
rx.text(
"The coupon works on ",
rx.text.em("any"),
" item in the store, ",
rx.text.em("including"),
" items already on sale.",
size="3",
),
max_width="420px",
)工坊笔记
rx.text.em("…") 是加重语气的词(<em>),作为子元素放进 rx.text。
没有外观属性,沿用外层文字的大小和颜色。
只想让外观倾斜、不带含义,用 rx.text(…, as_="i")。
重要用 rx.text.strong,语气用 rx.text.em,两者也能嵌套。
订阅新课时和新课程通知
本课程新增课时或推出后续课程时,我们会发邮件通知你。
问答
关于本课有任何疑问都可以在这里留言。所有语言版本页面的提问会汇集在一起。