我正在开发一个用户可以自定义的网站,我想让“振动/嗡嗡声”成为 DOM 的一个元素(在我的具体情况下它是一个DIV
)。当您长按任何应用程序图标(所有图标都会摇晃)时,我想获得类似于 iOS 上发生的效果。
在网上搜索我刚刚找到了这个 jQuery 库: http: //www.dev4web.eu/projects/jquery.vibrate/
但是我不确定使用它是否能够获得良好的效果。
关于如何实现这一点的任何想法?
谢谢!
我正在开发一个用户可以自定义的网站,我想让“振动/嗡嗡声”成为 DOM 的一个元素(在我的具体情况下它是一个DIV
)。当您长按任何应用程序图标(所有图标都会摇晃)时,我想获得类似于 iOS 上发生的效果。
在网上搜索我刚刚找到了这个 jQuery 库: http: //www.dev4web.eu/projects/jquery.vibrate/
但是我不确定使用它是否能够获得良好的效果。
关于如何实现这一点的任何想法?
谢谢!
您还可以像这样实现自己的动画:
function shake(){
$('#div').animate({
'margin-left': '-=5px',
'margin-right': '+=5px'
}, 200, function() {
$('#div').animate({
'margin-left': '+=5px',
'margin-right': '-=5px'
}, 200, function() {
//and so on...
});
});
}
使用 jquery 的插件:
$('#loginL').effect('shake');
我最近构建了一些旨在模仿 iOS 摆动效果的东西,以便在 jQuery 可排序之上使用。你可以在tastemakerx.com 上看到它,我用它来增强收藏分类功能。
这是我开始的小提琴:http: //jsfiddle.net/jozecuervo/fv8vR/
这是CSS:
@-webkit-keyframes shake {
0%, 100% {-webkit-transform: translateX(0) rotate(0deg) translateY(0);}
15%, 35%, 55%, 75%, 95% {-webkit-transform: translateX(-1px) rotate(-2deg) ;}
25%, 45%, 65%, 85% {-webkit-transform: translateX(1px) rotate(2deg); }
10%, 30%, 50%, 70%, 90% {-webkit-transform: translateY(1px);}
20%, 40%, 60%, 80% {-webkit-transform: translateY(-1px); }
}
@-moz-keyframes shake {
0%, 100% {-moz-transform: translateX(0) rotate(0deg) translateY(0);}
15%, 35%, 55%, 75%, 95% {-moz-transform: translateX(-1px) rotate(-2deg) ;}
25%, 45%, 65%, 85% {-moz-transform: translateX(1px) rotate(2deg); }
10%, 30%, 50%, 70%, 90% {-moz-transform: translateY(1px);}
20%, 40%, 60%, 80% {-moz-transform: translateY(-1px); }
}
@-o-keyframes shake {
0%, 100% {-o-transform: translateX(0) rotate(0deg) translateY(0);}
15%, 35%, 55%, 75%, 95% {-o-transform: translateX(-1px) rotate(-2deg) ;}
25%, 45%, 65%, 85% {-o-transform: translateX(1px) rotate(2deg); }
10%, 30%, 50%, 70%, 90% {-o-transform: translateY(1px);}
20%, 40%, 60%, 80% {-o-transform: translateY(-1px); }
}
@keyframes shake {
0%, 100% {transform: translateX(0) rotate(0deg) translateY(0);}
15%, 35%, 55%, 75%, 95% {transform: translateX(-1px) rotate(-2deg) ;}
25%, 45%, 65%, 85% {transform: translateX(1px) rotate(2deg); }
10%, 30%, 50%, 70%, 90% {transform: translateY(1px);}
20%, 40%, 60%, 80% {transform: translateY(-1px); }
}
.shake {
-webkit-animation-name: shake;
-moz-animation-name: shake;
-o-animation-name: shake;
animation-name: shake;
-webkit-animation-duration: 2s;
-moz-animation-duration: 2s;
-o-animation-duration: 2s;
animation-duration: 2s;
-webkit-animation-fill-mode: both;
-moz-animation-fill-mode: both;
-o-animation-fill-mode: both;
animation-fill-mode: both;
-webkit-animation-iteration-count: infinite;
-moz-animation-iteration-count: infinite;
-o-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-transition-timing-function:linear;
}
这是一些 Javascript,可以满足您的需求。
var times = 10;
var duration = 200;
for (var i = 0; i < times; i++)
$('div#shake-it').animate({
left: (i % 2 === 0 ? "-" : "+") + "=50"
}, duration);
与许多其他解决方案一样,它需要 jQuery 库。但是它不需要任何其他插件。
您可以使用jQuery
Rumble 之类的插件:http: //jackrugile.com/jrumble/
您可以使用animate
. 举个例子(演示如何摇动 div):
<div id="div">
</div>
<input type="button" id="buzz" />
$("#buzz").click(function() {
$("#div").animate({
left: "20px",
}, 50);
$("#div").animate({
left: "-20px",
}, 50);
$("#div").animate({
left: "20px",
},50);
});
“jQuery ClassyWiggle 允许您模拟 iPhone 上的图标在您按住它们时的摆动效果。”
查看Marius Stanciu的Classy Wiggle JQuery 插件。
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
$('#shakediv').effect('shake');
jquery ui内置抖音效果,导入使用
按照下面的例子
<div class="buzz">
<!-- Your Div Content Here -->
</div>
<script>
$(docuement).ready(function(){
buzzMe();
//or
buzzMeFor(0)
})
function buzzMe()
{
$('buzz').css('margin-left','-2');
delay(500);
$('buzz').css('margin-left','2');
delay(500);
buzzMe()
}
//Or use this function for Specific times
//Call & Pass Arguments 0
function buzzMeFor(count)
{
count++;
$('buzz').css('margin-left','-2');
delay(500);
$('buzz').css('margin-left','2');
delay(500);
if(count!=20)
buzzMe(count)
}
</script>
仅使用 jQuery 的 animate 函数,以下方法可以解决问题:
function recursiveShake(jQelement, pixel, counter) {
if (counter > 0) {
jQelement.animate({
'margin-left': '+='.concat(pixel, 'px')},
30,
recursiveShake(jQelement, -pixel, counter - 1)
);
}
}
// (counter must be even to avoid any shift)