javascript - 使用纯 Javascript 实现按钮文本转换

标签 javascript transition

我有一个用纯javascript制作的淡入淡出功能,如下site显示。

function fadeIn(el) {
  var opacity = 0;

  el.style.opacity = 0;
  el.style.filter = '';

  var last = +new Date();
  var tick = function() {
    opacity += (new Date() - last) / 400;
    el.style.opacity = opacity;
    el.style.filter = 'alpha(opacity=' + (100 * opacity)|0 + ')';

    last = +new Date();

    if (opacity < 1) {
      (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
    }
  };

  tick();
}

我需要的是在按钮文本的更改中应用此转换,例如:

var firstChild = document.getElementById('my-button').firstChild;
firstChild.data = 'Another text';
fadeIn(firstChild);

当然,这不会按预期工作,但我想要一些东西来实现一种行为,即在更改文本时,仅对文本而不是整个按钮触发淡入淡出过渡。

有办法实现吗?

最佳答案

由于您使用的是firstChild,我假设您的文本位于按钮元素的子元素内,如果是这种情况,这将起作用。

单击底部的蓝色“运行代码片段”按钮即可查看其运行情况。

btn.addEventListener('click', function(){fadeOut(this.firstChild, newText)});

var newText = "World!";

function fadeOut(e, nT) {
 o=1; 
 t=setInterval(function () {
  if(o <= 0.1){
   clearInterval(t);
   e.style.filter = "alpha(opacity=0)";
    if(nT != undefined) {
     e.innerHTML = nT;
     fadeIn(e);
    }  
 }
  e.style.opacity = o;
  e.style.filter = 'alpha(opacity='+o*100+")";
  o-=o*0.05;
 }, 10);
}

function fadeIn(e) {
 o=0; 
 t=setInterval(function () {
  if(o >= 0.9){
   clearInterval(t);
   e.style.filter = "alpha(opacity=1)";
  }
   e.style.opacity = o;
   e.style.filter = 'alpha(opacity='+o*100+")";
   o+=0.05;
 }, 25);
}
#btn {
  color: Black;
  width: 100px;
  border: 1px solid black;
}
<button id="btn"><p>hello</p></button>

关于javascript - 使用纯 Javascript 实现按钮文本转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41326569/

相关文章:

javascript - 为什么我不能从 Reactjs 中的另一个文件导入常量?

javascript - CreateJS:Firefox 中的帧速率较差/奇怪

javascript - 有人能告诉我为什么 json2.js 不能解析这个字符串吗?

css - 仅使用 CSS 过渡来增加值(value)

firefox - CSS3 转换(连接到 JS 类更改)在 FF 中不起作用

javascript - 当我多次点击添加按钮时,它应该显示我在这里 div 与删除按钮多次

transform - 如何查找转换完成的时间

javascript - 有关过渡的问题

android - 使用Transition引起的问题

javascript - PHP/JavaScript 表单验证,无效电子邮件检查