Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阅读纯JavaScript的更多链接_Javascript_Html_Css_Fadein - Fatal编程技术网

阅读纯JavaScript的更多链接

阅读纯JavaScript的更多链接,javascript,html,css,fadein,Javascript,Html,Css,Fadein,我试图创建一个简单的阅读更多的例子。它由一个段落和一个按钮组成,其中段落的一半包含在跨度标记中,跨度标记最初设置为隐藏。当用户单击“阅读更多”按钮时,隐藏的范围显示出来。我已经有了工作代码,但只想使用纯Javascript实现类似JQuery的淡入效果。任何人都请帮忙 var span=document.getElementsByTagName('span')[0]; var hideshow=document.getElementById('hideshow'); span.style.di

我试图创建一个简单的阅读更多的例子。它由一个段落和一个按钮组成,其中段落的一半包含在跨度标记中,跨度标记最初设置为隐藏。当用户单击“阅读更多”按钮时,隐藏的范围显示出来。我已经有了工作代码,但只想使用纯Javascript实现类似JQuery的淡入效果。任何人都请帮忙

var span=document.getElementsByTagName('span')[0];
var hideshow=document.getElementById('hideshow');
span.style.display='none';
hideshow.onclick=函数(){
span.style.display='block';
};
Lorem ipsum door sit amet,Concertetur adipising elit。伊普萨·梅奥雷斯·多洛雷·杜西姆斯·莫莱斯蒂,aut。消费者权益、医疗保健、医疗保健以及类似于静脉输液、胎动的医疗保健

从这里开始阅读更多信息

span.style.opacity = 0;
您需要逐渐将不透明度转换为此处

span.style.opacity = 1;
您需要使用异步构造(
setTimeout
/
setInterval
/
requestAnimationFrame
)进行迭代,因为同步构造(
while
/
for
/
for in
/
forEach
)将阻止主线程,阻止浏览器使用更新的不透明度实际渲染元素

function fadeIn(element) {

  function transition() {
    if(element.style.opacity < 1) {
      requestAnimationFrame(transition);
      element.style.opacity = Number(element.style.opacity) + 0.05;
    }
  }

  transition();
}
确保元素在到达DOM时具有
out
类,然后当您准备淡入时,将其替换为
in
类,浏览器将为您处理动画。

一种方法是使用a转换元素的不透明度

在下面的示例中,单击按钮时,类
淡入
将添加到子
span
元素中

var-button=document.querySelector('.readmore');
按钮。addEventListener('click',函数(事件){
var span=event.target.previousElementSibling.querySelector('span');
span.classList.add('fade-in');
});
。显示更多span{
显示:内联块;
身高:0;
溢出:隐藏;
过渡:不透明度2s;
不透明度:0;
}
.显示更多span.淡入{
高度:自动;
不透明度:1;
}

Lorem ipsum Door sit amet,继续向精英致敬。伊普萨·梅奥雷斯·多洛雷·杜西姆斯·莫莱斯蒂,aut。消费者权益、医疗保健、医疗保健以及类似于静脉输液、胎动的医疗保健

阅读更多信息
var duration=2000;//微秒级
document.getElementById('hideshow')。onclick=()=>{
requestAnimationFrame((开始时间)=>{
变量anim=(时间)=>{
var p=(时间-开始时间)/持续时间;
(p<1)和&requestAnimationFrame(anim);
span.style.opacity=1-p;
}
动画(开始时间);
})
}  

您必须创建一个循环或间隔,并将可选性从0逐渐增加到1。纯js中没有现成的函数。Justy尝试了这个,但没有成功。任何想法span.style.opacity='0';hideshow.onclick=Show;函数Show(){for(var i=0;我感谢@Josh CrozierCode dump。没有帮助
.out {
  opacity: 0;
  transition-duration: 0.5s;
}

.in {
  opacity: 1;
  transition-duration: 0.5s;
}
var duration = 2000; // msecs

document.getElementById('hideshow').onclick = () => {
   requestAnimationFrame((start_time) => {
      var anim = (time) => {
         var p = (time - start_time) / duration;
         (p < 1) && requestAnimationFrame(anim);
         span.style.opacity = 1 - p;
      }
      anim(start_time);
   })
}