【问题标题】:How To Animate CSS Animated Hamburger Icon On MouseOver如何在 MouseOver 上为 CSS 动画汉堡图标设置动画
【发布时间】:2017-05-09 08:18:27
【问题描述】:

我在http://elijahmanor.com/css-animated-hamburger-icon/ 有一个动画 CSS Hamburger 图标,我想使用它,但我想通过悬停使用它来查看 set ex(x),当不悬停时将其设置为 3 行的默认样式.但即使我使用了悬停功能,我也无法做到这一点。

document.querySelector("#nav-toggle")
  .addEventListener("click", function() {
    this.classList.toggle("active");
  });
#nav-toggle {
  position: absolute;
  left: 50%;
  top: 50%;
}

#nav-toggle {
  cursor: pointer;
  padding: 10px 35px 16px 0px;
}

#nav-toggle span,
#nav-toggle span:before,
#nav-toggle span:after {
  cursor: pointer;
  border-radius: 1px;
  height: 5px;
  width: 35px;
  background: black;
  position: absolute;
  display: block;
  content: '';
}

#nav-toggle span:before {
  top: -10px;
}

#nav-toggle span:after {
  bottom: -10px;
}

#nav-toggle span,
#nav-toggle span:before,
#nav-toggle span:after {
  transition: all 500ms ease-in-out;
}

#nav-toggle.active span {
  background-color: transparent;
}

#nav-toggle.active span:before,
#nav-toggle.active span:after {
  top: 0;
}

#nav-toggle.active span:before {
  transform: rotate(45deg);
}

#nav-toggle.active span:after {
  transform: rotate(-45deg);
}
<a id="nav-toggle" href="#"><span></span></a>

【问题讨论】:

    标签: javascript jquery html css animation


    【解决方案1】:

    您可以使用鼠标悬停功能。

    document.querySelector("#nav-toggle")
      .addEventListener("mouseover", function() {
        this.classList.toggle("active");
      });
    #nav-toggle {
      position: absolute;
      left: 50%;
      top: 50%;
    }
    
    #nav-toggle {
      cursor: pointer;
      padding: 10px 35px 16px 0px;
    }
    
    #nav-toggle span,
    #nav-toggle span:before,
    #nav-toggle span:after {
      cursor: pointer;
      border-radius: 1px;
      height: 5px;
      width: 35px;
      background: black;
      position: absolute;
      display: block;
      content: '';
    }
    
    #nav-toggle span:before {
      top: -10px;
    }
    
    #nav-toggle span:after {
      bottom: -10px;
    }
    
    #nav-toggle span,
    #nav-toggle span:before,
    #nav-toggle span:after {
      transition: all 500ms ease-in-out;
    }
    
    #nav-toggle.active span {
      background-color: transparent;
    }
    
    #nav-toggle.active span:before,
    #nav-toggle.active span:after {
      top: 0;
    }
    
    #nav-toggle.active span:before {
      transform: rotate(45deg);
    }
    
    #nav-toggle.active span:after {
      transform: rotate(-45deg);
    }
    <a id="nav-toggle" href="#"><span></span></a>

    【讨论】:

      【解决方案2】:

      您只需在脚本中使用mouseover 而不是hover

      document.querySelector("#nav-toggle")
        .addEventListener("mouseover", function() {
          this.classList.toggle("active");
        });
      

      【讨论】:

        【解决方案3】:

        悬停事件称为mouseover

        事件名称是经典的HTML DOM Events,只是没有 on 前缀。例如,使用mouseover 而不是onmouseover

        document.querySelector( "#nav-toggle" )
          .addEventListener( "mouseover", function() {
            this.classList.toggle( "active" );
          });
        #nav-toggle { position: absolute; left: 50%; top: 50%; }
        
        #nav-toggle { cursor: pointer; padding: 10px 35px 16px 0px; }
        #nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
          cursor: pointer;
          border-radius: 1px;
          height: 5px;
          width: 35px;
          background: black;
          position: absolute;
          display: block;
          content: '';
        }
        #nav-toggle span:before {
          top: -10px; 
        }
        #nav-toggle span:after {
          bottom: -10px;
        }
        
        #nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
          transition: all 500ms ease-in-out;
        }
        #nav-toggle.active span {
          background-color: transparent;
        }
        #nav-toggle.active span:before, #nav-toggle.active span:after {
          top: 0;
        }
        #nav-toggle.active span:before {
          transform: rotate(45deg);
        }
        #nav-toggle.active span:after {
          transform: rotate(-45deg);
        }
        <a id="nav-toggle" href="#"><span></span></a>

        【讨论】:

          【解决方案4】:

          你需要使用mouseover事件。

          document.querySelector( "#nav-toggle" )
            .addEventListener( "mouseover", function() {
              this.classList.toggle( "active" );
            });
          #nav-toggle { position: absolute; left: 50%; top: 50%; }
          
          #nav-toggle { cursor: pointer; padding: 10px 35px 16px 0px; }
          #nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
            cursor: pointer;
            border-radius: 1px;
            height: 5px;
            width: 35px;
            background: black;
            position: absolute;
            display: block;
            content: '';
          }
          #nav-toggle span:before {
            top: -10px; 
          }
          #nav-toggle span:after {
            bottom: -10px;
          }
          
          #nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
            transition: all 500ms ease-in-out;
          }
          #nav-toggle.active span {
            background-color: transparent;
          }
          #nav-toggle.active span:before, #nav-toggle.active span:after {
            top: 0;
          }
          #nav-toggle.active span:before {
            transform: rotate(45deg);
          }
          #nav-toggle.active span:after {
            transform: rotate(-45deg);
          }
          <a id="nav-toggle" href="#"><span></span></a>

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-03-30
            • 1970-01-01
            • 2019-01-28
            • 2017-12-01
            • 1970-01-01
            相关资源
            最近更新 更多