首页 > 其他分享 >还在用 JS 做节流吗?CSS 也可以防止按钮重复点击

还在用 JS 做节流吗?CSS 也可以防止按钮重复点击

时间:2023-02-11 21:11:35浏览次数:54  
标签:动画 throttle 节流 JS 点击 pointer events CSS

本文正在参加「金石计划 . 瓜分6万现金大奖」

欢迎关注我的公众号:前端侦探

众所周知,函数节流(throttle)是 JS 中一个非常常见的优化手段,可以有效的避免函数过于频繁的执行。

举个例子:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,比如只允许每300ms提交一次,这时候我想大部分同学都会到网上直接拷贝一段throttle函数,或者直接引用lodash工具库

btn.addEventListener('click', _.throttle(save, 300))
复制代码

其实除了 JS 方式, CSS 也可以非常轻易的实现这样一个功能,无需任何框架库,一起看看吧

一、CSS 实现思路分析

CSS 实现和 JS 的思维不同,需要从另一个角度去看待这个问题。

比如这里的需要对点击事件进行限制,也就是禁用点击事件,想想有什么方式可以禁用事件,没错,就是pointer-events;

然后是时间的限制,每次点击后需要自动禁用300ms,时间过后重新恢复,那么,有什么特性和时间以及状态恢复有关呢?没错,就是animation;

除此之外,还需要有触发时机,这里是点击行为,所以必然和伪类:active有关联。

因此,综合分析,实现这样一个功能需要用到pointer-eventsanimation以及:active,那么如何将这些思路串联起来呢?

image-20221112001600031

思考3秒...

标签:动画,throttle,节流,JS,点击,pointer,events,CSS
From: https://www.cnblogs.com/konglxblog/p/17112556.html

相关文章

  • 766~767 JSP注解,内置对象
    注释:1.html注释:<!---->:只能注释html代码片段2.jsp注释:推荐使用<%----%>:可以注释所有<!--<h1>hello</h1>--><%--<%......
  • @JsonFormat和@DateTimeFormat
    JsonFormat和DateTimeFormat是两个不同的注解,它们用于不同的场景。JsonFormat是Jackson库中的注解,它用于指定Java对象在序列化或反序列化为/从JSON时的格式。D......
  • js-防抖(简易版)
    /** *节流函数 */varcount=1;varcontainer=document.getElementById('container');functiongetUserAction(e){  //console.log(this)  //c......
  • js 防抖
    //防抖作用:防止重复触发事件varcount=1;varcontainer=document.getElementById('container');functiongetUserAction(e){  //console.log(this)  ......
  • JS改变input元素的value之后如何使v-model双向绑定的值也同步改变
    使用dispatchEvent:letel=document.querySelector('#input')el.value='newvalue'el.dispatchEvent(newEvent('input'))有的元素可能需要使用change事件:el.d......
  • 关于js类的继承
    原型链继承特点:基于原型链,既是父类的实例,也是子类的实例。缺点:无法实现多继承。构造继承特点:可以实现多继承。缺点:之能继承父类实例的属性和方法,不能继承原型上......
  • Libcurl & Log4cplus 移植和使用 以及 Jsoncpp 简单使用
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • 763~765 JSP指令,概述,page指令
    Jsp:他是一个特殊的页面不仅可以写java代码也可以写HTML1.指令作用用于配置Jsp页面,导入资源文件格式:多个属性值中间空格隔开<%@指令......
  • JSTL常用标签
    常用的JSTL标签1.if:相当于java代码的if语句1.属性:test必须属性接收boolean表达式日光表达式true则显示if标签体内容如果为fa......
  • JSTL练习和三层架构
    JSTL练习需求:在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中<%@taglibprefix="c"uri="http://java.sun.com......