zoukankan      html  css  js  c++  java
  • "锁"

      “锁”,指的是状态切换,状态未切换完成,加上锁,完成后才打开锁。

    下面例子要完成一个点击按钮切换颜色的小示例,先看未加“锁”时候的效果

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <style>
     7         *{
     8             margin: 0;
     9             padding: 0;
    10         }
    11         .box{
    12             width: 200px;
    13             height: 200px;
    14             transition: all 3s;
    15             -webkit-transition: all 3s;
    16         }
    17         .color1{
    18             background-color: #985f0d;
    19         }
    20         .color2{
    21             background-color: #0BB995;
    22         }
    23     </style>
    24     <script src="../base/jquery-3.1.0.js"></script>
    25 </head>
    26 <body>
    27 <div class="box color1"></div>
    28 <a class="btn" href="javascript:;">点我移动</a>
    29 <script>
    30     $(function () {
    31         var box = $('.box'),
    32             btn = $('.btn');
    33 
    34         btn.click(function () {
    35             box.hasClass('color1') ? box.addClass('color2').removeClass('color1') : box.addClass('color1').removeClass('color2')
    36         })
    37     })
    38 </script>
    39 </body>
    40 </html>

    具体样式自己cv看就行了。想看出错误,你可以狂点,你会发现,颜色还没变化完成,就又开始变化了。

    而开发的时候,是不允许用户狂点的,但是你又不能告诉用户,“你可别狂点啊”。想要防止用户狂点,就得在代码上面做些手段了。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <style>
     7         * {
     8             margin: 0;
     9             padding: 0;
    10         }
    11 
    12         .box {
    13             width: 200px;
    14             height: 200px;
    15             transition: all 3s;
    16             -webkit-transition: all 3s;
    17         }
    18 
    19         .color1 {
    20             background-color: #985f0d;
    21         }
    22 
    23         .color2 {
    24             background-color: #0BB995;
    25         }
    26     </style>
    27     <script src="../base/jquery-3.1.0.js"></script>
    28 </head>
    29 <body>
    30 <div class="box color1"></div>
    31 <a class="btn" href="javascript:;">点我移动</a>
    32 <script>
    33     $(function () {
    34         var box = $('.box'),
    35             btn = $('.btn'),
    36             changing = false;
    37 
    38         btn.click(function () {
    39             if (changing) return false;
    40             changing = true;
    41 
    42             if (box.hasClass('color1')) {
    43                 box.removeClass('color1').addClass('color2');
    44                 box.on('webkitTransitionEnd otransitionend transitionend', function () {
    45                     changing = false;
    46                 })
    47             } else if (box.hasClass('color2')) {
    48                 box.removeClass('color2').addClass('color1');
    49                 box.on('webkitTransitionEnd otransitionend transitionend', function () {
    50                     changing = false;
    51                 })
    52             }
    53         })
    54     })
    55 </script>
    56 </body>
    57 </html>

    现在,我就能跟用户说一句,‘来啊,快(kuang)活(jian)啊’。

    “锁”适用情况:

      1、ajax提交

      2、动画(翻牌、轮播图、方块移动etc)

    说白了也就是,有 过程 的都需要一个“锁”。

           “锁”是为了防止用户狂点。

  • 相关阅读:
    链表和递归
    Async and Await
    Linux下如何对目录中的文件进行统计
    Linux系统添加自定义网卡并更改网卡接口
    运维实战:Linux系统扩展oracle数据库所在的分区
    在Linux命令行发送电子邮件附件的两种方法
    Centos7部署轻量级自动化运维工具pssh
    CentOS7中使用systemctl列出启动失败的服务
    AbstractQueuedSynchronizer详解(转)
    Oracle 11g数据导入到10g
  • 原文地址:https://www.cnblogs.com/chenluomenggongzi/p/6595585.html
Copyright © 2011-2022 走看看