菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
28
0

不使用JavaScript创建常见UI元素功能

原创
05/13 14:22
阅读数 833

我们已经习惯于用JavaScript编写常见的UI元素功能(如手风琴、工具提示、文本截断等),但是随着HTML和CSS有了新的功能以及旧版浏览器不再受支持,我们越来越少使用JavaScript来创建UI元素,并将其更多地集中于代码的逻辑部分(验证,数据处理等)。

下面是一些不需要JavaScript就可以创建的UI元素示例。

响应文本截断

CSS文本截断实现起来非常简单,并且性能很高,因为我们不编辑文本的HTML内容,而仅编辑其渲染。 虽然,在旧版本的浏览器中很好地支持单行文本截断,但只有较新的浏览器才支持多行文本截断。

星级评定输入

星级评分是大多数评论形式和功能的必备要素。 使用CSS实现此功能的方法有很多:使用背景图片,JavaScript,icons等。实现此功能的最易用的方法是使用icons和本地 单选框。

这个实现的缺点是,输入的HTML radio inputs是相反的顺序(从5到1的评级值),因为我们需要选择所有启动项,直到选中的输入项为止,包括CSS不能选择的选中项。 这就是为什么我们颠倒顺序,从选中的输入中选择第一个输入的原因。

此实现非常灵活,可以轻松自定义。

工具提示/下拉菜单

这是一个非常灵活的元素,因为它的CSS逻辑可用于工具提示和下拉菜单,因为它们的工作方式相似,并且均支持悬停和单击(触摸)功能。

此实现中可以考虑的一个问题是,由于它的focus样式,工具提示(下拉列表)将在单击时保持打开状态,直到用户单击离开元素为止(元素使用焦点)。

模态(Modal)

这是一个有点笨拙的实现,完全依赖于URL的查询字符串。URL中的Id必须与我们需要打开的模式元素匹配。

浮动标签输入(Floating label input)

切换(Toggle )/ 手风琴(Accordion)

最近,HTML使用<details><summary>元素获得了原生的手风琴(toggle)元素,但是使用这些元素的缺点在于它们没有太多的样式选择,因此开发人员仍然继续使用自己的实现。 幸运的是,通过复选框或单选框输入逻辑,我们可以创建可切换的元素和手风琴,而无需依赖JavaScript。

使用这个实现的缺点是,它依赖于HTML input元素,并且其逻辑导致需要额外的HTML代码,但另一方面,这也导致了一个非常易于访问的元素。

结论

如你所见,这些仅限CSS的实现依赖于CSS选择器逻辑(如:focus:placeholder-shown)来替换JavaScript逻辑。 这些CSS解决方案中的一些可以被认为是粗糙的,但是它们是高性能的、灵活的,并且不依赖于JavaScript。

在项目中使用了其中一些CSS解决方案,可以避免添加任何额外的JavaScript,或者避免将JavaScript完全用于可视化表示。

当然,还有更多的纯CSS解决方案,但是我发现这些解决方案最有趣。如果您使用任何其他解决方案,请在评论中让我知道。

英文地址原文:https://dev.to/adrianbdesigns/you-can-create-these-elements-without-javascript-525a

为了保证的可读性,本文采用意译而非直译。

发表评论

0/200
28 点赞
0 评论
收藏
为你推荐 换一批