我有一些文本,我已经有 15 种语言的翻译,我在想这是否可能,但我想基本上我有一个按钮,当你点击它时,它会为字符串设置动画一个字母一个字母地翻译,所以我们从 Hello 开始,你点击它会转到 Bonjour 并会为这个过渡设置动画。
这甚至可以使用 jQuery 动画吗?
我有一些文本,我已经有 15 种语言的翻译,我在想这是否可能,但我想基本上我有一个按钮,当你点击它时,它会为字符串设置动画一个字母一个字母地翻译,所以我们从 Hello 开始,你点击它会转到 Bonjour 并会为这个过渡设置动画。
这甚至可以使用 jQuery 动画吗?
编辑:刚刚注意到您的帖子>>它会为逐字母翻译的字符串设置动画<<
我不确定如何将哪个字母映射到哪个字母。例如:你好 -> Bonjour - 你将如何映射字母 H。另外想象一下翻译整个页面需要多长时间..
我建议fadeOut / fadeIn
在整个文本上使用简单的动画,这对用户也更好。见下文,
标记:
<div id="test">Hello</div>
<button>Translate</button>
JS:
$('button').click (function () {
$('#test').fadeOut(500, function () {
$(this).html('Bonjour').fadeIn(300);
});
});
编辑:下面的代码是渐变褪色的粗略版本。动画顺序如下,
效果仍然不优雅,但代码应该可以正常工作。您可能需要调整 CSS(请参阅下面的说明)和动画延迟以获得您喜欢的效果。
演示: http: //jsfiddle.net/9dq3U/7/(调整持续时间以了解其工作原理)
$(function() {
var $test = $('#test');
var $overlay = $('.overlay');
var tmsg = 'Bonjour<p>C\'est le message de test</p><p>Pour démontrer l\'effet de fondu</p>';
$overlay.css({
'width': 10,
'height': $test.outerHeight()
}).position({
of: $test,
my: 'left top',
at: 'left top'
});
$('button').click(function() {
$test.animate({
opacity: 0
}, 1000);
$overlay.show().animate({
'width': ($test.width() + $test.width()/2) //Adjust this as you need
}, 600, function() {
$overlay.css('width', $test.width()); //Adjust this as you need
$test.html(tmsg).animate({
'opacity': 1
}, 200);
$overlay.animate({
'width': 0
}, 1500, function() {
$(this).hide();
});
});
});
});
下面还有用于叠加层的渐变透明背景的CSS :
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjM4JSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMCIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(left, rgba(255,255,255,1) 0%, rgba(255,255,255,1) 20%, rgba(255,255,255,1) 38%, rgba(255,255,255,0) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,1)), color-stop(20%,rgba(255,255,255,1)), color-stop(38%,rgba(255,255,255,1)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 20%,rgba(255,255,255,1) 38%,rgba(255,255,255,0) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 20%,rgba(255,255,255,1) 38%,rgba(255,255,255,0) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(left, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 20%,rgba(255,255,255,1) 38%,rgba(255,255,255,0) 100%); /* IE10+ */
background: linear-gradient(left, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 20%,rgba(255,255,255,1) 38%,rgba(255,255,255,0) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#00ffffff',GradientType=1 ); /* IE6-8 */
当然,上面的不是我写的。。它是在Ultimate CSS 渐变的帮助下生成的。。
祝你好运!如果您需要任何帮助,请告诉我。