Page Svelteコンポーネント
Framework7におけるPageは、ウェブページを想像する際と同じ意味を持ちます。Pageはコンテンツを表示し操作するための主要なコンポーネントです。
Page Svelteコンポーネントは、Framework7のPageを表します。
Pageコンポーネント
以下のコンポーネントが含まれています
Page
- メインページ要素PageContent
- 追加の内部ページコンテンツ要素
Pageプロパティ
プロパティ | 型 | デフォルト値 | 説明 |
---|---|---|---|
<Page>プロパティ | |||
name | 文字列 | ページ名 | |
messagesContent | ブール値 | Messagesコンポーネントを内部で使用し、必要な追加スタイルを追加する場合に有効にします。 | |
pageContent | ブール値 | true | 有効にすると、page-content 要素が自動的に内部に追加されます。タブに対していくつかのpage-content要素を使用する必要がある場合に無効にするのに役立ちます。 |
tabs | ブール値 | Pageをタブラッパーとして使用する場合に有効にします。 | |
loginScreen | ブール値 | ログイン画面をページ内に使用し、必要な追加スタイルを追加する場合に有効にします。 | |
noSwipeback | ブール値 | 現在のページのスワイプバック機能を無効にします(iOSテーマのみに影響します)。 | |
withSubnavbar | ブール値 | ページ内にサブナビゲーションバーがある場合に有効にします。 | |
noNavbar | ブール値 | 共通のナビゲーションバーレイアウトを使用し、このページの共通のナビゲーションバーを非表示にする(または別のナビゲーションバーを使用する)必要がある場合に有効にします(iOSテーマのみに影響します)。 | |
noToolbar | ブール値 | 共通のツールバー/タブバーレイアウトを使用し、このページのツールバーを非表示にする(または別のツールバーを使用する)必要がある場合に有効にします。 | |
hideBarsOnScroll | ブール値 | ページスクロール時にナビゲーションバーとツールバーを非表示にします。 | |
hideNavbarOnScroll | ブール値 | ページスクロール時にナビゲーションバーを非表示にします。 | |
hideToolbarOnScroll | ブール値 | ページスクロール時にツールバーを非表示にします。 | |
ptr | ブール値 | プルツーリフレッシュを有効にします。 | |
ptrDistance | 数値 | プルツーリフレッシュのトリガー距離をカスタマイズします。デフォルト(指定しない場合)は44pxです。 | |
ptrPreloader | ブール値 | true | カスタムのプルツーリフレッシュプリローダー要素を使用する場合は無効にします。 |
ptrBottom | ブール値 | false | 下部からのプルツーリフレッシュを有効にします。 |
ptrMousewheel | ブール値 | false | マウスホイールによるプルツーリフレッシュを有効にします(デスクトップアプリ用)。PTRの上部のみ有効です。 |
infinite | ブール値 | 無限スクロールを有効にします。 | |
infiniteTop | ブール値 | ページ上部で無限スクロールを有効にします。 | |
infiniteDistance | 数値 | 無限スクロールイベントをトリガーするページ下部からの距離(px単位)。デフォルト(指定しない場合)は50(px)です。 | |
infinitePreloader | ブール値 | true | カスタムの無限スクロールプリローダーを使用する場合は無効にします。 |
<PageContent>プロパティ | |||
tab | ブール値 | page-contentをタブとして使用する場合に有効にします。 | |
tabActive | ブール値 | 現在のタブがアクティブな場合に有効にします。 | |
ptr ptrDistance ptrPreloader ptrBottom ptrMousewheel infinite infiniteTop infiniteDistance infinitePreloader hideBarsOnScroll hideNavbarOnScroll hideToolbarOnScroll messagesContent loginScreen | <Page> プロパティと同じです。 |
Pageイベント
イベント | 説明 |
---|---|
<Page>イベント | |
pageMounted | keepAlive ルートを持つページがDOMにマウント/アタッチされたときにトリガーされるイベントです。 |
pageInit | Framework7がページに必要なコンポーネントとナビゲーションバーを初期化した後にトリガーされるイベントです。 |
pageReinit | 既に初期化されているページに移動した場合にトリガーされるイベントです。 |
pageBeforeIn | すべてが初期化され、ページが表示される準備ができたときに(アクティブ/現在の位置に)トリガーされるイベントです。 |
pageAfterIn | ページが表示された後にトリガーされるイベントです。 |
pageBeforeOut | ページが表示領域から外れる直前にトリガーされるイベントです。 |
pageAfterOut | ページが表示領域から外れた後にトリガーされるイベントです。 |
pageBeforeUnmount | keepAlive ルートを持つページがDOMからアンマウント/デタッチされる直前にトリガーされるイベントです。 |
pageBeforeRemove | PageがDOMから削除される直前にトリガーされるイベントです。イベントをデタッチしたり、プラグインを破棄してメモリを解放する必要がある場合に非常に役立ちます。このイベントはkeepAlive ルートではトリガーされません。 |
pageTabShow | ページの親View as Tabが表示されたときにトリガーされるイベントです。 |
pageTabHide | ページの親View as Tabが非表示になったときにトリガーされるイベントです。 |
ptrPullStart | プルツーリフレッシュコンテンツの移動を開始したときにトリガーされるイベントです。 |
ptrPullMove | プルツーリフレッシュコンテンツを移動中にトリガーされるイベントです。 |
ptrPullEnd | プルツーリフレッシュコンテンツを離したときにトリガーされるイベントです。 |
ptrRefresh | プルツーリフレッシュが「更新中」状態になったときにトリガーされるイベントです。 |
ptrDone | プルツーリフレッシュが完了し、初期状態に戻った後にトリガーされるイベントです(pullToRefreshDoneメソッドを呼び出した後)。 |
infinite | ページスクロールが(data-distance属性で指定された)下部からの特定の距離に達したときにトリガーされるイベントです。 |
<PageContent>イベント | |
tabShow | タブが表示/アクティブになったときにトリガーされるイベントです。 |
tabHide | タブが非表示/非アクティブになったときにトリガーされるイベントです。 |
ptrPullStart ptrPullMove ptrPullEnd ptrRefresh ptrDone infinite | <Page> イベントと同じです。 |
Pageスロット
Page Svelteコンポーネント(<Page>
)には、カスタム要素用の追加スロットがあります。
default
-page-content
プロパティが有効な場合(デフォルト)、要素は「page-content」の子として挿入されます。fixed
- 要素は「page-content」の直前に「page」の直接の子として挿入されます。
<Page>
<div slot="fixed">Fixed element</div>
<p>Page content goes here</p>
</Page>
<!-- Renders to: -->
<div class="page">
<div>Fixed element</div>
<div class="page-content">
<p>Page content goes here</p>
</div>
</div>
例
無限スクロール
infinite-scroll.svelte
<script>
import { Navbar, Page, BlockTitle, List, ListItem } from 'framework7-svelte';
let items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
let allowInfinite = true;
let showPreloader = true;
function loadMore() {
if (!allowInfinite) return;
allowInfinite = false;
setTimeout(() => {
if (items.length >= 200) {
showPreloader = false;
return;
}
const itemsLength = items.length;
for (let i = 1; i <= 20; i += 1) {
items.push(itemsLength + i);
}
items = items;
allowInfinite = true;
}, 1000);
}
</script>
<Page infinite infiniteDistance={50} infinitePreloader={showPreloader} onInfinite={loadMore}>
<Navbar title="Infinite Scroll" />
<BlockTitle>Scroll bottom</BlockTitle>
<List strongIos outlineIos dividersIos>
{#each items as item, index (index)}
<ListItem title={`Item ${item}`} />
{/each}
</List>
</Page>
プルツーリフレッシュ
pull-to-refresh.svelte
<script>
import { Navbar, Page, List, ListItem, BlockFooter } from 'framework7-svelte';
let items = [
{
title: 'Yellow Submarine',
author: 'Beatles',
cover: 'https://cdn.framework7.io/placeholder/abstract-88x88-1.jpg',
},
{
title: "Don't Stop Me Now",
author: 'Queen',
cover: 'https://cdn.framework7.io/placeholder/abstract-88x88-2.jpg',
},
{
title: 'Billie Jean',
author: 'Michael Jackson',
cover: 'https://cdn.framework7.io/placeholder/abstract-88x88-3.jpg',
},
];
const songs = ['Yellow Submarine', "Don't Stop Me Now", 'Billie Jean', 'Californication'];
const authors = ['Beatles', 'Queen', 'Michael Jackson', 'Red Hot Chili Peppers'];
function loadMore(done) {
setTimeout(() => {
const picURL = `https://cdn.framework7.io/placeholder/abstract-88x88-${
Math.floor(Math.random() * 10) + 1
}.jpg`;
const song = songs[Math.floor(Math.random() * songs.length)];
const author = authors[Math.floor(Math.random() * authors.length)];
items.push({
title: song,
author,
cover: picURL,
});
items = items;
done();
}, 1000);
}
</script>
<!-- svelte-ignore a11y-missing-attribute -->
<Page ptr ptrMousewheel={true} onPtrRefresh={loadMore}>
<Navbar title="Pull To Refresh" />
<List mediaList strongIos dividersIos outlineIos>
{#each items as item, index (index)}
<ListItem title={item.title} subtitle={item.author}>
<img slot="media" src={item.cover} width="44" style="border-radius: 8px" />
</ListItem>
{/each}
</List>
<BlockFooter>
<p>
Just pull page down to let the magic happen.<br />Note that pull-to-refresh feature is
optimised for touch and native scrolling so it may not work on desktop browser.
</p>
</BlockFooter>
</Page>