JavaScript框架(xmlplus)组件的介绍(五)选项卡(Tabbar)
xmlplus 是一个JavaScript框架,用于快速开发前后端项目。这篇文章主要介绍了xmlplus组件设计系列之选项卡,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这一章将设计一个选项卡组件,选项卡组件在手持设备上用的比较多,下面是一个示意图:
选项卡组成
在具体实现之前,想像一下目标组件是如何使用的,对于设计会有莫大的帮助。通过观察,可以将选项卡组件分为容器部分和子项部分,正如下面的 XML 结构所展示的。
<Tabbar id="tabbar"> <TabItem id="home" label="首页"/> <TabItem id="setting" label="设置"/> <TabItem id="logs" label="日志"/> <TabItem id="about" label="关于"/> </Tabbar>
现在我们把目光切换到选项卡组件的子项部分,来看看子项部分是如何分解的。通过示意图,你可以发现子项部分可以分解为子项容器以及包含一个图标和一个文本的子级部分。
<a id="tabitem"> <Icon id="icon"/> <span id="label">首页</span> </a>
所以,现在我们的目标已经很明确了,主要设计三个组件:图标组件 Icon、选项卡组件的子项 TabItem 以及选项卡组件的容器 Tabbar。
结构图
由于该组件比较简单,所以可以将三种子组件放置在同一层级。但请注意,我们还有四个图标组件,可以创建一个子级用于容纳它们。下面给出我们的组件结构图:
Tabbar/
├── Tabbar
├── TabItem
└── Icon/
├── About
├── Home
├── Logs
└── Setting
图标的实现
我们从最简单的开始,先看四个图标组件,图标组件主要通过封装 SVG 文本来实现,由于图标文本较长,所以这里仅截取每个图标文本的一段。
About: { xml: `<svg width="48" height="48" viewBox="0 0 1024 1024"> <path d="M507.577907 23.272727C240.142852..."/> </svg>` }, Home: { xml: `<svg width="48" height="48" viewBox="0 0 1024 1024"> <path d="M949.082218 519.343245 508.704442..."/> </svg>` }, Logs: { xml: `<svg width="48" height="48" viewBox="0 0 1024 1024"> <path d="M576 125.344l32 0 0 64-32 0 0-64Z..."/> </svg>` }, Setting: { xml: `<svg width="48" height="48" viewBox="0 0 1024 1024"> <path d="M512 336.664c-96.68 0-175.336 78...."/> </svg>` }
请注意,这些图标位于虚拟目录 /icon 之下,也就是你要像下面这样导入:
xmlplus("ui", function (xp, $_, t) { $_().imports({Tabbar: {... }, TabItem: {...}}); $_("icon").imports({--这里包含了四个图标组件--}); });
下面来实现图标组件 Icon,这里的图标组件与上面是不同的,它会根据输入的图标类型实例化不同的图标。这样设计可以复用部分相同的代码,避免冗余。
Icon: { css: "#icon { width: 1.5em; height: 1.5em; display: inline-block; }", opt: { icon: "about" }, xml: `<span id="icon"/>`, fun: function (sys, items, opts) { sys.icon.replace("icon/" + opts.icon).addClass("#icon"); } }
该组件的函数项根据输入的图标类型创建图标组件并替换已有的 span 元素对象。注意,替换完后需要重新添加样式。
子项的实现
按从内到外的原则,接下来实现选项卡组件的子项 TabItem。对于此组件,需要在组件的映射项中做一次异名的属性映射,把 id 属性值映射给内部的图标组件的 icon 属性。
TabItem: { css: "这里是样式项部分,为便于组件整体展示,略去...", map: {"attrs": { icon: "id->icon" } }, xml: `<a id="tabitem"> <Icon id="icon"/> <span id="label">首页</span> </a>`, fun: function (sys, items, opts) { sys.label.text(opts.label); function select() { sys.tabitem.addClass("#primary"); } function unselect() { sys.tabitem.removeClass("#primary"); } return { select: select, unselect: unselect }; } }
此组件提供了用于选项切换时选中与非选中状态之间切换的接口。以供选项卡容器使用。
选项卡的实现
最后来看下选项卡组件 Tabbar 的实现。该组件侦听了用户触击选项卡时的事件,在侦听器里主要做两件事:一是维持选项卡状态的切换;另一是派发一选项卡切换时的状态改变事件。
Tabbar: { css: "这里是样式项部分,为便于组件整体展示,略去...", xml: `<nav id="tabbar"/>`, fun: function (sys, items, opts) { var sel = this.first(); this.on("touchend", "./*[@id]", function (e) { sel.value().unselect(); (sel = this).value().select(); this.trigger("switch", this.toString()); }); if (sel) sel.value().select(); } }
至此,一个选项卡组件算是完成了,下面来看下具体的一个应用:
xmlplus("example", function (xp, $_, t) { $_().imports({ Index: { xml: `<Footer id='footer'/>`, fun: function (sys, items, opts) { this.on("switch", (e, target) => console.log(target)); } }, Footer: { xml: `<Tabbar id="footer"> <TabItem id="home" label="首页"/> <TabItem id="setting" label="设置"/> <TabItem id="logs" label="日志"/> <TabItem id="about" label="关于"/> </Tabbar>` } }); });
在组件 Index 中,你可以侦听来自选项卡的切换事件来做相应的操作。比如结合后续我们介绍的视图栈组件做页面之间的切换操作。
本系列文章基于 xmlplus 框架。如果你对 xmlplus 没有多少了解,可以访问 www.xmlplus.cn。这里有详尽的入门文档可供参考。
【相关推荐】
1. 免费js在线视频教程
3. php.cn独孤九贱(3)-JavaScript视频教程
Atas ialah kandungan terperinci JavaScript框架(xmlplus)组件的介绍(五)选项卡(Tabbar). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Beberapa pengguna Windows telah mengadu bahawa apabila mereka cuba mengakses beberapa tapak web pada penyemak imbas Google Chrome pada sistem mereka, mereka tidak dapat mengakses halaman web tersebut. Ia juga memaparkan mesej pada penyemak imbas yang mengatakan "Tapak tidak boleh dicapai" dengan kod ralat ERR_ADDRESS_UNREACHABLE. Mungkin terdapat banyak sebab yang berpotensi di sebalik isu ini, ia mungkin disebabkan oleh isu pelayan tapak web, tetapan pelayan proksi, sambungan internet yang tidak stabil, dsb. Jika anda menghadapi masalah yang sama, jangan panik. Selepas menganalisis masalah dengan mendalam dalam artikel ini, kami mendapat banyak penyelesaian. Sebelum meneruskan, cuba penyelesaian berikut: Cuba semak sama ada pengguna cuba mengakses tapak daripada peranti lain dan tiada masalah, kemudian ini

Logitech GHub ialah perisian yang membenarkan pengguna mengurus peranti Logitech mereka. Perisian ini serasi dengan Windows 11. Walau bagaimanapun, sesetengah pengguna melaporkan bahawa Logitech GHub tidak berfungsi untuk mereka dalam Windows 11. Pembaca kami telah melaporkan bahawa apabila mereka cuba melancarkan perisian, ia terperangkap dalam pemuatan. Oleh itu, mereka tidak boleh menggunakan perisian apabila ia tidak dibuka untuk mereka. Pernahkah anda juga cuba membetulkan LogitechGHub tidak berfungsi dalam Windows 11? Jika ya, penyelesaian berpotensi di bawah mungkin melancarkan LogitechGHub. Apakah sebab mengapa Logitech GHub tidak berfungsi dalam Windows 11? dengan ramai lagi

Salah satu ciri yang disertakan dengan Windows File Explorer ialah anak tetingkap pratonton, yang memaparkan pratonton fail yang anda pilih. Ini bermakna anda boleh melihat kandungan fail sebelum membukanya. Anak tetingkap pratonton File Explorer menyediakan pratonton untuk jenis fail yang berbeza seperti dokumen berkaitan Pejabat, PDF, fail teks, imej dan video. Ia biasanya berfungsi dengan baik, tetapi kadangkala pratonton fail tidak tersedia. Baru-baru ini, ramai pengguna Windows 11 telah membangkitkan isu bahawa anak tetingkap pratonton File Explorer tidak berfungsi dan mereka tidak dapat melihat pratonton fail. Adakah anda menghadapi isu anak tetingkap pratonton tidak berfungsi pada komputer Windows anda? Kemudian, teruskan membaca artikel ini. Di sini kami telah menyusun senarai pembetulan yang boleh membantu anda membetulkannya

MSIAfterburner ialah alat overclocking yang sesuai untuk kebanyakan kad grafik. Selain itu, anda juga boleh menggunakannya untuk memantau prestasi sistem anda. Tetapi sesetengah pengguna melaporkan bahawa MSIAfterburner tidak berfungsi dalam Windows 11. Ini mungkin disebabkan oleh beberapa sebab, yang kita bincangkan dalam bahagian berikut. Walau bagaimanapun, apabila ini berlaku, ia menghalang anda daripada mengubah prestasi atau memantaunya semasa bermain permainan. Seperti yang dijangkakan, ini menimbulkan cabaran penting kepada pemain. Itulah sebabnya kami telah mendedikasikan tutorial ini untuk membantu anda memahami isu ini dan membimbing anda melalui pembetulan paling berkesan untuk MSIAfterburned tidak berfungsi dalam isu Windows 11.

Sistem pengendalian kelihatan jauh lebih baik daripada pendahulunya dan mempunyai ciri berorientasikan pemain seperti AutoHDR dan DirectStorage, tetapi pemain Valorant menghadapi masalah melancarkan permainan. Ini bukan isu pertama yang dihadapi oleh pemain sebelum ini, Valorant tidak membuka pada Windows 11 adalah satu lagi isu yang melanda mereka tetapi kami telah membincangkan cara untuk membetulkannya. Kini nampaknya pemain Valorant yang beralih kepada Windows 11 menghadapi masalah disebabkan perkhidmatan Secure Boot dan TPM2.0, yang menyebabkan menu permainan hanya menunjukkan pilihan keluar semasa berjalan. Ramai pengguna mendapat ralat VAN1067, tetapi ia tidak sepatutnya menjadi punca penggera

Versi terbaharu penyemak imbas Opera menyertakan ciri pop timbul video automatik baharu. Menggunakan ciri ini, anda akan melihat bahawa video akan muncul secara automatik apabila anda menavigasi ke tab lain dalam penyemak imbas. Telah diperhatikan bahawa video pop timbul ini boleh diubah saiz dan dialihkan ke sekeliling skrin. Apabila anda menavigasi kembali ke tab Video, ia disambung semula dan tetingkap terapung hilang. Ciri pop timbul video berguna untuk pengguna berbilang tugas yang suka menonton video semasa bekerja. Walau bagaimanapun, tidak setiap pengguna Opera akan menyukai ciri pop timbul video automatik ini. Jika anda adalah salah seorang pengguna penyemak imbas Opera yang terganggu dengan video yang muncul setiap kali anda menukar tab, maka anda telah menemui siaran yang betul. Di sini kami terperinci cara untuk melumpuhkan pop timbul ini dalam Opera

Operasi ini memerlukan stesen tingkap interaktif yang merupakan pepijat yang agak pelik. Tetingkap perisian yang membenarkan pengguna berinteraksi dengan apl tidak dibuka, anda perlu mendayakannya. Pepijat ini telah dikaitkan dengan kerentanan Mimpi Buruk Pencetakan 2021. Walau bagaimanapun, ia berterusan sehingga hari ini, menjejaskan komputer dan pemacu peranti anda. Nasib baik, ia mudah untuk diperbaiki. Mengapakah ralat ini berlaku di tempat pertama? Sebelum menerangkan cara membetulkan ralat ini, pastikan anda menyenaraikan punca ralat ini. Dengan cara ini, anda boleh mengambil langkah yang perlu untuk memastikan ia tidak berlaku lagi. Fail rosak merosakkan fail komputer anda – Rasuah boleh disebabkan oleh pelbagai sebab, daripada perisian hasad kepada gangguan bekalan elektrik. Anda disyorkan supaya menjalankan imbasan SFC. Anda mempunyai aplikasi antivirus yang terlalu bersemangat – perisian antivirus kadangkala menyekat

Hampir setiap permainan mewah yang kami mainkan bergantung pada DirectX untuk berjalan dengan cekap. Walau bagaimanapun, sesetengah pengguna melaporkan menghadapi fungsi DirectX GetDeviceRemovedReasonfailedwith diikuti dengan sebab ralat. Sebab di atas tidak jelas kepada pengguna biasa dan memerlukan beberapa tahap penyelidikan untuk menentukan punca dan penyelesaian yang paling berkesan. Untuk memudahkan urusan, kami telah mendedikasikan tutorial ini untuk masalah ini. Dalam bahagian berikut, kami akan membantu anda mengenal pasti punca yang berpotensi dan membimbing anda melalui langkah penyelesaian masalah untuk menghapuskan fungsi DirectX GetDeviceRemovedReasonfailedwitherror. apa yang menyebabkan
