我有以下代码:http://jsfiddle.net/odj8v0x4/ .
function stopGlobe() {
$('.mapfront').removeClass('mapfront-anim');
$('.mapback').removeClass('mapback-anim');
}
function startGlobe() {
$('.mapfront').addClass('mapfront-anim');
$('.mapback').addClass('mapback-anim');
}@keyframes mapfront_spin {
0% {
background-position: 1400px 0%;
}
100% {
background-position: 0 0%;
}
}
@keyframes mapback_spin {
0% {
background-position: 0 0%;
}
100% {
background-position: 1400px 0%;
}
}
@-webkit-keyframes mapfront_spin {
0% {
background-position: 1400px 0%;
}
100% {
background-position: 0 0%;
}
}
@-webkit-keyframes mapback_spin {
0% {
background-position: 0 0%;
}
100% {
background-position: 1400px 0%;
}
}
body {
margin: 50px;
background: #000;
}
.globe {
width: 400px;
height: 400px;
position: relative;
}
.front {
width: 400px;
height: 400px;
background: url(http://dl.dropboxusercontent.com/u/17180596/SphereForeground.png);
z-index: 5;
position: absolute;
top: 0;
left: 0;
}
.back {
width: 400px;
height: 400px;
background: url(http://dl.dropboxusercontent.com/u/17180596/SphereBackground.png);
z-index: 2;
position: absolute;
top: 0;
left: 0;
}
.mapfront, .mapback {
border-radius: 300px;
width: 340px;
height: 340px;
position: absolute;
top: 30px;
left: 30px;
z-index: 4;
}
.mapfront {
background: url(http://dl.dropboxusercontent.com/u/17180596/CartoForeground.png) repeat-x;
}
.mapfront-anim {
-webkit-animation: mapfront_spin 15s linear infinite;
animation: mapfront_spin 15s linear infinite;
}
.mapback {
background: url(http://dl.dropboxusercontent.com/u/17180596/CartoBackground.png) repeat-x;
position: absolute;
}
.mapback-anim {
-webkit-animation: mapback_spin 15s linear infinite;
animation: mapback_spin 15s linear infinite;
}<div class="globe">
<div class="front"></div>
<div class="mapfront mapfront-anim"></div>
<div class="mapback mapback-anim"></div>
<div class="back"></div>
</div>
执行 javascript 函数 stopGlobe() 后动画停止,但突然停止。
我能否平稳地停止动画,以避免突然跳入,然后从停止的地方再次继续播放动画?
最佳答案
您可以仅使用 CSS 实现此目的。
您只需要稍微移动一下即可使其顺畅。
因此,我在需要时设置了转换翻译。 并且此变换通过缓出进行过渡,以产生平滑效果。
因此,当鼠标悬停时,动画会(突然)停止。但与此同时,应用了变换转换,并且由于此变换是通过适当的缓动进行过渡的,因此它会立即以与动画相同的速度开始。
这个速度会随着缓动而变慢,直到停止。
我在应用了翻译的元素中添加了一个包装器。为避免此转换“移动”元素,我们需要使元素大于可见空间,并在包装器内设置以限制可见部分(这将是静态的)
只需将鼠标悬停在地球上即可。 (看马,没有 JS)
@keyframes mapfront_spin {
0% { background-position: 1400px 0%; }
100% { background-position: 0 0%; }
}
@keyframes mapback_spin {
0% { background-position: 0 0%; }
100% { background-position: 1400px 0%; }
}
@-webkit-keyframes mapfront_spin {
0% { background-position: 1400px 0%; }
100% { background-position: 0 0%; }
}
@-webkit-keyframes mapback_spin {
0% { background-position: 0 0%; }
100% { background-position: 1400px 0%; }
}
body {
margin: 50px;
background: #000;
}
.globe {
width: 400px;
height: 400px;
position: relative;
}
.front {
width: 400px;
height: 400px;
background: url(http://dl.dropboxusercontent.com/u/17180596/SphereForeground.png);
z-index: 5;
position: absolute;
top: 0;
left: 0;
}
.back {
width: 400px;
height: 400px;
background: url(http://dl.dropboxusercontent.com/u/17180596/SphereBackground.png);
z-index: 2;
position: absolute;
top: 0;
left: 0;
}
.mapfront, .mapback {
border-radius: 300px;
width: 340px;
height: 340px;
position: absolute;
top: 30px;
left: 30px;
z-index: 4;
overflow: hidden;
}
.mapfront-inner {
width: 380px;
height: 340px;
top: 0px;
left: 0px;
position: absolute;
background: url(http://dl.dropboxusercontent.com/u/17180596/CartoForeground.png) repeat-x;
transition: transform 1s ease-out;
}
.mapfront-anim {
-webkit-animation: mapfront_spin 15s linear infinite;
animation: mapfront_spin 15s linear infinite;
}
.globe:hover .mapfront-anim,
.globe:hover .mapback-anim
{
-webkit-animation-play-state: paused;
animation-play-state: paused;
}
.globe:hover .mapfront-inner {
transform: translateX(-40px);
}
.mapback-inner {
width: 380px;
height: 340px;
top: 0px;
left: -40px;
background: url(http://dl.dropboxusercontent.com/u/17180596/CartoBackground.png) repeat-x;
position: absolute;
transition: transform 1s ease-out;
}
.globe:hover .mapback-inner {
transform: translateX(40px);
}
.mapback-anim {
-webkit-animation: mapback_spin 15s linear infinite;
animation: mapback_spin 15s linear infinite;
}<div class="globe">
<div class="front"></div>
<div class="mapfront">
<div class="mapfront-inner mapfront-anim">
</div>
</div>
<div class="mapback">
<div class="mapback-inner mapback-anim">
</div>
</div>
<div class="back"></div>
</div>
关于javascript - 平滑停止 CSS 关键帧动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29668238/
我在MiniTest::Spec和Capybara中使用以下规范:find_field('Email').must_have_css('[autofocus]')检查名为“电子邮件”的字段是否具有autofocus属性。doc说如下:has_css?(path,options={})ChecksifagivenCSSselectorisonthepageorcurrentnode.据我了解,字段“Email”是一个节点,因此调用must_have_css绝对有效!我做错了什么? 最佳答案 通过JonasNicklas得到了答案:No
我有一个div,它根据表单是否正确提交而改变。我想知道是否可以检查类的特定元素?开始元素看起来像这样。如果输入不正确,添加错误类。 最佳答案 试试这个:browser.div(:id=>"myerrortest").class_name更多信息:http://watir.github.com/watir-webdriver/doc/Watir/HTMLElement.html#class_name-instance_method另一种选择是只查看具有您期望的类的div是否存在browser.div((:id=>"myerrortes
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
我正在尝试学习Ruby词法分析器和解析器(whitequarkparser)以了解更多有关从Ruby脚本进一步生成机器代码的过程。在解析以下Ruby代码字符串时。defadd(a,b)returna+bendputsadd1,2它导致以下S表达式符号。s(:begin,s(:def,:add,s(:args,s(:arg,:a),s(:arg,:b)),s(:return,s(:send,s(:lvar,:a),:+,s(:lvar,:b)))),s(:send,nil,:puts,s(:send,nil,:add,s(:int,1),s(:int,3))))任何人都可以向我解释生成的
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe
下面的代码工作正常:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson)do|key,oldv,newv|ifkey==:aoldvelsifkey==:bnewvelsekeyendendputskerson.inspect但是如果我在“ifblock”中添加return,我会得到一个错误:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson
我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1
rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:
我正在尝试消除使用Bootstrap3的Rails4元素中的glyphicon错误。我没有使用任何Bootstrapgem将其添加到Assets管道中。我手动将bootstrap.css和bootstrap.js添加到各自的app/assets目录下,分别添加到application.css和application.js什么的我现在在网络浏览器的控制台中看到以下内容:GEThttp://localhost:3000/fonts/glyphicons-halflings-regular.woff404(NotFound)localhost/:1GEThttp://localhost:30