当前位置:首页 > 科技  > 软件

查漏补缺,盘点和Toggle相关的几个API

来源: 责编: 时间:2024-02-29 14:44:28 433观看
导读toggle的意思很简单,表示“切换”,适用于两个状态之间的变化,不会出现第三者,就像这样。web 中也有很多类似的api,一起看看有哪些吧。一、toggle首先是最常用的DOMTokenList.toggle方法,这里的的DOMTokenList表示一组空格分

Vjz28资讯网——每日最新资讯28at.com

toggle的意思很简单,表示“切换”,适用于两个状态之间的变化,不会出现第三者,就像这样。Vjz28资讯网——每日最新资讯28at.com

Vjz28资讯网——每日最新资讯28at.com

web 中也有很多类似的api,一起看看有哪些吧。Vjz28资讯网——每日最新资讯28at.com

一、toggle

首先是最常用的DOMTokenList.toggle方法,这里的的DOMTokenList表示一组空格分隔的标记,最常见的就是Element.classList,比如。Vjz28资讯网——每日最新资讯28at.com

除了classList还有relList,不过应该更少见了。Vjz28资讯网——每日最新资讯28at.com

<div class="a b c"></div>

通过el.classList可以获取到 class 的详细信息。Vjz28资讯网——每日最新资讯28at.com

Vjz28资讯网——每日最新资讯28at.com

看着像一个数组一样,然后我们可以通过toggle方法去切换某个class,比如:Vjz28资讯网——每日最新资讯28at.com

el.classList.toggle('a'); // 移除 ael.classList.toggle('a'); // 添加 a

此时会动态去判断,如果存在就移除,如果不存在就添加,再也不需要去判断当前状态了。Vjz28资讯网——每日最新资讯28at.com

Vjz28资讯网——每日最新资讯28at.com

比如要切换页面主题,可以直接这样。Vjz28资讯网——每日最新资讯28at.com

// 深浅切换btn.onclcik = () => {  document.body.classList.toggle('dark')}// 无需像这样if (当前是深色) {  设置为浅色} else {  设置为深色}

另外,toggle还支持第二个参数,表示强制,是一个布尔值,为 true表示添加,反之为移除,而「不管当前是什么状态」。Vjz28资讯网——每日最新资讯28at.com

el.classList.toggle('a', force);

比如:Vjz28资讯网——每日最新资讯28at.com

// 设置为浅色btnLight.onclcik = () => {  document.body.classList.toggle('dark', false)}// 设置为深色btnDark.onclcik = () => {  document.body.classList.toggle('dark', true)}

是不是非常方便呢?Vjz28资讯网——每日最新资讯28at.com

二、toggleAttribute

还有一个和toggle比较类似的是toggleAttribute,顾名思义,这个是用来切换「属性」的,语法和前面一致。Vjz28资讯网——每日最新资讯28at.com

toggleAttribute(name)toggleAttribute(name, force)

这个使用场景更为广泛,例如控制一个输入框的禁用与开启。Vjz28资讯网——每日最新资讯28at.com

input.toggleAttribute('disabled')

当然对于表单元素,还可以用.的方式直接设置。Vjz28资讯网——每日最新资讯28at.com

input.disabled = !input.disabled;

但是,对于普通自定义属性,就不能用这种方式了,比如黑暗模式,用属性来控制。Vjz28资讯网——每日最新资讯28at.com

document.body.toggleAttribute('dark');

第二个参数也是类似的。Vjz28资讯网——每日最新资讯28at.com

document.body.toggleAttribute('dark', ture); //添加dark属性document.body.toggleAttribute('dark', false);//移除dark属性

当然你还可以用更常规的方式。Vjz28资讯网——每日最新资讯28at.com

document.body.setAttribute('dark', ''); //添加dark属性document.body.removeAttribute('dark');//移除dark属性

个人觉得不如toggleAttribute优雅,你觉得呢?Vjz28资讯网——每日最新资讯28at.com

三、togglePopover

togglePopover是新出来的,是针对popover元素推出的打开与关闭的方法。Vjz28资讯网——每日最新资讯28at.com

关于popover,可以参考我之前写的这篇文章:原生 popover 终于来了!Vjz28资讯网——每日最新资讯28at.com

语法略有差异,因为无需修改其他状态,所以只有一个可选参数。Vjz28资讯网——每日最新资讯28at.com

popoverEl.togglePopover(); //切换 popoverpopoverEl.togglePopover(true); //打开 popoverpopoverEl.togglePopover(false); //关闭 popover

另外,带有的参数的情况下还有更直观的 api,推荐使用。Vjz28资讯网——每日最新资讯28at.com

// 打开popoverEl.togglePopover(true)// 等同于popoverEl.showPopover()// 关闭popoverEl.togglePopover(false)// 等同于popoverEl.hidePopover()

比较新,是跟着popver一起出现的,兼容性如下:Vjz28资讯网——每日最新资讯28at.com

Vjz28资讯网——每日最新资讯28at.com

四、toggle event

最后再来介绍一个toggle事件,表示监听切换事件。Vjz28资讯网——每日最新资讯28at.com

这个也是跟随poperver推出的,可以通过event对象获取当前的新状态和旧状态,如下:Vjz28资讯网——每日最新资讯28at.com

popover.addEventListener("toggle", (event) => {  if (event.newState === "open") {    console.log("Popover has been shown");  } else {    console.log("Popover has been hidden");  }});

效果如下:Vjz28资讯网——每日最新资讯28at.com

Vjz28资讯网——每日最新资讯28at.com

有意思的是,这个事件同时也支持details元素。Vjz28资讯网——每日最新资讯28at.com

details.addEventListener("toggle", (event) => {  });

Vjz28资讯网——每日最新资讯28at.com

五、总结一下

以上就是 web 中几个和toggle相关的api了,下面总结一下:Vjz28资讯网——每日最新资讯28at.com

  • toggle作用在DOMTokenList上,通常是classList , classList.toggle可以切换class。
  • toggle还支持第二个参数,用于强制添加或者移出某个class。
  • toggleAttribute可以控制属性的切换。
  • togglePopver是专门推出用于控制popover元素打开和关闭的方法。
  • toggle event可以监听popover元素和details元素的打开和关闭事件。

本文链接:http://www.28at.com/showinfo-26-75383-0.html查漏补缺,盘点和Toggle相关的几个API

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 基于C#编写一个远程桌面应用

下一篇: 只用 13 天,OpenAI 做出了能听、能说、能自主决策的机器人大模型

标签:
  • 热门焦点
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 荣耀Magicbook V 14 2021曙光蓝版本正式开售,拥有触摸屏

    荣耀 Magicbook V 14 2021 曙光蓝版本正式开售,搭载 i7-11390H 处理器与 MX450 显卡,配备 16GB 内存与 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 键盘键程、
Top