【发布时间】:2014-01-08 20:36:21
【问题描述】:
我有一个句子,我淡入一个单词并用数组中的另一个替换它。但是,由于单词的长度都不同,因此句子宽度会突然变化,从而导致过渡不连贯。
如何为宽度变化设置动画?我尝试在 css 中向句子的容器添加过渡,但这没有用。我将过渡应用为1.5s all linear,因此只要有变化,它应该为宽度以及其他所有内容设置动画。有什么想法吗?
$(function() {
var hello = ['dynamic', 'a', 'aklsjdlfajklsdlkf', 'asdf'];
var used = ['dynamic'];
var greeting = $('#what');
var item;
function hey() {
item = hello[Math.floor(Math.random() * hello.length)];
if (hello.length != used.length) {
while (jQuery.inArray(item, used) != -1) {
item = hello[Math.floor(Math.random() * hello.length)];
}
used.push(item);
} else {
used.length = 0;
item = hello[Math.floor(Math.random() * hello.length)];
used.push(item);
}
greeting.html(item);
greeting.animate({
"opacity": "1"
}, 1500);
}
window.setInterval(function() {
greeting.animate({
"opacity": "0"
}, 1500);
setTimeout(hey, 1500)
}, 5000);
});
#sentence {
transition: 1.5s all linear;
}
#what {
font-style: italic;
text-decoration: underline;
color: red;
}
<p id="sentence">
This is a sentence that has <span id="what">dynamic</span> text that alters width.
</p>
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
编辑:对不起,如果我不清楚,我只想淡出这个词,而不是整个句子。我正在尝试为宽度设置动画以适应新单词。我不想更改/添加任何元素,只需使用当前标签解决即可。
【问题讨论】:
-
Css 动画不会为未声明的值设置动画......就像自动宽度到自动宽度......只有当它设置为精确值......就像你有 100 并更改这个值一样,它将动画变化
-
所以你可以这样做。通过脚本设置现有单词的宽度。然后在更改之前测量新的单词宽度(有很多不同的方法)并设置不透明度......
标签: javascript jquery html css animation