淡入淡出,不带jQuery
FadeIn and Out, without jQuery
我试图实现以下目标。
我有一篇文章,里面有一些内容。当我点击一个按钮,这篇文章就会消失。在它褪色后,它得到了一个新的类,用于以另一种方式显示内容。现在我想再次淡化它。但我找不到办法。
当我执行以下操作时,不透明度从一开始就保持为1。transition()
函数由按钮调用。2000毫秒后,我调用了一个函数来更改文章的内容。当我只使用fadeOut
时,一切都很好。但当我加上CCD_ 3时,不透明度保持在1。因此,我一点也不褪色。但内容至少仍在变化。
function transition() {
fadeOut("article");
setTimeout(listener, 2000);
fadeIn("article");
}
function fadeOut(element) {
var ele = document.getElementsByTagName(element);
ele[0].style.transition = "opacity 2s linear 0s";
ele[0].style.opacity = 0;
}
function fadeIn(element) {
var ele = document.getElementsByTagName(element);
ele[0].style.transition = "opacity 2s linear 0s";
ele[0].style.opacity = 1;
}
希望有人能给我一个提示如何解决这个问题。请不要对jQuery提出任何建议。我想把它做成本地的。
您误解了setTimeout
的作用。
它总是立即返回,因此您可以有效地将不透明度设置为0
,然后立即再次将其设置回1
。
试试这个。
function transition() {
fadeOut("article");
setTimeout(function() { fadeIn("article"); }, 2000);
}
setTimeout
将创建一个后台计时器并返回,使后台计时器滴答作响。您的fadeIn
函数将在两秒钟后被调用。
Daniel,
首先,您需要将返回函数放入setTimeout调用中,而不是在setTimeout设置和事件之后,以便在给定时间后调用该函数,因此当前您的转换是在第一次从淡出切换到淡入后立即添加的。其次,在调用其他函数之前进行get元素调用要高效得多,这样就不会一直搜索DOM。
这是您的代码的更新版本,虽然仍然不完美,但其中包含了这些建议。
transition();
function transition(){
var ele = document.getElementsByTagName("article");
fadeOut(ele);
setTimeout(function(){
fadeIn(ele);
}, 2000);
}
function fadeOut(element) {
element[0].style.transition = "opacity 2s linear 0s";
element[0].style.opacity = 0;
}
function fadeIn(element) {
element[0].style.transition = "opacity 2s linear 0s";
element[0].style.opacity = 1;
}
<body>
<article>
Test
</article>
</body>
这里还有一个更新的版本,可以容纳多篇文章。
transition();
function transition() {
var ele = document.getElementsByTagName("article");
var count = ele.length;
for (x = 0; x < count; x++) {
fadeOut(ele[x]);
}
setTimeout(function() {
for (x = 0; x < count; x++) {
fadeIn(ele[x]);
}
}, 2000);
}
function fadeOut(element) {
if (element != undefined) {
element.style.transition = "opacity 2s linear 0s";
element.style.opacity = 0;
}
}
function fadeIn(element) {
if (element != undefined) {
element.style.transition = "opacity 2s linear 0s";
element.style.opacity = 1;
}
}
<body>
<article>
Test
</article>
<article>
Test
</article>
</body>
相关文章:
- 在web应用程序中的新搜索中重新加载搜索结果(不带jQuery)
- 不带jquery的全屏分页
- ajax中的文本链接不带Jquery
- 删除不带jQuery的覆盖css
- 获取不带Jquery的嵌套父HREF节点
- 将javascript中的JSON输出为不带jquery的列表
- 使用jquery或regex,带点但不带点的拆分字符串位于单引号中
- 获取不带Id JQuery的复选框值
- 不带dom对象的jquery ajaxComplete()
- 等效于不带jQuery的getJSON函数
- 带有post值的JS jQuery重定向,不带<表单>
- jQuery获取不带引号的背景图像URL
- 获取不带输入标记的Td-innert html-Jquery
- jquery不接受带引号的变量
- 使用Javascript(不带jquery)触发Anchor链接上的链接
- 将数据与HTML元素关联(不带jQuery)
- 添加一个不带jquery的工具提示-Javascript
- 将类添加到指令中的元素,带有角度和不带 jquery
- 只允许整数和十进制数字textbow jquery(不带正则表达式)
- 带有两个选择框的动态页面,iframe和jQuery(不带PHP)