ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Axure高亮搜索原型制作:从交互原理到可复用模板

Axure高亮搜索原型制作:从交互原理到可复用模板 在实际产品设计和交互原型制作中搜索功能是用户与信息交互的核心入口。一个优秀的搜索交互原型不仅要能模拟用户输入、点击、回车等基本操作更要能清晰地展示搜索过程中的状态反馈例如输入提示、实时高亮匹配、结果列表变化等。使用 Axure 这类高保真原型工具我们可以构建出无限接近真实产品的交互体验用于用户测试、需求沟通和开发交付。然而很多设计师在制作搜索原型时常常止步于静态的输入框和结果列表忽略了“高亮匹配”这一能极大提升原型说服力和演示效果的关键细节。本文将围绕如何利用 Axure 制作一个具备“高亮搜索”效果的高保真原型模板展开从核心交互逻辑的构建到动态面板的灵活运用再到中继器的数据处理手把手带你实现一个可复用、可配置的搜索原型组件。无论你是希望提升原型演示效果的产品经理还是需要交付高保真交互稿的 UI/UX 设计师掌握这项技能都能让你的原型脱颖而出。1. 理解高亮搜索的原型实现原理在开始动手之前我们需要先厘清在 Axure 中实现“高亮搜索”背后的技术逻辑。Axure 本身并非编程工具但它提供了一套基于事件和交互的逻辑系统允许我们通过组合基础元件和交互动作来模拟复杂功能。1.1 什么是“高亮搜索”高亮搜索是指在用户输入关键词后系统不仅筛选出相关结果还在结果文本中将匹配到的关键词部分以不同的颜色、背景或样式突出显示。例如在搜索“Axure”时结果中的“Axure高保真原型”里的“Axure”几个字会被高亮。这种视觉反馈能帮助用户快速定位信息是提升搜索体验的重要设计。在真实的产品中这通常由前端开发通过 JavaScript 操作 DOM动态替换文本节点中的匹配部分为带样式的 HTML 标签如span class“highlight”Axure/span来实现。在 Axure 中我们没有直接的 DOM 操作能力但可以通过巧妙的元件组合和交互来“模拟”这一视觉效果。1.2 Axure 中的模拟思路Axure 无法直接修改一个文本标签内的部分文字样式。因此我们的核心思路是“替换”而非“修改”。具体来说准备原始数据将所有的搜索结果条目文本预先存放在一个“中继器”元件中。中继器是 Axure 的“数据容器”可以存储多行数据并动态生成对应的元件。处理搜索逻辑当用户在搜索框输入时触发交互。这个交互需要做两件事筛选根据输入的关键词过滤中继器中的数据只显示匹配的条目。高亮对于每一个显示出来的条目将其文本中的关键词部分替换为一个由“高亮样式文本”和“普通样式文本”拼接而成的组合。在 Axure 中我们可以用多个“文本标签”元件横向排列来模拟一个完整的句子。视觉呈现用一个背景为黄色的文本标签来显示被匹配到的关键词部分用默认样式的文本标签来显示其他部分。将这些文本标签组合在一起就形成了视觉上的“高亮”效果。1.3 核心元件与交互概览实现该功能将主要依赖以下 Axure 元件和交互文本框用于接收用户输入。中继器核心数据容器用于存储、筛选和动态生成结果列表。文本标签/矩形作为结果条目的载体同时也是实现高亮效果的基本单元。动态面板用于管理复杂的状态变化例如“无结果”状态的显示与隐藏。交互事件如“文本改变时”、“项目加载时”用于触发筛选和高亮逻辑。局部变量用于在交互过程中临时存储用户输入的关键词。理解了这些基本原理后我们就可以开始着手构建原型了。2. 环境准备与项目结构搭建在开始绘制交互之前确保你有一个合适的工作环境。虽然本文不涉及任何破解或非授权软件的使用但为了获得完整的功能体验建议使用正版 Axure RP 9 或更高版本。低版本可能缺少某些交互动作或中继器功能。2.1 创建新项目与页面打开 Axure RP创建一个新的项目文件。在左侧的页面面板中将默认页面重命名为“高亮搜索演示”。良好的页面结构管理是复杂原型可维护性的基础。2.2 规划元件命名规范在 Axure 中为元件设置清晰的名称是后续设置交互时不出错的关键。我们将采用前缀命名法Input_Keyword: 搜索输入框Repeater_Results: 结果列表中继器DP_NoResult: “无结果”提示动态面板Text_Highlight: 高亮样式文本标签可作为母版或样式Text_Normal: 普通样式文本标签在画布上拖放元件时养成随手在右侧“检视”面板中命名的习惯。2.3 搭建基础界面布局在“高亮搜索演示”页面的画布上依次放置以下元件标题放置一个文本标签写上“高亮搜索原型演示”。搜索框区域拖入一个“文本框”元件作为搜索输入框。将其命名为Input_Keyword。可以在文本框内设置提示文字如“请输入搜索关键词...”。在文本框右侧可以放置一个“搜索图标”按钮使用图标库或矩形绘制为其添加“单击时”触发搜索的交互作为另一种搜索触发方式。结果容器拖入一个“中继器”元件将其命名为Repeater_Results。这将是我们结果列表的模板和数据源。调整中继器的大小使其足够显示多条结果。无结果提示拖入一个“动态面板”元件命名为DP_NoResult。动态面板可以包含多个状态我们用它来管理“显示无结果提示”和“隐藏”两种状态。进入动态面板的“状态1”在里面放置一个文本标签写上“未找到相关结果”。回到主画布选中DP_NoResult在检视面板将其默认设置为“隐藏”。完成后的基础布局应大致包含标题、搜索框、结果列表区域目前是中继器和一个隐藏的无结果提示面板。接下来我们将深入最核心的中继器配置。3. 配置中继器数据与高亮模板中继器是本原型的心脏它负责存储数据、定义列表项样式并在交互中动态更新。3.1 填充中继器数据选中画布上的Repeater_Results中继器双击进入其内部编辑界面。你会看到一个默认的矩形项。在右侧“检视”面板中找到“中继器”区域。这里有一个表格用于添加数据列。我们至少需要两列数据OriginalText存储每条结果的原始完整文本。DisplayText这是一个“计算值”它将根据搜索关键词动态生成包含高亮部分的显示文本。我们稍后通过交互来设置它。先不添加此列。点击“添加列”创建一列命名为OriginalText。在下面的数据行中添加几条示例数据。例如Axure高保真原型设计教程如何使用Axure制作交互流程图高保真原型与低保真原型的区别搜索功能交互设计详解Axure RP 9 动态面板使用技巧这些数据将作为我们的搜索库。3.2 设计中继器项模板中继器内部的矩形或任何元件就是每一项结果的模板。我们需要改造这个模板使其能够显示“拼接”后的高亮文本。删除默认矩形删除中继器里自带的那个灰色矩形。创建文本容器拖入一个“文本标签”元件到中继器内。但注意一个文本标签无法实现部分高亮。因此我们需要一个“容器”来横向排列多个文本片段。拖入一个“矩形”元件无填充无线条作为容器。将其命名为ItemContainer。调整其宽度与中继器宽度一致。关联数据到模板我们的目标是将DisplayText列的内容显示出来。但DisplayText不是普通文本而是一系列带样式的元件组合。Axure 的中继器无法直接绑定这种复杂结构。因此我们需要换一种思路在中继器“项目加载时”的交互中动态地构建显示内容。所以模板本身可以暂时是空的或者只放一个用于占位的文本标签我们将在交互步骤中彻底重绘它。简化模板设计推荐为了清晰我们可以在模板ItemContainer矩形内先放置一个文本标签命名为TextPlaceholder并将其文本设置为[[Item.OriginalText]]。这样在数据加载时我们能先看到原始文本方便调试。后续的交互将替换掉这种显示方式。3.3 编写高亮文本生成交互这是最核心的一步。我们需要为中继器添加“项目加载时”的交互来解析原始文本并根据全局关键词生成高亮显示。选中中继器模板内的ItemContainer或顶层元件。在右侧“交互”面板点击“新建交互”选择“项目加载时”。我们需要一系列动作来完成步骤1获取搜索关键词。添加动作“设置变量值”设置一个“全局变量”如GlobalKeyword的值为元件Input_Keyword的文字。但更优的做法是使用“局部变量”。在交互编辑器中我们可以添加局部变量LVAR1来捕获Input_Keyword的文本值。步骤2清空容器。添加动作“设置文本”目标为ItemContainer本身或内部的TextPlaceholder将其文本设置为空。这是为了每次加载时从头构建。步骤3拆分并处理原始文本。这里需要用到“分割文本”和循环。Axure RP 9 及以上版本支持“循环”动作。添加动作“设置变量值”设置一个局部变量LVAR_Original为[[Item.OriginalText]]。添加动作“设置变量值”设置一个局部变量LVAR_Keyword为局部变量LVAR1的值即输入框的关键词。添加“启用循环”动作对LVAR_Original进行循环处理。在循环中我们需要判断当前片段是否匹配关键词。步骤4在循环内动态创建文本片段。这是难点。Axure 交互不能直接在循环内“创建”新元件。因此我们必须转变思路提前准备好两种样式的文本标签作为“母版”或“隐藏元件”在循环中通过“设置文本”和“移动”动作来复用它们。在画布空白处或动态面板内创建两个隐藏的文本标签母版Text_Normal黑色文字和Text_Highlight黄色背景黑色文字。在“项目加载时”的交互中在循环内部 a. 使用“分割文本”函数判断位置。 b. 如果当前字符段匹配关键词则“设置文本”到Text_Highlight母版的副本然后将其“移动”到ItemContainer内。 c. 如果不匹配则“设置文本”到Text_Normal母版的副本然后“移动”到ItemContainer内。步骤5排列元件。将所有移动到ItemContainer内的文本标签水平排列。这可以通过在移动动作中设置精确坐标或最后使用“置于顶层/底层”和相对位置来粗略实现。更精细的自动排版需要非常复杂的交互对于原型演示手动调整或简单排列通常可以接受。由于在纯交互中实现文本分割、匹配和动态排版极其复杂且性能不佳这通常不是 Axure 原型的最佳实践。更实际的方法是采用“预置多列”法。3.4 实用方案预置多列数据法鉴于动态生成的复杂性一个更可靠且高效的方法是在中继器数据源中预置处理好的列。我们改变思路修改中继器数据列除了OriginalText我们新增多个列如Part1,Part2,Part3,Style1,Style2,Style3。预处理数据对于“Axure高保真原型设计教程”这条数据如果我们搜索“Axure”我们可以手动或通过外部脚本预处理将数据填为Part1:AxureStyle1:Highlight(代表高亮样式)Part2:高保真原型设计教程Style2:Normal(代表普通样式)Part3: (空)Style3: (空)设计模板在模板ItemContainer内横向放置三个文本标签Text1,Text2,Text3。设置交互在“项目加载时”交互中设置Text1的文本为[[Item.Part1]]并根据[[Item.Style1]]的值将其背景色设置为黄色或无色。对Text2,Text3做同样处理。筛选交互在搜索框的“文本改变时”事件中设置中继器的“过滤”条件例如[[Item.OriginalText.indexof(LVAR1)0]]即原始文本包含关键词。这种方法将复杂的文本处理逻辑转移到了数据准备阶段在 Axure 交互层面只做简单的显示和筛选稳定且易于理解。对于原型演示来说准备5-10条示例数据并手动拆分是可行的。我们将采用这种预置多列数据法作为后续步骤的基础。4. 实现搜索过滤与交互联动现在我们有了包含预处理数据的中继器。接下来需要将搜索框的输入与中继器的筛选、无结果提示的显示联动起来。4.1 设置搜索框的输入监听选中主画布上的搜索框Input_Keyword。在“交互”面板新建交互事件选择“文本改变时”。添加动作“筛选”目标为中继器Repeater_Results。在筛选规则中我们需要设置条件。点击“添加规则”。左侧选择值点击“fx”图标插入函数或变量。我们插入[[Item.OriginalText]]。中间选择操作符选择“包含”。右侧选择值点击“fx”图标插入局部变量。点击“添加局部变量”将其设置为“元件文字”并指向Input_Keyword元件。假设变量名为LVAR_Keyword。最终规则应为[[Item.OriginalText]] 包含 [[LVAR_Keyword]]。添加筛选动作后立即添加另一个动作“显示/隐藏”。目标为动态面板DP_NoResult。我们需要根据筛选后的结果数量来决定显示还是隐藏它。这需要用到中继器的“项目数量”。在“显示/隐藏”动作的配置中选择“切换可见性”。点击“添加条件”。条件1如果[[Item.Repeater.visibleItemCount]]“” “0”则“显示”DP_NoResult。条件2否则则“隐藏”DP_NoResult。这样当没有匹配结果时无结果提示面板会自动显示。4.2 设置中继器的项样式交互根据我们采用的“预置多列数据法”需要为中继器模板内的每个文本标签Text1,Text2,Text3设置样式。双击进入中继器Repeater_Results内部。选中模板中的Text1文本标签。在“交互”面板新建交互事件选择“项目加载时”注意这是元件自身的交互与之前中继器容器的交互不同。添加动作“设置文本”将Text1的文本设置为[[Item.Part1]]。再添加一个动作“设置选中/选中状态”。我们将用“选中”状态来代表高亮样式。目标为This(即Text1自身)。选择“选中”状态。点击“添加条件”条件设置为[[Item.Style1]]“” “Highlight”。注意Highlight是你在数据列里填写的值需加引号。为“选中”状态配置样式。在检视面板的“样式”页找到“选中”状态为其设置背景颜色如黄色。对Text2和Text3重复步骤2-6分别绑定Part2/Style2和Part3/Style3。现在当数据加载时每个文本标签会根据对应的Style列的值自动切换是否显示为高亮背景。4.3 添加搜索按钮的交互可选为了更完整的交互我们可以为搜索图标按钮添加点击事件。选中搜索按钮图标。新建交互“单击时”。添加的动作与搜索框“文本改变时”的动作完全一致“筛选”中继器和“显示/隐藏”无结果提示面板。这为用户提供了另一种触发搜索的方式。5. 运行验证与效果测试完成以上步骤后一个具备高亮搜索功能的原型核心就搭建完毕了。现在需要进行全面的测试以确保所有交互按预期工作。5.1 预览测试点击 Axure 工具栏的“预览”按钮或在浏览器中生成 HTML 文件进行查看。初始状态页面加载后应显示所有预设的结果列表且无高亮因为初始搜索框为空Style列可能都是Normal或未触发高亮逻辑。输入搜索在搜索框中输入一个关键词例如“Axure”。预期结果1结果列表应立即刷新只显示包含“Axure”的条目。预期结果2在显示的条目中“Axure”字样应被高亮显示黄色背景。预期结果3如果输入一个不存在于任何OriginalText中的词结果列表应为空同时“未找到相关结果”的提示面板应显示出来。清空搜索删除搜索框中的所有文字。预期结果结果列表应恢复显示所有条目高亮消失无结果提示面板隐藏。测试搜索按钮输入关键词后点击搜索图标按钮效果应与直接输入相同。5.2 关键检查点如果测试结果不符合预期请按以下顺序排查问题现象可能原因检查点输入关键词后列表无任何变化筛选交互未生效1. 检查搜索框的“文本改变时”事件是否已添加“筛选”动作。2. 检查筛选规则是否正确特别是局部变量是否指向了Input_Keyword的“元件文字”。3. 检查中继器数据列名OriginalText是否与筛选规则中[[Item.OriginalText]]完全一致大小写敏感。列表能筛选但无高亮效果高亮样式未应用1. 检查中继器模板内Text1等元件的“项目加载时”交互是否设置。2. 检查“设置选中”动作的条件是否正确[[Item.Style1]]是否等于你数据表中填写的值如Highlight。3. 检查文本标签的“选中”状态样式是否已配置背景色。4. 检查数据表中Part1和Style1等列是否已正确填写。高亮部分错位或显示异常模板布局或数据问题1. 检查中继器模板内Text1,Text2,Text3是否水平紧密排列中间无间隙或重叠。2. 检查数据表中对于某条数据Part1,Part2,Part3拼接起来是否等于OriginalText。3. 如果某部分为空对应的文本标签应设置为空字符串避免显示默认文本。无结果提示不显示或一直显示显示/隐藏逻辑错误1. 检查DP_NoResult动态面板初始是否为“隐藏”。2. 检查搜索框“文本改变时”事件中“显示/隐藏”动作的条件是否正确引用了[[Item.Repeater.visibleItemCount]]。3. 确保条件判断的是“” “0”。5.3 性能与体验优化原型基本功能完成后可以考虑以下优化点以提升演示体验防抖处理在搜索框“文本改变时”事件中可以添加一个“等待”动作如200毫秒然后再执行筛选。这可以避免用户快速输入时频繁触发筛选提升性能。在等待期间可以显示一个“加载中”的提示另一个动态面板。大小写不敏感默认的“包含”筛选是大小写敏感的。要实现不敏感搜索需将OriginalText和关键词都转换为大写或小写再比较。这需要在筛选规则中使用toLowerCase或toUpperCase函数例如[[Item.OriginalText.toUpperCase()]] 包含 [[LVAR_Keyword.toUpperCase()]]。匹配多个关键词更复杂的搜索可以支持空格分隔的多个关键词。这需要更复杂的数据处理和筛选逻辑可能需要在数据预处理阶段就做好标记或使用多个筛选条件。6. 封装为可复用原型模板为了让这个高亮搜索组件能在不同页面和项目中方便地使用我们将其封装为母版。6.1 创建母版在画布上框选所有与高亮搜索相关的元件搜索框Input_Keyword、搜索按钮、中继器Repeater_Results、无结果提示面板DP_NoResult。右键点击选中的元件群组选择“转换为母版”。在弹出的对话框中为母版命名如“M_HighlightSearch”放置行为选择“锁定到母版中的位置”。点击确定后这些元件会从当前页面消失并出现在左侧“母版”面板中。原位置会留下一个母版占位符。6.2 使用与自定义母版拖放使用在任何其他页面直接从“母版”面板将“M_HighlightSearch”拖入画布即可。自定义数据双击画布上的母版实例可以进入母版编辑界面。在这里你可以修改中继器Repeater_Results中的数据以适配新的内容。注意修改母版数据会影响所有使用该母版的实例。自定义样式同样在母版编辑界面你可以修改搜索框的样式、结果项的字体颜色、高亮背景色、无结果提示的文案等使其符合你的项目设计规范。发布设置在生成 HTML 原型时母版会被正确渲染。你可以像使用普通元件一样在多个页面放置这个搜索母版。6.3 模板的局限性及应对这个模板基于“预置数据列”法其局限性在于数据需预处理每条数据都需要人工或通过外部工具拆分成Part和Style列。对于动态或大量数据不友好。关键词固定模板的高亮是针对预设的关键词模式体现在Style列。如果用户输入了数据预处理时未考虑的新关键词将无法高亮。模板只会根据Style列的值显示高亮而不会根据实时输入重新计算。应对策略对于展示固定内容的原型如产品功能列表、文章目录预处理是可行且稳定的。如果需要完全动态的高亮则必须回到第3.3节提到的动态生成思路但那需要编写非常复杂的交互条件并可能影响原型性能。通常这超出了高保真原型的必要范围更接近前端实现。在这种情况下可以在原型中用一个简单的“模拟高亮”效果如整条结果背景变色来代替精确的文本高亮并在设计说明中标注实际效果应由开发实现。7. 扩展方向与最佳实践掌握了基础的高亮搜索原型制作后你可以在此基础上进行扩展使其更加强大和实用。7.1 功能扩展分类搜索在搜索框上方或侧边增加分类筛选标签如“全部”、“教程”、“资源”。为中继器数据增加“Category”列交互上结合搜索关键词和选中分类进行双重筛选。历史记录与热门搜索使用另一个中继器来存储和显示搜索历史或热门关键词。点击历史词时将其值设置到搜索框并触发搜索。异步加载效果模拟网络搜索的延迟。在触发搜索时先显示一个加载动画动态面板等待一段时间如500毫秒后再执行筛选和显示结果的动作。复杂匹配规则通过更复杂的筛选条件函数实现前缀匹配、模糊匹配等。7.2 交互细节优化键盘导航为搜索结果列表添加键盘交互。例如当搜索框聚焦时按“下箭头”键可以选中第一个结果并继续用上下箭头在结果间导航按“回车”键跳转到详情页。悬停与选中状态为中继器项添加“鼠标悬停”和“选中”的交互样式提升可操作性反馈。清空按钮在搜索框内当有内容时显示一个“X”图标点击可清空输入框并重置搜索结果。7.3 团队协作与维护建议命名规范严格遵守元件命名规范如前缀Input_,Btn_,RP_,DP_等使交互逻辑一目了然。详细注释在复杂的交互用例上使用“备注”功能添加说明解释该交互的目的和逻辑便于团队成员或后续维护者理解。版本管理将 Axure 源文件.rp纳入 Git 等版本控制系统管理避免因误操作导致文件损坏或历史版本丢失。设计系统集成如果团队有统一的设计系统将搜索框、按钮、文本样式等元件也创建为母版或样式库确保原型与设计稿的一致性。通过将高亮搜索功能模块化、模板化你不仅完成了一个交互演示更是构建了一个可以在未来项目中快速复用的设计资产。这能显著提升产品原型的开发效率和专业度。
返回列表