列表 Svelte 组件
列表视图是功能强大且用途广泛的用户界面组件,在应用程序中经常使用。列表视图以可滚动的多行列表的形式呈现数据,这些列表可以分为多个部分/组。
列表视图有很多用途
- 让用户浏览具有层次结构的数据
- 显示项目的索引列表
- 以视觉上不同的分组方式显示详细信息和控件
- 显示可选择的选项列表
列表 Svelte 组件代表 Framework7 的 列表视图 组件。
列表组件
包含以下组件
List
- 主列表视图元素ListGroup
- 列表组元素
列表属性
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
<List> 属性 | |||
ul | 布尔值 | true | 用 <ul> 包裹子元素。建议与嵌套的 <ListGroup> 一起使用时禁用 |
inset | 布尔值 | 使列表内嵌。insetIos 和 insetMd 属性可用于特定主题的布局 | |
xsmallInset | 布尔值 | 当应用程序宽度 >= 480px 时使列表内嵌。xsmallInsetIos 和 xsmallInsetMd 属性可用于特定主题的布局 | |
smallInset | 布尔值 | 当应用程序宽度 >= 568px 时使列表内嵌。smallInsetIos 和 smallInsetMd 属性可用于特定主题的布局 | |
mediumInset | 布尔值 | 当应用程序宽度 >= 768px 时使列表内嵌。mediumInsetIos 和 mediumInsetMd 属性可用于特定主题的布局 | |
largeInset | 布尔值 | 当应用程序宽度 >= 1024px 时使列表内嵌。largeInsetIos 和 largeInsetMd 属性可用于特定主题的布局 | |
xlargeInset | 布尔值 | 当应用程序宽度 >= 1200px 时使列表内嵌。xlargeInsetIos 和 xlargeInsetMd 属性可用于特定主题的布局 | |
strong | 布尔值 | 为列表添加额外的突出显示。strongIos 和 strongMd 属性可用于特定主题的布局 | |
outline | 布尔值 | 使列表轮廓线(带边框)。outlineIos 和 outlineMd 属性可用于特定主题的布局 | |
dividers | 布尔值 | 在列表项之间添加分隔线(边框)。dividersIos 和 dividersMd 属性可用于特定主题的布局 | |
mediaList | 布尔值 | false | 启用 媒体列表 |
linksList | 布尔值 | false | 启用简化的 链接列表 |
simpleList | 布尔值 | false | 启用简化的 简单列表 |
sortable | 布尔值 | false | 启用 可排序列表 |
sortableOpposite | 布尔值 | false | 在相反的一侧呈现可排序处理程序(在 LTR 中在左侧) |
sortableTapHold | 布尔值 | false | 使列表项在点击并按住(长按)时可排序。在这种情况下,应用程序将依赖于自定义的 taphold 事件。为了使它正常工作,请确保你也启用了 touch.tapHold: true 应用程序参数 |
sortableEnabled | 布尔值 | false | 启用可排序列表的排序 |
sortableMoveElements | 布尔值 | 如果传递,它将覆盖相同的 sortable.moveElements 全局应用程序参数。 | |
menuList | 布尔值 | 启用 菜单列表 | |
accordion | 布尔值 | false | 启用 手风琴列表 |
accordionOpposite | 布尔值 | false | 在相反的一侧呈现手风琴折叠图标(在 LTR 中在左侧) |
contactsList | 布尔值 | false | 通过添加必要的额外类进行样式设置,启用 联系人列表 |
form | 布尔值 | false | 在列表块上启用 <form> 标签,而不是 <div> |
formStoreData | 布尔值 | false | 为当前表单启用 表单存储 |
noChevron | 布尔值 | false | 删除嵌套列表项链接上的“折叠”图标 |
chevronCenter | 布尔值 | false | 将嵌套媒体列表项上的“折叠”图标设置在中心(垂直) |
tab | 布尔值 | false | 当块用作选项卡时,添加额外的“tab”类 |
tabActive | 布尔值 | false | 当块用作选项卡时,添加额外的“tab-active”类,并将其设为活动选项卡 |
virtualList | 布尔值 | false | 启用虚拟列表 |
virtualListParams | 对象 | 带有 虚拟列表参数 的对象 | |
<ListGroup> 属性 | |||
mediaList | 布尔值 | false | 为该组启用 媒体列表 |
sortable | 布尔值 | false | 为该组启用 可排序列表 |
sortableTapHold | 布尔值 | false | 使列表项在点击并按住(长按)时可排序。在这种情况下,应用程序将依赖于自定义的 taphold 事件。为了使它正常工作,请确保你也启用了 touch.tapHold: true 应用程序参数 |
simpleList | 布尔值 | false | 为该组启用简化的 简单列表 |
列表事件
事件 | 描述 |
---|---|
<List> 事件 | |
tabShow | 当列表块-选项卡变得可见/活动时将触发事件 |
tabHide | 当列表块-选项卡变得不可见/非活动时将触发事件 |
submit | 当列表用作表单(启用 form 属性)时,在列表表单提交时将触发事件 |
<List> 可排序特定事件 | |
sortableEnable | 启用可排序模式时将触发事件 |
sortableDisable | 禁用可排序模式时将触发事件 |
sortableSort | 用户在排序元素的新位置释放排序元素后将触发事件。event.detail 将包含一个带有 from 和 to 属性的对象,其中包含排序的列表项的起始/新索引号 |
<List> 虚拟列表特定事件 | |
virtualItemBeforeInsert | 将项目添加到虚拟文档片段之前将触发事件 |
virtualItemsBeforeInsert | 在当前 DOM 列表被删除以及插入新文档之前将触发事件 |
virtualItemsAfterInsert | 插入带有项目的新文档片段后将触发事件 |
virtualBeforeClear | 在当前 DOM 列表被删除并用新的文档片段替换之前将触发事件 |
列表插槽
列表 Svelte 组件(<List>
)具有用于自定义元素的额外插槽
before-list
- 元素将插入列表视图的开头,并在<ul>
主列表之前after-list
- 元素将插入列表视图的末尾,并在<ul>
主列表之后list
- 元素将插入<ul>
主列表元素内部
虚拟列表
有关虚拟列表的使用和示例,请查看 虚拟列表 Svelte 组件 文档。
可排序列表
有关可排序列表的使用和示例,请查看 可排序 Svelte 组件 文档。
手风琴列表
有关手风琴列表的使用和示例,请查看 手风琴 Svelte 组件 文档。
示例
list.svelte
<script>
import {
Navbar,
Page,
BlockTitle,
Block,
List,
ListItem,
ListGroup,
Toggle,
} from 'framework7-svelte';
</script>
<!-- svelte-ignore a11y-missing-attribute -->
<!-- svelte-ignore a11y-invalid-attribute -->
<Page>
<Navbar title="List View" />
<Block>
<p>
Framework7 allows you to be flexible with list views (table views). You can make them as
navigation menus, you can use there icons, inputs, and any elements inside of the list, and
even make them nested:
</p>
</Block>
<BlockTitle>Simple List</BlockTitle>
<List dividersIos simpleList>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Strong List</BlockTitle>
<List dividersIos simpleList strong>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Strong Outline List</BlockTitle>
<List dividersIos simpleList strong outline>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Strong Inset List</BlockTitle>
<List dividersIos simpleList strong inset>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Strong Outline Inset List</BlockTitle>
<List dividersIos simpleList strong outline inset>
<ListItem title="Item 1" />
<ListItem title="Item 2" />
<ListItem title="Item 3" />
</List>
<BlockTitle>Simple Links List</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem title="Link 1" link="#" />
<ListItem title="Link 2" link="#" />
<ListItem title="Link 3" link="#" />
</List>
<BlockTitle>Data list, with icons</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem title="Ivan Petrov" after="CEO"><i slot="media" class="icon icon-f7" /></ListItem>
<ListItem title="John Doe" badge="5"><i slot="media" class="icon icon-f7" /></ListItem>
<ListItem title="Jenna Smith"><i slot="media" class="icon icon-f7" /></ListItem>
</List>
<BlockTitle>Links</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem link="#" title="Ivan Petrov" after="CEO">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="John Doe" after="Cleaner">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="Jenna Smith"><i slot="media" class="icon icon-f7" /></ListItem>
</List>
<BlockTitle>Links, Header, Footer</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem link="#" header="Name" title="John Doe" after="Edit">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" header="Phone" title="+7 90 111-22-3344" after="Edit">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" header="Email" title="john@doe" footer="Home" after="Edit">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" header="Email" title="john@framework7" footer="Work" after="Edit">
<i slot="media" class="icon icon-f7" />
</ListItem>
</List>
<BlockTitle>Links, no icons</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem link="#" title="Ivan Petrov" />
<ListItem link="#" title="John Doe" />
<ListItem groupTitle title="Group Title Here" />
<ListItem link="#" title="Ivan Petrov" />
<ListItem link="#" title="Jenna Smith" />
</List>
<BlockTitle>Grouped with sticky titles</BlockTitle>
<List dividersIos outlineIos strongIos ul={false}>
<ListGroup>
<ListItem title="A" groupTitle />
<ListItem title="Aaron " />
<ListItem title="Abbie" />
<ListItem title="Adam" />
</ListGroup>
<ListGroup>
<ListItem title="B" groupTitle />
<ListItem title="Bailey" />
<ListItem title="Barclay" />
<ListItem title="Bartolo" />
</ListGroup>
<ListGroup>
<ListItem title="C" groupTitle />
<ListItem title="Caiden" />
<ListItem title="Calvin" />
<ListItem title="Candy" />
</ListGroup>
</List>
<BlockTitle>Mixed and nested</BlockTitle>
<List dividersIos outlineIos strongIos>
<ListItem link="#" title="Ivan Petrov" after="CEO">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="Two icons here">
<svelte:fragment slot="media">
<i class="icon icon-f7" />
<i class="icon icon-f7" />
</svelte:fragment>
</ListItem>
<ListItem title="No icons here" />
<li>
<ul>
<ListItem link="#" title="Ivan Petrov" after="CEO">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="Two icons here">
<svelte:fragment slot="media">
<i class="icon icon-f7" />
<i class="icon icon-f7" />
</svelte:fragment>
</ListItem>
<ListItem title="No icons here" />
<ListItem link="#" title="Ultra long text goes here, no, it is really really long">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem title="With toggle">
<i slot="media" class="icon icon-f7" />
<span slot="after">
<Toggle />
</span>
</ListItem>
</ul>
</li>
<ListItem link="#" title="Ultra long text goes here, no, it is really really long">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem title="With toggle">
<i slot="media" class="icon icon-f7" />
<span slot="after">
<Toggle />
</span>
</ListItem>
</List>
<BlockTitle>Tablet inset</BlockTitle>
<List dividersIos outlineIos strongIos mediumInset>
<ListItem link="#" title="Ivan Petrov" after="CEO">
<i slot="media" class="icon icon-f7" />
</ListItem>
<ListItem link="#" title="Two icons here">
<svelte:fragment slot="media">
<i class="icon icon-f7" />
<i class="icon icon-f7" />
</svelte:fragment>
</ListItem>
<ListItem link="#" title="Ultra long text goes here, no, it is really really long">
<i slot="media" class="icon icon-f7" />
</ListItem>
<div class="block-footer" slot="after-list">
<p>This list block will look like "inset" only on tablets (iPad)</p>
</div>
</List>
<BlockTitle>Media Lists</BlockTitle>
<Block>
<p>
Media Lists are almost the same as Data Lists, but with a more flexible layout for
visualization of more complex data, like products, services, users, etc.
</p>
</Block>
<BlockTitle>Songs</BlockTitle>
<List dividersIos mediaList outlineIos strongIos>
<ListItem
link="#"
title="Yellow Submarine"
after="$15"
subtitle="Beatles"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-1.jpg"
width="80"
/>
</ListItem>
<ListItem
link="#"
title="Don't Stop Me Now"
after="$22"
subtitle="Queen"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-2.jpg"
width="80"
/>
</ListItem>
<ListItem
link="#"
title="Billie Jean"
after="$16"
subtitle="Michael Jackson"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-3.jpg"
width="80"
/>
</ListItem>
</List>
<BlockTitle>Mail App</BlockTitle>
<List dividersIos mediaList outlineIos strongIos>
<ListItem
link="#"
title="Facebook"
after="17:14"
subtitle="New messages from John Doe"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<ListItem
link="#"
title="John Doe (via Twitter)"
after="17:11"
subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<ListItem
link="#"
title="Facebook"
after="16:48"
subtitle="New messages from John Doe"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<ListItem
link="#"
title="John Doe (via Twitter)"
after="15:32"
subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
</List>
<BlockTitle>Something more simple</BlockTitle>
<List dividersIos mediaList outlineIos strongIos>
<ListItem title="Yellow Submarine" subtitle="Beatles">
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-1.jpg"
width="44"
/>
</ListItem>
<ListItem link="#" title="Don't Stop Me Now" subtitle="Queen">
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-2.jpg"
width="44"
/>
</ListItem>
<ListItem title="Billie Jean" subtitle="Michael Jackson">
<img
slot="media"
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-3.jpg"
width="44"
/>
</ListItem>
</List>
</Page>