专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

2024 值得推荐的10个 Web Component 组件

ins518 2024-09-18 18:10:28 技术文章 14 ℃ 0 评论

家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!

Web Component 组件在交互性上分层并以真正的渐进增强方式添加行为,这是 Web Component 的主要用例。接下来介绍几个目前已经可用的 Web Component 组件,大家感兴趣的也可以试一试。

1.<is-land>

一种新的以性能为中心的方式,将交互式客户端组件添加到网站。从技术上来说,是独立于框架的部分水合岛架构的实现。

is-land 的主要特征包括:

  • 易于添加到现有组件
  • 零依赖
  • 与服务器框架或站点生成器工具没有紧密耦合。
  • 占用空间小(最小化 5 kB;使用 Brotli 压缩为 1.61 kB)
  • 可用于 SSR 友好框架的服务器渲染 (SSR) 组件示例,兼容 Svelte、Vue、Preact等

2.<details-utils>

<details-utils>是一套实用程序,用于向<details> 元素添加更多功能。将 <details-utils> 包裹在一个或多个 <details> 元素周围以增强其行为:

  • 单击外部关闭(还绑定一个可选的关闭按钮)
  • 动画打开和关闭(符合 prefers-reduced-motion)
  • 强制打开/关闭,包括基于:JavaScript、媒体查询(例如,视口大小、prefers-reduced-motion,甚至 prefers-reduced-data)
  • 当媒体查询不匹配时可以选择恢复用户状态(使用强制恢复属性)
  • 通过 esc 键关闭、具有可选的媒体查询。
  • 切换文档类(激活时切换 <html> 上的类,对于模式禁用文档溢出很有用)

3.video-radio-star

HTML5 视频的轻量级 Web 组件助手,适用于默认静音的 HTML5 视频。主要功能包括:

  • 添加样式类:radiostar-enhanced、radiostar-muted、radiostar-playing、radiostar-paused、radiostar-ended
  • 仅当视频在视口中通过 data-visible-autoplay 可见时才开始播放(通过 IntersectionObserver) 确保在标记中保留自动播放属性。
  • 当视频滚动到视图之外时自动暂停视频(通过 IntersectionObserver)
  • 在 preload="none" 的情况下按预期工作。
  • 当 SaveData 为 true 时设置 preload="none"。
  • 启用偏好减少运动时禁用自动播放
  • 通过分别向一个或多个 <button> 元素添加数据静音、数据播放或数据暂停来使用您自己的外部静音/播放/暂停控件。

4.squirm-inal

squirminal 是一个模拟的终端 Web 组件,具有以下显著特征。

  • 适用于 prefers-reduced-motion
  • 无需 JavaScript 即可工作(后备显示内容)
  • 通过<squirm-inal cursor>闪烁光标
  • 通过 <squirm-inal autoplay> 自动播放(仅当可见时)
  • 适用于任意 HTML 内容内的文本节点。
  • 通过 <squirm-inal buttons> 播放/暂停/重置按钮
  • 使用 <squirm-inalDimensions> 减少动画期间的布局移动。

5.announcement-banner

可重用的公告栏横幅组件,如果不需要横幅上的隐藏或关闭按钮(并保存用户首选项),则不需要这个只需使用 CSS。

<announcement-banner>
  <a href="YOUR_URL">YOUR_TEXT</a>
  <button type="button" data-banner-close>
    Close
  </button>
</announcement-banner>

以下组件增强/修改嵌套 HTML,可以通过与服务器渲染(例如 WebC)更紧密的耦合来改进,但在低 JavaScript 环境中可以按原样工作。

6.<ppp-price>

一个小型的纯结构零依赖 Web 组件,用于显示平价购买力标准化价格。请注意,其不是货币转换器,它将数值与平价购买比率进行转换,以将该成本标准化为指定国家/地区的新价格。 输出使用 Intl.NumberFormat API 正确格式化本地化货币值。

这(可选)与 CloudCannon 的地理位置功能配合使用,自动检测访问者的国家/地区。

<!-- outputs $14.78 -->
<ppp-price from="us" to="gb" currency="usd">$10</ppp-price>
<ppp-price from="us" to="gb">$10 USD</ppp-price>

7.browser-window

一个小型主题零依赖 Web 组件,用于模拟 Safari 浏览器窗口的演示。

使用示例如下:

<browser-window
  url="https://www.zachleat.com/web/"
  icon
  style="font-size: 20px"
>
  This one scales with the parent font size (larger).
</browser-window>

8.table-saw

用于响应式 <table> 元素的小型纯结构零依赖 Web 组件。深受 Filament Group 的 Tablesaw Stack jQuery 插件启发。

典型特征包括:

  • 支持一个或多个<table>子元素。
  • 适用于视口媒体查询或容器查询。
  • 使用 CSS 网格进行小视口对齐。
  • 在使用 JavaScript 之前或不使用 JavaScript 时都会回退到常规表。

使用示例如下:

<!-- Note: requires `type="module"` -->
<script type="module" src="table-saw.js"></script>
<!-- stacks below 640px viewport -->
<table-saw>
	<table><!-- some HTML omitted for brevity --></table>
</table-saw>

9.seven-minute-tabs

选项卡 Web 组件,具有以下特征:

  • 代码转换为 Web 组件。
  • 所有样式均已删除,并且该组件无需 CSS 即可正常运行。 为了代码复用,所有样式都留给独立的项目特定主题。
  • 通过指向内容面板的锚链接从 <a> 逐步增强。
  • 使用 JavaScript 向面板添加隐藏属性,以便当 JavaScript 不可用时内容仍然显示。
  • 使用 JavaScript 添加 tabindex,以便无需 JavaScript 即可访问内容。
  • 箭头键支持,Home/End 键支持。

下面是组件的基本用法:

<seven-minute-tabs>
  <ol role="tablist" aria-label="What does this tab chooser do?">
    <li>
      <a href="#third-tab" role="tab">
        Third tab
      </a>
    </li>
  </ol>
  <div id="first-tab" role="tabpanel">
    First tab content
  </div>
  <div id="second-tab" role="tabpanel">
    Second tab content
  </div>
  <div id="third-tab" role="tabpanel">
    Third tab content
  </div>
</seven-minute-tabs>

10.resize-asaurus

resize-asaurus 是一个 Web 组件,用于添加调整大小行为以测试固有大小的响应组件。

<resize-asaurus>My component goes here</resize-asaurus>

添加disabled属性以禁用组件行为(并隐藏其样式)。

<resize-asaurus disabled>My component goes here</resize-asaurus>

参考文章

https://www.zachleat.com/web/a-taxonomy-of-web-component-types/

https://github.com/zachleat/details-utils

https://github.com/zachleat/video-radio-star

https://github.com/11ty/is-land

https://github.com/zachleat/squirminal

https://github.com/zachleat/parity-purchasing-power-price

https://github.com/zachleat/resizeasaurus

https://jayakrishnasfdc.wordpress.com/2020/11/29/web-components-and-types-its-includes-in-lwc/

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表