【问题标题】:what I need to know to create an animated hover with javascript [closed]用javascript创建动画悬停我需要知道什么[关闭]
【发布时间】:2016-05-10 18:40:09
【问题描述】:

http://www.webdesignerdepot.com/ 菜单中创建这样的动画悬停我需要知道什么?我知道这个菜单是用 javascript 完成的,我毫不怀疑应该在哪里寻找这些图标。

【问题讨论】:

  • f12 在您使用鼠标悬停时查看 html 并阅读有关 Html5、css3 和 javascript 的信息。
  • 好的。我在哪里可以找到新图标?

标签: javascript css hover


【解决方案1】:

您可以将 svg 与 css(过渡动画)一起使用

您可以在这里阅读更多内容:https://css-tricks.com/using-svg/

我用 transform 复制并修改了一些他们的例子: https://plnkr.co/edit/MHIL0sHMVWQE9lonA4eh?p=preview'

希望这会有所帮助:)

    <!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
  </head>
  <body>
     <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     width="612px" height="502.174px" viewBox="0 65.326 612 502.174" enable-background="new 0 65.326 612 502.174"
     xml:space="preserve" class="logo">
      <ellipse class="ground" cx="283.5" cy="487.5" rx="259" ry="80"/>
      <path class="kiwi" d="M210.333,65.331C104.367,66.105-12.349,150.637,1.056,276.449c4.303,40.393,18.533,63.704,52.171,79.03
        c36.307,16.544,57.022,54.556,50.406,112.954c-9.935,4.88-17.405,11.031-19.132,20.015c7.531-0.17,14.943-0.312,22.59,4.341
        c20.333,12.375,31.296,27.363,42.979,51.72c1.714,3.572,8.192,2.849,8.312-3.078c0.17-8.467-1.856-17.454-5.226-26.933
        c-2.955-8.313,3.059-7.985,6.917-6.106c6.399,3.115,16.334,9.43,30.39,13.098c5.392,1.407,5.995-3.877,5.224-6.991
        c-1.864-7.522-11.009-10.862-24.519-19.229c-4.82-2.984-0.927-9.736,5.168-8.351l20.234,2.415c3.359,0.763,4.555-6.114,0.882-7.875
        c-14.198-6.804-28.897-10.098-53.864-7.799c-11.617-29.265-29.811-61.617-15.674-81.681c12.639-17.938,31.216-20.74,39.147,43.489
        c-5.002,3.107-11.215,5.031-11.332,13.024c7.201-2.845,11.207-1.399,14.791,0c17.912,6.998,35.462,21.826,52.982,37.309
        c3.739,3.303,8.413-1.718,6.991-6.034c-2.138-6.494-8.053-10.659-14.791-20.016c-3.239-4.495,5.03-7.045,10.886-6.876
        c13.849,0.396,22.886,8.268,35.177,11.218c4.483,1.076,9.741-1.964,6.917-6.917c-3.472-6.085-13.015-9.124-19.18-13.413
        c-4.357-3.029-3.025-7.132,2.697-6.602c3.905,0.361,8.478,2.271,13.908,1.767c9.946-0.925,7.717-7.169-0.883-9.566
        c-19.036-5.304-39.891-6.311-61.665-5.225c-43.837-8.358-31.554-84.887,0-90.363c29.571-5.132,62.966-13.339,99.928-32.156
        c32.668-5.429,64.835-12.446,92.939-33.85c48.106-14.469,111.903,16.113,204.241,149.695c3.926,5.681,15.819,9.94,9.524-6.351
        c-15.893-41.125-68.176-93.328-92.13-132.085c-24.581-39.774-14.34-61.243-39.957-91.247
        c-21.326-24.978-47.502-25.803-77.339-17.365c-23.461,6.634-39.234-7.117-52.98-31.273C318.42,87.525,265.838,64.927,210.333,65.331
        z M445.731,203.01c6.12,0,11.112,4.919,11.112,11.038c0,6.119-4.994,11.111-11.112,11.111s-11.038-4.994-11.038-11.111
        C434.693,207.929,439.613,203.01,445.731,203.01z"/>
      <filter id="pictureFilter" >
        <feGaussianBlur stdDeviation="15" />
      </filter>
    </svg>
  </body>
/html>

和css

.kiwi {
      fill: #94d31b; 
      transition: transform 300ms, fill 300ms;
    }
    .kiwi:hover {
      fill: #ace63c; 
      transform: translate(100px,100px)  rotate(30deg);
      transform-origin: 50% 50%;
    }

    .ground {
      fill: #787f6a;
    }
    .ground:hover {
      filter: url(#pictureFilter);
      fill: #896d3d;
    }

【讨论】:

  • 有没有准备好svs图标的网站?
【解决方案2】:

如果我是你,我会使用 jQuery,因为看起来这些效果是基于 jQuery hover 事件:

  $(document).ready(function(){

  $('div').hover(
    function(){
     $(this).addClass('active');
    },
    function(){
    $(this).removeClass('active');    
    }
  );

})

您将需要创建 CSS 类,我们称之为“活动”,并处理这些类的属性

函数如下:

$('div').animate({left:'+=10px'},500);

可能有用:{left:'+=10px'} - 向左移动部分,500 - 毫秒 我想它会产生你想要达到的类似效果

【讨论】:

  • 为什么要使用 jQuery 而不仅仅是 css :hover 选择器?
  • 对我来说,Jquery 更灵活,比 css 有更多的实现,恕我直言
  • 但是在这种情况下,您只是使用它来应用一个类。您可以在 :hover 选择器上使用 css 转换,并且根本不需要 javascript。这似乎有点矫枉过正。
  • 如何制作类似:$('div').animate({left:'+=10px'},500); - 仅在 CSS 中(将部分向右或向左移动延迟)?
  • div { 左:0px;过渡:左 500ms;过渡延迟:500ms } div:hover { left: 10px; }
猜你喜欢
  • 1970-01-01
  • 2011-11-27
  • 2012-02-08
  • 2021-04-15
  • 2010-12-13
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多