Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何创建动画滚动箭头动画_Jquery_Html_Css_Animation - Fatal编程技术网

Jquery 如何创建动画滚动箭头动画

Jquery 如何创建动画滚动箭头动画,jquery,html,css,animation,Jquery,Html,Css,Animation,我想做一个像这样的翻滚按钮 此按钮具有滚动效果。示例:如果在按钮上滚动,则文本应淡出,箭头应从左侧出现并创建。展开后,箭头移到右侧并淡出,文本再次淡入 示例:如果你去那个网站并按下按钮,你就会明白 我研究过他们的代码,CSS我能理解,但是有一个JS问题我不能理解 你能想出我怎样才能使它像这样的滚动效果吗 有类似的html代码 <a href="#" class="promo__button" data-module="modules/AnimatedArrowButton" data-c

我想做一个像这样的翻滚按钮

此按钮具有滚动效果。示例:如果在按钮上滚动,则文本应淡出,箭头应从左侧出现并创建。展开后,箭头移到右侧并淡出,文本再次淡入

示例:如果你去那个网站并按下按钮,你就会明白

我研究过他们的代码,CSS我能理解,但是有一个JS问题我不能理解

你能想出我怎样才能使它像这样的滚动效果吗

有类似的html代码

<a href="#" class="promo__button" data-module="modules/AnimatedArrowButton" data-contact-button>Tell me more</a>

那里的数据属性
模块/AnimatedArrowButton
实际上调用js并创建更多span


演示没有效果

如果您想要一个简单的解决方案,我建议只使用css
转换
,除了使用javascript更改一个类以具有不同的淡入淡出动画

采取以下结构:

<a class="promo__button exit">
  <span class="arrowleft">
     <span>*the arrow that comes from the left*</span>
  </span>
  <span class="message">
     <span>*the text*</span>
  </span>
  <span class="arrowleft">
     <span>*the arrow that disappears to the right*</span>
  </span>
</a>
现在添加
.promo\uu按钮**{transition:left 0.2s,opacity,0.2s}
,用于所有从正常变为悬停的值

使用两个类隐藏不需要的箭头动画:

.promo__button.enter .arrowright {display:none}
.promo__button.exit .arrowleft {display:none}

并使用javascript在MouseCenter上切换进入/退出。我尽量减少额外的加价;唯一添加的是一个环绕文本的跨距。箭头是通过创建的。在我看来,它纯粹是装饰性的,如果是用其他元素构建的,就不会有语义

<a href="#" class="promo__button">
  <span>Tell me more</span>
</a>

我尽我最大的努力保持代码的干净和注释。几个重要的方面:

  • 您会注意到部分动画在页面加载时播放。这是一个已知的问题,您可以在hover上应用动画类。这看起来同样不错,但避免了页面加载时这些按钮的笨拙动画:

  • 所有动画都存储在末尾的关键帧中<代码>悬停时或鼠标悬停时动画与赋值一起应用,例如
    。按钮:悬停span
    指令<在标准声明中指定了“鼠标出时的代码>”。按钮span,这有点违反直觉,因此值得一提。毕竟没有
    :取消悬停

  • forwards
    动画分配中的关键字表示动画将仅向前播放并在此处停止。这是关键。例如,当我们向右滑动文本并将其淡出时,我们希望文本保持在最后一个关键帧上。如果不向前,动画将跳回关键帧1

  • 我使箭头元素的宽度为2像素。我认为它看起来比1px版本更好,也不那么紧张,但这是一个足够容易的调整


  • 如果你还有其他问题,请告诉我。这是一个有趣的小演示。

    您可以混合使用css和jQuery来实现这一效果(因为您用jQuery标记了您的问题)

    var timeout=null;
    var transitionEnd=真;
    jQuery('.line').on(“mouseenter”,function(){
    如果(!transitionEnd)
    返回;
    _this=jQuery(this);
    _此.addClass(“隐藏文本”);
    timeout=setTimeout(函数(){
    _本文件为addClass(“in”);
    }, 300);
    transitionEnd=false;
    }).on(“mouseleave”,函数(){
    clearTimeout(超时);
    jQuery(this).addClass(“out”).one(“transitionend”,function()){
    transitionEnd=真;
    jQuery(this.removeClass)(“在中隐藏文本”);
    });
    });
    
    .line{
    背景色:红色;
    边框:1px实心;
    边界半径:5px;
    颜色:白色;
    光标:指针;
    显示:块;
    浮动:左;
    字体大小:25px;
    高度:70像素;
    线高:70px;
    利润率:30像素;
    溢出:隐藏;
    位置:相对位置;
    文本对齐:居中;
    宽度:200px;
    }
    .行::之后{
    内容:“;
    边框顶部:1px纯白;
    位置:绝对位置;
    最高:50%;
    右:100%;
    左-150%;
    过渡:左0.5s,右0.3s;
    不透明度:0;
    }
    .行::之前{
    右边框:1px纯白;
    边框顶部:1px纯白;
    内容:“;
    高度:10px;
    位置:绝对位置;
    右:20%;
    顶部:计算值(50%-5px);
    变换:旋转(45度)比例(0.2);
    过渡:所有0.5秒到0秒;
    宽度:10px;
    不透明度:0;
    }
    .线路跨度,
    .line.out span{
    不透明度:1;
    过渡:0.5s;
    过渡延迟:0.1s;
    }
    .line.hide-text span{
    不透明度:0;
    }
    .line.in::之后{
    左:20%;
    右:20%;
    不透明度:1;
    }
    .line.in::之前{
    变换:旋转(45度)比例(1);
    不透明度:1;
    }
    .line.out::之前{
    右图:-100%;
    转换延迟:0s;
    }
    .line.out::之后{
    左:100%;
    右图:-150%;
    过渡:左0.3s,右0.3s;
    }
    
    按钮文本
    
    我肯定该按钮不需要javascript

    以下是仅使用html和css的高级框架:

    按钮{
    背景色:红色;
    边界:无;
    填充:1rem;
    溢出:隐藏;
    位置:相对位置;
    }
    .阿罗{
    可见性:隐藏;
    不透明度:0;
    位置:绝对位置;
    转换:translateX(-30px);
    过渡:0.4s;
    }
    按钮:悬停。箭头{
    能见度:可见;
    不透明度:1;
    转换:translateX(0px);
    }
    .文本{
    能见度:可见;
    不透明度:1;
    过渡:0.4s;
    显示:内联块;
    }
    /*悬停时隐藏按钮*/
    按钮:悬停。文本{
    可见性:隐藏;
    不透明度:0;
    转换:translateX(30px);
    }
    
    -->
    你好
    
    我知道为时已晚,但可能会很有趣。我使用了大量使用的after和before伪类的css-only动画

    正文{
    字体系列:“Helvetica Neue”,无衬线;
    背景:#f8f8;
    }
    .宣传片{
    颜色:#fff;
    文本对齐:居中;
    }
    .促销按钮{
    边框:1px实心#fff;
    显示:内联块;
    位置:相对位置;
    边缘顶部:1.5em;
    字体大小:24px;
    填充:20px 50px;
    文字装饰:无;
    文本转换:大写;
    字号:700;
    线高:1;
    字母间距:.025em;
    文本对齐:居中;
    颜色:
    
    <a href="#" class="promo__button">
      <span>Tell me more</span>
    </a>